[디딤돌 C++] 77. 최종 실습 – 학생 이동

학생) 학생 이동에서는 원래 장소의 컬렉션에서는 제거하고 이동할 컬렉션에는 추가합니다.

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

시나리오를 보면 먼저 이동할 장소를 선택하고 이동할 학생을 선택합니다. 그리고 해당 장소로 학생을 이동합니다.

학생 이동 시퀀스 다이어그램

만약 이동할 장소가 학교일 때는 처음 온 학생인지 확인하여 학번을 부여합니다. 처음 온 학생이라면 학번이 0일 것입니다. 이럴 때는 학번을 부여합니다.

학교 클래스에서의 학생 이동 시퀀스 다이어그램

EhNara의 멤버 MoveStudent를 구현합시다.

EhNara 클래스에 이동할 학생을 선택하는 SelectStudent 메서드와 컬렉션에서 학생 제거하는 EraseStudent 메서드를 추가합니다.

EhNara의 멤버 SelectStudent를 구현합시다. 참고로 현재 실습에서 시퀀스 다이어그램에서는 서로 다른 개체 사이에서의 상호 작용에 관한 것만 표시하고 있습니다.

EhNara의 멤버 EraseStudent 메서드를 구현합시다.

이제 Place 클래스에 유닛 이동 메서드인 InStudent를 선언하세요. 학교에서는 학번을 부여하는 역할을 추가로 해야 하므로 가상 메서드로 정의하세요. 그리고 유닛을 보관할 컬렉션을 멤버 필드로 선언하세요.

Place 클래스의 멤버 InStudent 메서드에서는 컬렉션에 유닛을 순차 보관하세요.

School 클래스에서 InStudent 메서드를 재정의해야겠죠. 그리고 학번을 부여하기 위해 가장 최근에 부여한 학번을 기억하는 멤버 필드를 선언하세요.

School 클래스 생성자에서 가장 최근에 부여한 학번을 0으로 설정하세요.

School 클래스의 InStudent 메서드를 구현합시다.

Man 클래스에 학번을 멤버 필드로 추가하세요. 그리고 학번 접근자와 설장자를 추가하세요.

Man 클래스 생성자에서 학번을 0으로 설정하세요.

Man 클래스의 학번 접근자와 설정자를 구현하세요.

이제 컴파일 및 빌드하고 테스트 해 보세요.