반응형

1000 라인 프로그램 9

[C++] 87. 최종 실습 - 소스 코드

[C++] 87. 최종 실습 - 소스 코드 68. 최종 실습 - 개발 공정 및 시나리오69. 최종 실습 - 요구 분석 및 정의70. 최종 실습 - 설계1(클래스 다이어그램)71. 최종 실습 - EHNARA 뼈대72. 최종 실습 - 프로토 타이핑73. 최종 실습 - 확장 가능한 순차 배열74. 최종 실습 - 클래스 추가하기75. 최종 실습 - 초기화 및 해제화76. 최종 실습 - 학생 생성77. 최종 실습 - 학생 이동78. 최종 실습 - 전체 보기79. 최종 실습 - 학생 복귀80. 최종 실습 - 강의 시작81. 최종 실습 - 도서관 가기82. 최종 실습 - 소등83. 최종 실습 - 거실로 가기84. 최종 실습 - 파티85. 최종 실습 - 노래방 가기86. 최종 실습 - 다이어그램 //ehglobal.h..

[C++] 83. 최종 실습 - 거실로 가기

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

[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 프로그램이 아니..

반응형