[디딤돌 C++] 80. 최종 실습 – 강의 시작

학생) 강의 시작에서는 모든 학생이 강의를 받습니다. 기반 클래스 Place에서는 파생 클래스에서 해당 장소의 학생 개체를 접근할 수 있는 멤버를 제공하세요.

이번에는 강의 시작 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다.

강의 시작 기능은 학교에 있는 모든 학생의 ListenLecture를 수행하게 합니다. 그런데 각 장소에서는 해당 장소에서 명령할 수 있는 기능만 보이게 한정하였기 때문에 IStudy 인터페이스 형식으로 학생 개체에 접근해야 합니다.

강의 시작 시퀀스 다이어그램

모든 장소에는 기반 클래스인 Place에 학생을 보관하는 컬렉션이 있습니다. 따라서 파생 형식인 각 장소에서 학생 개체에 접근하기 위해 컬렉션에 보관한 학생 수와 특정 인덱스의 학생 개체를 구하는 메서드를 제공하세요.

학생 수를 구하는 GetCount 메서드에서는 유닛 컬렉션 base의 GetSize 메서드 호출 결과를 By Pass 합니다.

특정 인덱스의 학생 개체를 반환하는 메서드에서는 유닛 컬렉션 base의 인덱스 연산 결과를 By Pass 합니다. 각 장소에서는 약속한 기능만 수행할 수 있게 해야 하므로 Man * 형식으로 반환합니다.

그리고 IStudy 인터페이스에 ListenLecture 메서드를 순수 가상 메서드로 약속하세요.

학교의 StartLecture 기능을 구현합시다.

학생 클래스에 ListenLecture를 가상 메서드로 변경하고 누가 강의를 받는 것인지를 출력합시다.

Student 클래스의 ListenLecture 메서드에서는 누가 강의받는 것인지 출력합시다.

그리고 학사 학생, 마법 학생, 운동 학생의 ListenLecture에서는 Student 클래스의 ListenLecture를 호출하는 부분을 추가하세요.

이제 컴파일 및 빌드하신 후에 테스트를 해 보세요.