반응형

C# 프로젝트 13

[C#] 7.4 프로젝트 구현 - 초점이 기숙사 (잠자기, TV 시청)

7.4 프로젝트 구현 초점이 기숙사 (잠자기, TV 시청) [그림] TV 시청 시퀀스 다이어그램 [그림] 잠자기 시퀀스 다이어그램 이번에는 초점이 기숙사에 왔을 때 수행하는 잠자기와 TV 시청에 대한 부분을 구현하기로 합시다. 앞에서 초점이 강의실과 도서관에 왔을 때 수행하는 부분과 구현하는 방법이 크게 다르지 않겠지요. class Dormitory:Place { ... 중략 ... internal override void DoIt(int cmd) { switch (cmd) { case GameRule.CMD_DO_Sleep: TurnOff(); break; case GameRule.CMD_DO_TV: StartTV(); break; default: return; } } private void Start..

[C#] 7.4 프로젝트 구현 - 초점이 도서관 (책 읽기, 세미나)

7.4 프로젝트 구현 초점이 도서관 (책 읽기, 세미나) [그림] 세미나 시퀀스 다이어그램 [그림] 책 읽기 시퀀스 다이어그램 이번에는 초점이 도서관에 왔을 때 수행하는 세미나와 책 읽기에 대한 부분을 구현하기로 합시다. 앞에서 초점이 강의실에 왔을 때 수행하는 부분과 구현하는 방법이 크게 다르지 않겠지요. class Library:Place { ... 중략 ... internal override void DoIt(int cmd) { switch (cmd) { case GameRule.CMD_LI_Seminar: StartSeminar(); break; default: return; } } private void StartSeminar() { int cnt = GetStuCount(); Student s..

[C#] 7.4 프로젝트 구현 - 초점이 강의실 (판서 강의, 발표 수업)

7.4 프로젝트 구현 초점이 강의실 (판서 강의, 발표 수업) [그림] 판서 강의 시퀀스 다이어그램 이번에는 초점이 강의실에 왔을 때에 수행하는 판서 강의와 발표 수업에 대해 구현해 보기로 합시다. 먼저, 초점이동이 되었을 때 수행하는 MoveFocusAt 메서드를 구현합시다. 여기에서는 입력 인자로 전달된 장소가 어디인지에 따라 각각의 장소에 초점이 왔을 때 수행하는 메서드를 호출하면 되겠네요. class CampusLife { ... 중략 ... private void FocusAtLectureRoom(LectureRoom lectureRoom) { ConsoleKey key; while ((key = SelectLRMenu()) != GameRule.ExitKey) { switch (key) { c..

[C#] 7.4 프로젝트 구현 - 초점 이동

7.4 프로젝트 구현 초점 이동 [그림] 초점 이동 시퀀스 다이어그램 이번에는 초점 이동 기능에 해당하는 MoveFocus 메서드를 구현해 보기로 합시다. 마찬가지로 초점 이동에 관한 시퀀스 다이어그램을 보면서 작성을 하시면 되겠죠. 초점 이동에서는 먼저, 어디로 초점을 이동할 것인지를 선택한 후에 해당 장소에서 수행할 수 있는 메뉴에 의해 진행이 된 후에 다시 초점이 캠퍼스 생활로 올 때 사용자가 선택한 학생들을 캠퍼스로 복귀시키면 됩니다. 이에 다음과 같이 MoveFocus 메서드를 구현해 보았습니다. class CampusLife { ... 중략 ... private void MoveFocusAt(Place place) { //throw new NotImplementedException(); } }..

[C#] 프로젝트 구현 - 학생 이동

7.4 프로젝트 구현 학생 이동 [그림] 학생 이동 시퀀스 다이어그램 이제 학생 이동에 대한 MoveStudent 메서드를 구현해 봅시다. 시퀀스 다이어그램을 보면 학생 이동 기능에서는 먼저 캠퍼스에 있는 모든 학생 정보를 보여주고 사용자가 이동할 학생 번호를 입력한 후에 장소를 선택하면 해당 장소로 보내기로 되어 있습니다. 그런데 현재 약속된 시퀀스 다이어그램에서는 선택된 학생이 캠퍼스에도 여전히 존재하게 되어 있네요. 이에 선택된 장소에 학생을 보내기 전에 캠퍼스에세 나오게 하는 메서드(OutStudent)를 Campus 클래스에 추가하기로 할게요. 여러분들은 시퀀스 다이어그램에도 수정하시기 바랍니다. class CampusLife { ... 중략 ... private void MoveStudent(..

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 잠자기

7.3 설계한 내용 프로젝트에 옮기기 초점 이동 [그림] 잠자기 시퀀스 다이어그램 이번에는 기숙사에 초점이 온 상태에서 잠자기 메뉴를 선택했을 때에 대하여 시퀀스를 보며 필요한 멤버를 추가해 봅시다. 캠퍼스 생활에서 기숙사 개체에 잠자기 메뉴를 선택하였다는 것은 DoIt 메서드에 인자로 잠자기를 선택하였음을 전달하게 약속되어 있으니 Place에 추상 메서드로 캡슐화되어 있는 것을 기숙사에서 재정의하면 될 것입니다. 그리고 학생에게 잠을 자게 해야 하므로 Student 클래스에 Sleep 메서드를 추가하고 수동적인 학생에게는 잠꼬대하게 해야 하므로 PStudent 클래스에 TalkingInSleep 메서드를 추가합시다. class Student { ... 중략 ... internal void Sleep()..

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 책 읽기

7.3 설계한 내용 프로젝트에 옮기기 책 읽기 [그림] 책 읽기 시퀀스 다이어그램 이번에는 초점이 도서관에 온 상태에서 책 읽기 메뉴를 선택했을 때 약속한 멤버를 추가해 봅시다. 해당 시퀀스를 보면 특정 학생을 선택하기 위한 부분과 선택된 학생에게 책을 읽게 하는 부분이 있는데 선택하는 부분에 필요한 멤버는 이미 앞에서 추가하였습니다. 그리고 선택된 학생에게 특정 행위를 수행하게 하는 DoIt 메서드는 장소들의 기반 클래스인 Place에서 추상 메서드로 추가된 상태이므로 이에 대하여 Library 클래스에서 재정의하면 되겠죠. 그리고 Student 클래스에 책을 읽게 하는 Reading 메서드를 추가하세요.. class Student { ... 중략 ... internal void Reading() { ..

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 세미나

7.3 설계한 내용 프로젝트에 옮기기 세미나 [그림] 세미나 시퀀스 다이어그램 이번에는 초점이 도서관에 온 상태에서 세미나 메뉴를 선택했을 때에 대해 살펴봅시다. 해당 시퀀스에서는 캠퍼스 생활에서 도서관 개체에 해당 행위를 수행하라는 DoIt 메서드를 호출하면 도서관에서 학생들에게 세미나를 듣게 하기로 시퀀스를 약속하였습니다. 이미 각 장소의 기반 클래스인 Place에는 행위를 인자로 전달받는 DoIt 메서드를 추상 메서드로 약속하였으니 Library에서는 이를 재정의하면 될 것입니다. 그리고 Student 클래스에는 세미나를 듣는 ListenSeminar 메서드를 추가하세요. class Student { ... 중략 ... internal void ListenSeminar() { throw new No..

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 발표 수업

7.3 설계한 내용 프로젝트에 옮기기 발표 수업 [그림] 발표 수업 시퀀스 다이어그램 이번에는 발표 수업에 관한 시퀀스 다이어그램을 보면 필요한 멤버를 추가해 봅시다. 발표 수업에서 학생들 정보를 출력하는 부분은 이미 추가하였기 때문에 별다른 작업을 할 필요가 없습니다. 발표할 학생을 선택하였을 때 해당 학생에게 발표를 수행하게 하려면 캠퍼스 생활에서 강의실 개체에 해당 행위와 선택한 학생 정보를 인자로 전달하는 메서드 DoIt을 추가해야겠지요. 이 메서드 또한 다른 시퀀스 다이어그램들을 보면 각 장소의 기반 클래스에서 추상 메서드로 제공하고 각 장소에서 특정 학생에게 수행할 작업을 약속하여 이를 수행하는 부분을 재정의하세요. class LectureRoom:Place { ... 중략 ... intern..

[C#] 7.3 설계한 내용 프로젝트에 옮기기 - 판서 강의

7.3 설계한 내용 프로젝트에 옮기기 판서 강의 [그림] 판서 강의 시퀀스 다이어그램 이번에는 초점이 강의실로 이동되어 판서 강의하는 부분을 시퀀스 다이어그램을 보며 필요한 멤버를 추가해 봅시다. 캠퍼스 생활에서는 강의실에 판서 강의하라는 것을 DoIt 메서드에 해당 행위를 인자로 전달하게 되어 있네요. 이 부분은 기능 확장을 쉽게 하기 위해 각 장소에 따라 수행할 수 있는 일의 종류를 정의하고 입력 인자로 해당 일의 종류를 전달받아 수행하게 한 것입니다. 따라서 다른 시퀀스 다이어그램까지 살펴보면 DoIt 메서드는 각 장소의 기반 클래스인 Place에 추상 메서드로 약속하고 각 장소에서는 재정의하면 된다는 것을 생각할 수 있을 것입니다. class LectureRoom:Place { internal L..

반응형