[C++] 78. 최종 실습 - 전체 보기
이번에는 전체 보기 기능에 관해 시퀀스 다이어그램을 작성하고 난 후에 구체적인 코드를 구현합시다.
전체 보기에서는 이 에이치 나라에 있는 모든 학생 정보를 출력합니다. 그리고 모든 장소의 정보를 출력합니다. 각 장소에서는 해당 장소에 있는 모든 학생 정보를 출력합니다.
EhNara의 멤버 ViewAll 메서드를 구현합시다.
void EhNara::ViewAll() //전체 보기
{
전체 학생 정보 보기와 전체 장소 정보 보기 메서드를 만들어서 이를 호출하게 합시다.
ViewStudents();//전체 학생 정보 보기
ViewPlaces();//전체 장소 정보 보기
}
EHNara 클래스에 멤버 메서드 ViewStudents와 ViewPlaces를 추가하세요.
EhNara의 멤버 ViewStudents 메서드를 구현합시다.
void EhNara::ViewStudents()//전체 학생 정보 보기
{
먼저 학생 컬렉션에 보관한 학생 개체수를 얻어옵니다.
size_t size = base.GetSize();//보관 개수를 얻어온다.
순차적으로 모든 학생 개체의 View 메서드를 호출합니다.
for(size_t i = 0; i<size; ++i)//i를 0~size-1까지 증가
{
base[i]->View();//학생 정보 출력
}
}
EhNara의 ViewPlaces 메서드를 구현합시다.
void EhNara::ViewPlaces()//전체 장소 정보 보기
{
순차적으로 모든 장소의 View 메서드를 호출하세요.
for(int i = 0; i<PI_MAX; i++)
{
places[i]->View();//장소 정보 출력
}
}
Place 클래스에 View 메서드를 선언하세요. 각 장소에 따라 어떤 장소인지를 출력하기 위해 가상 메서드로 정의해야겠죠.
class Place
{
...중략...
public:
...중략...
virtual void View();//장소 정보 출력
...중략...
};
Place에 View 메서드를 구현합시다.
void Place::View()//장소 정보 출력
{
장소에 관계없이 해당 장소에 있는 모든 학생 정보를 출력해 주어야겠죠. 이 부분은 EhNara의 ViewStudents 메서드와 같습니다.
size_t size = base.GetSize();//보관 개수를 얻어온다.
for(size_t i = 0; i<size; ++i)//i를 0~size-1까지 증가
{
base[i]->View();//학생 정보 출력
}
}
이제 각 장소의 View 메서드를 재정의합시다. 물론 클래스에 선언문을 추가해야 합니다.
class School :
public Place
{
...중략...
public:
...중략...
virtual void View();//장소 정보 출력
...중략...
};
소스 코드에 구체적으로 구현하세요.
void School::View()//장소 정보 출력
{
cout<<"학교 "<<endl;
Place::View();
}
주거지와 다운타운에도 같은 방법으로 구현하세요. 코드는 생략할게요.
이제 컴파일 및 빌드하고 테스트 해 보세요.
'언어 자료구조 알고리즘 > 디딤돌 C++' 카테고리의 다른 글
[C++] 83. 최종 실습 - 거실로 가기 (0) | 2016.05.01 |
---|---|
[C++] 82. 최종 실습 - 소등 (0) | 2016.05.01 |
[C++] 81. 최종 실습 - 도서관 가기 (0) | 2016.05.01 |
[C++] 80. 최종 실습 - 강의 시작 (0) | 2016.05.01 |
[C++] 79. 최종 실습 - 학생 복귀 (0) | 2016.05.01 |
[C++] 77. 최종 실습 - 학생 이동 (0) | 2016.05.01 |
[C++] 76. 최종 실습 - 학생 생성 (0) | 2016.05.01 |
[C++] 75. 최종 실습 - 초기화 및 해제화 (0) | 2016.05.01 |
[C++] 74. 최종 실습 - 클래스 추가하기 (0) | 2016.05.01 |
[C++] 73. 최종 실습 - 확장 가능한 순차 배열 (0) | 2016.05.01 |