반응형

분류 전체보기 2946

[C++] 81. 최종 실습 - 도서관 가기

[C++] 81. 최종 실습 - 도서관 가기 이번에는 도서관 가기 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 도서관 가기에서는 학생을 선택하여 학생의 Study를 수행하게 합니다. 각 장소에서는 해당 장소에서 명령할 수 있는 기능만 보이게 한정하였기 때문에 IStudy 인터페이스 형식으로 학생 개체에 접근해야 합니다. 그리고 선택한 학생이 학사 학생일 때는 Reading 기능을 수행하게 합시다. 물론 학생을 선택하기 위해서는 사용자에게 주민번호를 입력받아 컬렉션 내에 유닛과 비교하는 부분이 있어야 합니다. 이 부분은 이미 기반 클래스 Place에 구현하였기 때문에 이를 활용합니다.IStudy 인터페이스에 Study 메서드를 순수 가상 메서드로 약속하세요.interfac..

[C++] 80. 최종 실습 - 강의 시작

[C++] 80. 최종 실습 - 강의 시작 이번에는 강의 시작 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 강의 시작 기능은 학교에 있는 모든 학생의 ListenLecture를 수행하게 합니다. 그런데 각 장소에서는 해당 장소에서 명령할 수 있는 기능만 보이게 한정하였기 때문에 IStudy 인터페이스 형식으로 학생 개체에 접근해야 합니다.모든 장소에는 기반 클래스인 Place에 학생을 보관하는 컬렉션이 있습니다. 따라서 파생 형식인 각 장소에서 학생 개체에 접근하기 위해 컬렉션에 보관한 학생 수와 특정 인덱스의 학생 개체를 구하는 메서드를 제공하세요. class Place { ...중략... protected: ...중략... size_t GetCount()const;/..

[C++] 79. 최종 실습 - 학생 복귀

[C++] 79. 최종 실습 - 학생 복귀 이번에는 학생 복귀 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 학생 복귀 보기에서는 장소에 있는 학생을 선택하여 IComeBack 개체를 이용하여 복귀하게 합니다. 이를 위해 장소에 있는 학생 중에 사용자가 입력한 PN과 일치하는 학생을 찾는 부분이 필요합니다.먼저 IComeBack 인터페이스에 ComeBack 메서드를 약속하세요. interface IComeBack{ virtual void ComeBack(Man *man)=0;}; 그리고 IComeBack 인터페이스에서 파생한 EhNara에 이를 재정의해야겠죠. 먼저 클래스에 메서드를 선언하세요.class EhNara:public IComeBack{ ...중략...publi..

[C++] 78. 최종 실습 - 전체 보기

[C++] 78. 최종 실습 - 전체 보기 이번에는 전체 보기 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 전체 보기에서는 이 에이치 나라에 있는 모든 학생 정보를 출력합니다. 그리고 모든 장소의 정보를 출력합니다. 각 장소에서는 해당 장소에 있는 모든 학생 정보를 출력합니다.EhNara의 멤버 ViewAll 메서드를 구현합시다. void EhNara::ViewAll() //전체 보기 { 전체 학생 정보 보기와 전체 장소 정보 보기 메서드를 만들어서 이를 호출하게 합시다. ViewStudents();//전체 학생 정보 보기 ViewPlaces();//전체 장소 정보 보기 } EHNara 클래스에 멤버 메서드 ViewStudents와 ViewPlaces를 추가하세요. Eh..

[C++] 77. 최종 실습 - 학생 이동

[C++] 77. 최종 실습 - 학생 이동 이번에는 학생 이동 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 시나리오를 보면 먼저 이동할 장소를 선택하고 이동할 학생을 선택합니다. 그리고 해당 장소로 학생을 이동합니다.만약 이동할 장소가 학교일 때는 처음 온 학생인지 확인하여 학번을 부여합니다. 처음 온 학생이라면 학번이 0일 것입니다. 이럴 때는 학번을 부여합니다.EhNara의 멤버 MoveStudent를 구현합시다. void EhNara::MoveStudent() //학생 이동{먼저 이동할 장소를 선택합니다. Place *place = SelectPlace();//이동할 장소 선택잘못 선택하였을 때 메시지를 출력하고 메서드를 끝냅니다. if(place==0)//잘못 선..

[C++] 76. 최종 실습 - 학생 생성

[C++] 76. 최종 실습 - 학생 생성 이번에는 학생 생성 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다. 시나리오를 보면 먼저 최종 사용자로부터 학생 유형과 이름을 입력받습니다. 그리고 학생 공장에게 학생을 만들어 줄 것을 요청하면 학생 공장에서 학생을 생성하여 반환합니다.이제 이 부분을 구현해 봅시다. 먼저 EhNara 클래스에 학생을 보관할 수 있는 컬렉션을 멤버 필드로 추가하세요.class EhNara:public IComeBack{ ...중략... SeqArray base; ...중략...}; 이제 EhNara 클래스의 멤버 MakeStudent 메서드를 구현합시다. void EhNara::MakeStudent() //학생 생성{최종 사용자가 생성할 학생 유형을..

[C++] 75. 최종 실습 - 초기화 및 해제화

[C++] 75. 최종 실습 - 초기화 및 해제화 유즈케이스 별로 수행 흐름을 시퀀스로 정의하고 이를 코드로 구현하는 작업을 할 차례입니다. 여기에서는 유즈케이스에는 표현하지 않았지만 EhNara의 초기화 부분과 해제화 부분을 시퀀스 다이어그램으로 작성하고 코드로 옮기는 부분을 먼저 하기로 할게요. 먼저 초기화의 시퀀스 다이어그램을 작성합시다. 시나리오를 보면 EhNara를 생성한 후에 초기화에서는 학생 공장과 학교, 주거지, 다운타운을 생성합니다. 초기화에서 수행할 일은 이것으로 충분합니다. 그런데 학교나 주거지, 다운타운은 학생을 EhNara로 복귀하기 위해 IComeBack 개체가 필요합니다. 따라서 장소의 생성자에는 입력 인자로 IComeBack 개체를 전달해 주어야겠죠.이제 이 부분을 구현해 봅..

[C++] 74. 최종 실습 - 클래스 추가하기

[C++] 74. 최종 실습 - 클래스 추가하기 이제 클래스를 추가하고 클래스 사이의 관계에 따라 헤더 파일을 포함합시다. 여기에서는 헤더 파일에 포함문을 작성하는 것 까지만 할 거예요.클래스 다이어그램을 보면서 클래스를 추가하세요. 현재 EhNara, Place, Downtown, School, Village 클래스를 추가한 상태죠. 앞에서 작성한 확장 가능한 순차 배열인 SeqArray 템플릿 클래스를 추가하세요. 그리고 상속과 다형성 최종 실습에서 작성한 프로그램에서 Student, MStudent, SStudent, PStudent 클래스를 이용할게요. 소스 파일과 헤더 파일을 복사하여 프로젝트에 추가하세요. 이 외에 Man, IStudy, IRelax, IPlay를 추가하세요. 그리고 이를 기반..

[C++] 73. 최종 실습 - 확장 가능한 순차 배열

[C++] 73. 최종 실습 - 확장 가능한 순차 배열 EhNara 프로그램에서는 EhNara 클래스, 학생 공장에서 학생 개체를 보관합니다. 그리고 장소에서는 사람 개체를 보관합니다. 여기에서는 순차적으로 보관할 수 있는 확장 가능한 배열을 템플릿으로 정의합시다. 확장 가능한 배열은 저장소가 꽉 차면 내부에서 저장소의 크기를 늘려 주어 사용하는 개발자가 저장소의 크기에 신경을 쓰지 않고 사용할 수 있는 동적 배열입니다. 여기에서는 순차 보관하는 기능과, 특정 인덱스의 요소를 제거, 특정 알고리즘이 참인 인덱스를 구하는 등의 기능을 제공하는 확장 가능한 배열을 만듭시다. template class SeqArray { 먼저 저장소와 저장소의 크기, 보관 개수를 기억하고 있어야 합니다. data *base;..

[C++] 72. 최종 실습 - 프로토 타이핑

[C++] 72. 최종 실습 - 프로토 타이핑 이번에는 앞에서 작성한 EhNara 뼈대에 요구 분석 및 정의에서 작성한 유즈케이스 다이어그램을 보며 프로토 타이핑을 작성합시다. GUI(Graphic User Interface) 프로그램에서는 이해관계자의 요구 사항을 제대로 파악한 것인지 확인하기 위해 프로토 타이핑을 작성하곤 합니다. 이해관계자의 요구 사항은 고정적인 것이 아니라 시시 때때로 변할 수 있는데 자주 변하는 부분이 대부분 User Interface에 관한 것이 많습니다. 즉 내부적인 것 보다 외형적인 부분에서 요구 사항이 자주 바뀔 수 있습니다. 이러한 것을 개발 앞 단계에 배치하여 이해관계자의 요구 사항을 반영하기 위해 프로토 타이핑을 합니다. EhNara 프로그램은 GUI 프로그램이 아니..

반응형