Convenience Timetable Design Team 4
2 Contents 1. Introduction 2. Decomposition description 3. Dependency description 4. Inter face description 5. Detailed design description
3 1. Introduction Purpose Use case 및 SR 로얻은 Requirment 를적용해실제구현에앞서시스템의구조를설계 Software 재사용및확장을위해 OOP 기법및 Design pattern 을이용
4 2. Decomposition description Use Case 빨간색 : class 후보 1. 사용자가프로그램을실행한다 2. 사용자는저장된시간표를불러오거나새로이작성 ( 초기화 ) 한다. 2-1 사용자가시간표를새로이작성한다. 2-1-1 사용자는등록하고싶은시간의칸을선택한다.(right click) 2-1-1-1 사용자가선택한칸에비어있다. 2-1-1-1-1 ' 강의등록 ' 을선택한다. 2-1-1-1-1-1 강의명을메뉴에서선택한다.( 팝업창 ) 2-1-1-1-1-2 입력을다했으면 확인 버튼을누른다. 2-1-1-1-2-3 시간표에강의가추가된다. 2-1-1-1-2 ' 일정등록 ' 을선택한다. 2-1-1-1-2-1 활동명, 장소, 시간을입력한다.( 팝업창 ) 2-1-1-1-2-2 입력을다했으면 확인 버튼을누른다. 2-1-1-1-2-3 시간표에일정이추가된다. 2-1-2 사용자가선택한칸에일정이있다. 2-1-2-1 ' 변경 ' 을선택한다. 2-1-2-2 ' 삭제 ' 를선택한다. 2-1-2-3 강의정보 를선택한다. 2-1-2-3-1 선택한강의에대한강의정보창이뜬다. ( 인터넷팝업창 ) 2-2 사용자가저장된시간표를불러온다. 2-2-1 위의내용과동일한작업반복 3. 사용자가시간표를저장한다. 4. 사용자가 수강신청 버튼을클릭한다. 4-1 건국대학교수강신청팝업창 ( 인터넷팝업창 ) 이뜬다. 5. 사용자가 전체강의검색 버튼을클릭한다. 5-1 건국대학교종합강의시간표 ( 인터넷팝업창 ) 가뜬다. 6. 사용자가시간표를종료한다.
5 2. Decomposition description Class Class :: 강의명, 강의실, 교수명, 시간정보를가지는클래스 AddClass AddClass :: 강의등록팝업창 Private Private :: 개인일정 AddPrivate AddPrivaate :: 개인일정등록팝업창
6 2. Decomposition description TimeTable TimeTable :: 시간표 Time Time :: ( 시간 ) 칸
7 3. Dependency description AddPrivate, AddClass, TimeTableView Class Private AddClass AddPrivate TimeTableView
8 3. Dependency description AddPrivate, AddClass, TimeTableView Time TimeTable TimeTableView
9 3. Dependency description AddPrivate, AddClass, TimeTableView Class Private AddClass AddPrivate Time TimeTable TimeTableView
10 4. Interface description Class, ClassMgr TimeTableView AddClass ClassMgr Class : user 1 : initiateclass() 3 : OnAddClass() 4 : OnInitDialog() 2 : c: Class* 5 : findclass() 6 : getclass() 8 : OnBnClickedAddCancel() 7 : c: Class 9 : OnPrint() 10 : OnBnClickedAddOk() 11 : OnPrint()
11 4. Interface description Private, PrivateMgr TimeTableView AddPrivate PrivateMgr Private : user 1 : initprivate() 3 : OnAddPrivate() 6 : OnBnClickedPrivateOk() 4 : setprivate() 5 : addprivatelist() 2 : privatelist: list 7 : privateplace: CString 8 : privatetime: int 9 : OnPrint() 10 : OnBnClickedPrivateCancel() 11 : OnPrint()
12 4. Interface description Edit Private TimeTableView EditPrivate PrivateMgr Private : user 1 : OnEditPrivate() 2 : findprivate() 3 : getprivate() 5 : OnBnClickedPrivateOk() 6 : changeprivate() 4 : p: Private 9 : OnPrint() 10 : OnBnClickedPrivateCancel() 7 : privateplace: CString 8 : privatetime: int 11 : OnPrint()
13 4. Interface description delclass, deleprivate TimeTableView TimeTable TimeTableView TimeTable : user : user 1 : OnDelClass() 1 : OnDelPrivate() 2 : delclass() 2 : delprivate() 3 : OnPrint() 3 : OnPrint() (1) delclass (2) delprivate
14 4. Interface description show 수강신청, 종합강의시간표 TimeTableView TimeTableView : user 1 : OnBnClickedButtonApply() : user 1 : OnBnClickedButtonFind() (1) 수강신청 (2) 종합강의시간표
15 4. Interface description Save TimeTableView DBMgr : user 1 : save() 2 : savetimetable()
16 4. Interface description Load TimeTableView TimeTable DBMgr Time : user 1 : OnLoad() 2 : loadtimetable() 3 : getdb() 4 : DataBase 5 : Time() 7 : OnPrint() 6 : t: Time*
17 5.Detailed design description Use Case 파란색 : method 후보 1. 사용자가프로그램을실행한다 2. 사용자는저장된시간표를불러오거나새로이작성 ( 초기화 ) 한다. 2-1 사용자가시간표를새로이작성한다. 2-1-1 사용자는등록하고싶은시간의칸을선택한다.(right click) 2-1-1-1 사용자가선택한칸에비어있다. 2-1-1-1-1 ' 강의등록 ' 을선택한다. 2-1-1-1-1-1 강의명, 교수명, 강의실, 시간을메뉴에서선택한다.( 팝업창 ) 2-1-1-1-1-2 입력을다했으면 확인 버튼을누른다. 2-1-1-1-2-3 시간표에강의가추가된다. 2-1-1-1-2 ' 일정등록 ' 을선택한다. 2-1-1-1-2-1 활동명, 장소, 시간을입력한다.( 팝업창 ) 2-1-1-1-2-2 입력을다했으면 확인 버튼을누른다. 2-1-1-1-2-3 시간표에일정이추가된다. 2-1-2 사용자가선택한칸에일정이있다. 2-1-2-1 ' 변경 ' 을선택한다. 2-1-2-2 ' 삭제 ' 를선택한다. 2-1-2-3 강의정보 를선택한다. 2-1-2-3-1 선택한강의에대한강의정보창이뜬다.( 팝업창 ) 2-2 사용자가저장된시간표를불러온다. 2-2-1 위의내용과동일한작업반복 3. 사용자가시간표를저장한다. 4. 사용자가 수강신청 버튼을클릭한다. 4-1 건국대학교수강신청팝업창 ( 인터넷팝업창 ) 이뜬다. 5. 사용자가 전체강의검색 버튼을클릭한다. 5-1 건국대학교종합강의시간표 ( 인터넷팝업창 ) 가뜬다. 6. 사용자가시간표를종료한다.
18 5.Detailed design description 행동별카테고리정리 TimeTable 실행한다. 저장한다. 불러온다. 강의등록을선택한다. 일정등록을선택한다. 변경을선택한다. 삭제를선택한다. 강의정보를선택한다. 화면에출력한다. 칸을선택한다. AddClass 강의명을메뉴에서선택한다. 확인버튼을누른다. 취소버튼을누른다. AddPrivate 일정이름, 시간을입력한다. 확인버튼을누른다. 취소버튼을누른다. Class db 로부터 data 를불러와변수에대입한다. Private db 로부터 data 를불러와변수에대입한다. Time 일정이추가된다.
19 5.Detailed design description Class 별 attribute, operation Class +classname: CString +classhour: int +classminute: int +classteacher: CString +classroom: CString Class +Class(name: CString, teacher: CString, room: CString, hour: int, minute: int)
20 5.Detailed design description Class 별 attribute, operation ClassMgr, AddClass ClassMgr +classarray: Class[*] +initclass(classarray: Class*) +getclass(classnum: int): c: Class +getclass(classname: CString): c: Class AddClass +classname: CString +classteacher: CString +classroom: CString +classhour: int +classminute: int +classlist: CComboBox +classnumlist: CComboBox +OnBnClickedAddCancel() +OnBnClickedAddOk() +findclass(classnum: int) +findclass(classname: CString)
21 5.Detailed design description Class 별 attribute, operation Private, PrivateMgr +privatehour: int +privatemin: int +privatename: CString +privateplace: CString Private +initprivate(hour: int, min: int, name: CString, place: CString) +p: Private[*] PrivateMgr +initprivatelist() +addprivatelist(pv: Private) +findprivate(pv: Private) +getprivate(pv: Private): p: Private +delprivate(pv: Private)
22 5.Detailed design description Class 별 attribute, operation PrivateDialog, AddPrivate, EditPrivate PrivateDialog +privatelist: PrivateMgr +privatehour: CComboBox +privatemin: CComboBox +privatename: CString +privateplace: CString +privatehour: int +privatemin: int +initprivatelist() +findprivatelist(pv: Private) +getprivatelist(pv: Private): p: Private +OnBnClickedPrivateOk() +OnBnClickedPrivateCancel() AddPrivate +setprivate(pv: Private) EditPrivate +changeprivate(pv: Private)
23 5.Detailed design description Class 별 attribute, operation Time, TimeTable +classname: CString +classtime: int +classteacher: int +classroom: int Time +Time() +Time(t: const Time&) +Time(name: CString, teacher: CString, room: CString, time: int) +Time(name: CString, room: CString, time: int) +operator=(t: const Time&) +time: Time +back: Back +dbmgr: DBMgr TimeTable +initclass() +drawback(dc: CDC*) +drawclass(dc: CDC*) +addclass(t: Time&, x: int, y: int) +delclass(x: int, y: int) +addprivate(t: Time&, x: int, y: int) +delprivate(x: int, y: int) +loadtimetable()
24 5.Detailed design description Class 별 attribute, operation Back, DBMgr Back +flag: int +s_x: int +s_y: int +rect: CRect +CString: str DBMgr +savetimetable() +getdb() +Back()
25 5.Detailed design description +classname: CString +classhour: int +classminute: int +classteacher: CString +classroom: CString Class +Class(name: CString, teacher: CString, room: CString, hour: int, minute: int) AddClass +classname: CString +classteacher: CString +classroom: CString +classhour: int +classminute: int +classlist: CComboBox +classnumlist: CComboBox +OnBnClickedAddCancel() +OnBnClickedAddOk() +findclass(classnum: int) +findclass(classname: CString) TimeTableView +day: int +hour: int +t: Timetable +inputclass: AddClass +inputprivate: AddPrivate +result: int +OnAddPrivate() +OnDelPrivate() +OnEditPrivate() +OnAddClass() +OnDelClass() +OnPrint() +OnFileNew() +inittimetable() +OnSave() +OnLoad() AddPrivate +setprivate(pv: Private) DBMgr +savetimetable() +getdb() +time: Time +back: Back +dbmgr: DBMgr ClassMgr +classarray: Class[*] +initclass(classarray: Class*) +getclass(classnum: int): c: Class +getclass(classname: CString): c: Class EditPrivate +changeprivate(pv: Private) TimeTable +initclass() +drawback(dc: CDC*) +drawclass(dc: CDC*) +addclass(t: Time&, x: int, y: int) +delclass(x: int, y: int) +addprivate(t: Time&, x: int, y: int) +delprivate(x: int, y: int) +loadtimetable() PrivateDialog +privatelist: PrivateMgr +privatehour: CComboBox +privatemin: CComboBox +privatename: CString +privateplace: CString +privatehour: int +privatemin: int +initprivatelist() +findprivatelist(pv: Private) +getprivatelist(pv: Private): p: Private +OnBnClickedPrivateOk() +OnBnClickedPrivateCancel() Back +flag: int +s_x: int +s_y: int +rect: CRect +CString: str +Back() +classname: CString +classtime: int +classteacher: int +classroom: int +p: Private[*] +privatehour: int +privatemin: int +privatename: CString +privateplace: CString Time PrivateMgr +initprivatelist() +addprivatelist(pv: Private) +findprivate(pv: Private) +getprivate(pv: Private): p: Private +delprivate(pv: Private) Private +initprivate(hour: int, min: int, name: CString, place: CString) +Time() +Time(t: const Time&) +Time(name: CString, teacher: CString, room: CString, time: int) +Time(name: CString, room: CString, time: int) +operator=(t: const Time&)
26 Conclusion IEEE SDD 를따라 class diagram 을 I. decomposition description II. dependency description III. interface description IV. detail description OOD 기법을따라설계
27 Reference Head first OOAD 브랫맥리프란외 (O REILY) UML 객체지향분석 설계 조완수 ( 홍릉과학출판사 ) Software Eingineering (8 th ) Ian Sommerville (Addison-Wesley)
28 End 감사합니다.