[디딤돌 C++] 72. 최종 실습 – 프로토 타이핑

학생) 이해관계자의 요구 사항을 파악하기 위해 프로토 타이핑을 작성합니다.

이번에는 앞에서 작성한 EhNara 뼈대에 요구 분석 및 정의에서 작성한 유즈케이스 다이어그램을 보며 프로토 타이핑을 작성합시다.

GUI(Graphic User Interface) 프로그램에서는 이해관계자의 요구 사항을 제대로 파악한 것인지 확인하기 위해 프로토 타이핑을 작성하곤 합니다. 이해관계자의 요구 사항은 고정적인 것이 아니라 시시 때때로 변할 수 있는데 자주 변하는 부분이 대부분 User Interface에 관한 것이 많습니다. 즉 내부적인 것 보다 외형적인 부분에서 요구 사항이 자주 바뀔 수 있습니다. 이러한 것을 개발 앞 단계에 배치하여 이해관계자의 요구 사항을 반영하기 위해 프로토 타이핑을 합니다.

EhNara 프로그램은 GUI 프로그램이 아니라서 이해 관계자의 요구 사항을 파악하기 위한 목적은 아닙니다. 여기에서 프로토 타이핑을 작성하는 것은 기본적인 사용자와 상호 작용에 따라 기능 선택을 할 수 있게 흐름을 잡는데 목적이 있습니다.

EhNara 프로그램의 요구 분석 및 정의 단계에서는 각 장소별 유즈케이스 다이어그램까지 작성하였습니다. 따라서 프로젝트에 Place(장소), School(학교), Downtown(유흥가), Village(주거지) 클래스를 추가하세요. 물론 클래스 다이어그램을 작성하며 약속한 것처럼 일반화 관계에 맞게 추가해야겠죠.

프로젝트에 Place(장소), School(학교), Downtown(유흥가), Village(주거지) 클래스를 추가하세요. 물론 클래스 다이어그램을 작성하며 약속한 것처럼 일반화 관계에 맞게 추가해야겠죠.

EhNara 클래스 내부에 세 개의 Place 개체를 보관할 수 있는 멤버와 이들의 인덱스로 사용할 열거형을 정의하세요.

개체를 생성하는 구문을 작성하면서 해제하는 구문도 같이 작성하는 습관을 갖으면 좋아요.

이제 사용자와 상호작용하는 Run 메서드를 구현할 차례입니다. 그런데 콘솔 응용 프로그램에서 메뉴를 선택할 때는 기능 키를 자주 사용합니다.

여기에서는 사용자와 상호 작용에 관해 필요한 기능을 정적 클래스 ehglobal에 작성하려고 합니다. 먼저 ehglobal 클래스를 추가하세요. ehglobal 클래스는 개체를 만들 필요가 없으니 생성자와 소멸자의 가시성은 private으로 접근 지정하세요.

ehglobal 클래스에는 콘솔 화면을 지우는 clrscr, 기능 키를 입력받는 getkey, 아무 키나 누를 때까지 대기하는 waitkey 메서드를 제공할 것입니다.

그리고 기능 키에 사용할 상수를 keydata 열거형으로 정의합시다.

먼저 콘솔 화면을 지우는 것은 system 호출에 cls 명령어를 전달합니다. cls 명령은 콘솔 화면을 지우는 명령입니다. 그리고 system 호출은 입력 인자로 전달받은 명령을 수행하고 끝날 때까지 대기합니다.

기능 키를 입력받는 메서드를 구현합시다.

아무 키나 누를 때까지 대기하는 함수는 단순히 getkey를 호출합니다.

이제 EhNara에서 Run 메서드를 구현합시다. Run 메서드에서는 메뉴를 선택하면 선택한 기능을 수행하는 것을 반복하면 되겠죠.

반복 선택한 메뉴가 종료 키가 아니면

    선택한 키에 따라

        F1 일 때 학생 생성

        F2 일 때 초점 이동

        F3 일 때 학생 이동

        F4 일 때 전체 보기

메뉴 출력 및 선택에서는 먼저 메뉴를 출력한 후에 ehglobal 클래스의 정적 메서드 getkey를 호출하여 입력한 키를 반환합니다.

각 기능에서는 어떠한 기능을 선택했는지 확인할 수 있게 출력문을 작성하세요.

이 중에서 초점 이동은 여기에서 구현합시다. 초점 이동에 따라 각 장소의 기능을 수행하는 부분도 유즈케이스 다이어그램에 정의하였으니 여기에서 작성합시다.

장소 선택하는 메서드를 구현합시다.

장소의 Run 메서드도 EhNara의 Run 메서드와 비슷합니다.

메뉴를 출력하고 선택하는 기능에서는 메뉴를 출력하는 부분을 별도의 메서드로 만들어서 호출하세요. 장소에 따라 기능이 다르기 때문에 ViewMenu 메서드는 가상 메서드로 정의하세요.

장소의 ViewMenu 부분은 공통적인 부분만 구현합니다.

프로토 타이핑이므로 ComeBackStu 메서드는 어떤 기능인지 출력만 하세요.

각 장소에서는 ViewMenu와 DoItByKey를 재정의하세요.

각 기능에서는 무엇을 선택했는지 파악할 수 있게 출력문을 작성하세요.

학교와 주거지도 같은 방법으로 작성합니다.

 

다음은 현재까지 작성한 코드입니다.

여러분께서 현재까지 제대로 동작하는지 컴파일하고 테스트해 보세요.


[C++ 무료 동영상 강의] 72. 최종실습 – 프로토타이핑

학습에 도움이 되시면 ebook을 구입(판매가 5000원, ebook)하여 소장하시면 감사하겠습니다.