본문 바로가기

이해를 위한 메모 공간

13-2.템플릿 메소드를 응용한 간단 실습

간단한 게임플레이어를 기준으로하여 플레이어의 레벨에 따른 행동프로그램을 구현하는 실습입니다.

생성될 클래스들과 클래스간의 관계 다이어그램으로 그려보자

 

플레이어 클래스의 구성을 이룰 플레이어 레벨 클래스를 추상클래스로 생성

각 레벨에서 수행할 공통 기능은 PlayerLevel 추상클래스에서 선언합니다.

각 레벨마다 run(), jump(), turn(), showLevelMessage() 메소드는 조금씩 다르게 구현되기 때문에 추상 메소드로 선언합니다. go() 메소드는 시나리오대로 수행되어야하므로 코드내용을 완전히 구현했습니다.

 

주체가 될 플레이어 클래스의 생성

Player는 한 번에 하나의 레벨 상태이므로 level 변수에 레벨에 해당하는 인스턴스를 대입합니다.

레벨을 변경할 수 있는 upgradeLevel()메소드를 만들어줍니다.

 

플레이어의 초기 레벨이될 초심자 BeginnerLevel

초심자 레벨에서는 천천히 달릴 수만 있습니다. 점프나 턴은 할 수 없도록 합니다.

플레이어의 다음 레벨이될 중급자 AdvencedLevel

중급자 레벨에서는 빠르게 달릴 수 있고 높이 점프할 수 있습니다. 

플레이어의 마지막 레벨로 지정할 superLevel 입니다

고급자 레벨에서는 다할 수 있습니다.

 

프로그램을 실행 하는 메인

Player 클래스의 디폴트 생성자는 초보자 레벨로 시작하도록 구현되어 있습니다. Player 클래스를 생성하고 인스턴스를 Player 참조 변수에 대입합니다. play() 메소드의 매개변수에 1을 입력하면 초보자 레벨이기 떄문에 천천히 달린 후 점프할 줄 모른다는 문구와 턴할 줄 모른다는 문구를 출력합니다. 8행에서 중급자 레벨 클래스를 새로 생성하고 aLevel 참조 변수를 upgradeLevel() 메소드에 대입해서 레벨을 업그레이드합니다. 이제 Player는 중급자 레벨입니다. 그 다음은 같은 수순입니다..

'이해를 위한 메모 공간' 카테고리의 다른 글

14.final 예약어  (0) 2020.03.31
13-1.템플릿 메소드  (0) 2020.03.31
13.추상 클래스  (0) 2020.03.31
12.다형성 활용 및 다운 캐스팅  (0) 2020.03.31
11.상속  (0) 2020.03.30