언어 자료구조 알고리즘/디딤돌 C++

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

언제나휴일 2016. 5. 1. 19:28
반응형

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


전체 보기

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

 

전체 보기에서는 이 에이치 나라에 있는 모든 학생 정보를 출력합니다. 그리고 모든 장소의 정보를 출력합니다. 각 장소에서는 해당 장소에 있는 모든 학생 정보를 출력합니다.

전체 보기 시퀀스 다이어그램

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


78. 전체보기.zip


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();

}

 

주거지와 다운타운에도 같은 방법으로 구현하세요. 코드는 생략할게요.

 

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

68. 최종 실습 - 개발 공정 및 시나리오

69. 최종 실습 - 요구 분석 및 정의

70. 최종 실습 - 설계1(클래스 다이어그램)

71. 최종 실습 - EHNARA 뼈대

72. 최종 실습 - 프로토 타이핑

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

74. 최종 실습 - 클래스 추가하기

75. 최종 실습 - 초기화 및 해제화

76. 최종 실습 - 학생 생성

77. 최종 실습 - 학생 이동

78. 최종 실습 - 전체 보기

79. 최종 실습 - 학생 복귀

80. 최종 실습 - 강의 시작

81. 최종 실습 - 도서관 가기

82. 최종 실습 - 소등

83. 최종 실습 - 거실로 가기

84. 최종 실습 - 파티

85. 최종 실습 - 노래방 가기

86. 최종 실습 - 다이어그램

87. 최종 실습 - 소스 코드

반응형