언어 자료구조 알고리즘/Escort C++

[C++] OOP 프로그래밍 실습 - 설계(시퀀스 다이어그램)

언제나휴일 2016. 4. 15. 15:48
반응형

10.4.2 시퀀스 다이어그램 작성

 

 클래스 다이어그램이 작성되었으면 이제 각 유즈케이스 별로 어떠한 시퀀스로 수행해야 할 것인지에 대해 고민하고 이를 시퀀스 다이어그램으로 작성해 보기로 합시다. 그리고 유즈케이스 다이어그램에는 나타내지 않았지만 EHLand 초기화 과정과 종료화 과정에 대해서도 작성을 하기로 하겠습니다.

 

 먼저, 초기화 과정에 대한 시퀀스를 생각해 봅시다. 시나리오를 보면 이 에이치 나라의 초기화에서는 유닛 공장이 만들어지고 주거지와 공연장이 만들어지는 것으로 되어 있습니다. 다른 별다른 사항이 없으니 바로 표현해 보도록 합시다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.10]

 

 이번에는 유닛 생성을 하는 MakeUnit 유즈케이스에 대한 시퀀스를 생각해 봅시다. 시나리오를 보시면 유닛 생성 메뉴에서는 최종 사용자가 생성할 유닛 종류와 이름을 입력하고 이를 UnitFactory에 전달하여 유닛 공장을 통해 생성하고 생성한 유닛은 EHLand에게 반환하여 전달하여야 할 것입니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.11]

 

 초점 이동에 관한 MoveFocuse 유즈케이스에 대해 살펴봅시다. 시나리오를 보면 초점 이동 메뉴에서는 공연장이나 주거지 중에 한 장소를 선택하면 해당 장소로 초점이 바뀌는 것으로 되어 있습니다. 각 장소로 초점이 이동되었을 때 유즈케이스는 별도로 되어 있으니 해당 유즈케이스를 다루면서 얘기를 하기로 하겠습니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.12]

 

 이번에는 유닛 이동에 해당하는 MoveUnit 유즈케이스에 대한 시퀀스를 생각해 봅시다. 시나리오를 보면 먼저 이동할 유닛을 선택한 후에 장소를 선택하여 유닛을 이동시키는 것으로 되어 있습니다. 유닛을 선택하기 위해서는 EHLand에 있는 유닛 정보를 먼저 보여주고 유닛을 선택하라고 요청을 해야 할 것입니다. 이때 유닛을 선택을 무엇을 기준으로 할 것인지를 결정을 해야 하는데 여기서는 유닛의 일련번호로 선택하는 것으로 하겠습니다. 이를 토대로 시퀀스 다이어그램을 작성하면 [그림 10.13]과 같이 표현할 수 있을 것입니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.13]

 

 전체 상황을 보는 ViewState 유즈케이스를 작성해 봅시다. 여기에서는 시나리오처럼 각 EHLand에 있는 유닛의 정보와 각 장소의 정보를 보여주면 됩니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.14] 

 

 이번에는 초점이 각 장소로 왔을 때의 각 유즈케이스 별로 시퀀스 다이어그램을 작성해 봅시다.

 

 먼저, 초점이 공연장으로 왔을 때의 공연 관람하기에 해당하는 ViewConcert에 대해 살펴봅시다. 여기에서는 전체 유닛이 공연을 감상하는데 해당 유닛이 예술가인 경우에는 논평하는 것으로 시나리오에 나와 있습니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.15]

 

 공연장의 무대로 올라가기에 해당하는 GoOnState 유즈케이스에 대한 시퀀스는 최종 사용자에게 하나의 유닛을 선택하게 하고 선택된 유닛은 자기소개를 하라고 되어 있습니다. 유닛을 선택하기 위해 Hall에 있는 모든 유닛의 정보를 보여주어야 선택이 쉬울 것입니다. 여기에서는 유닛을 선택하기 위해 유닛 이름을 입력하는 것으로 하겠습니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.16]

  

 공연장이나 주거지에서 공통적인 유닛 복귀하기에 해당하는 ComeBackUnit 유즈케이스에 살펴봅시다. 유닛을 선택하는 것은 GoOnState에 대한 시퀀스처럼 하면 될 것입니다. 문제는 각 장소가 EHLand를 모르고 있다는 것입니다. 이를 위해서는 EHLand에서 각 장소에 유닛을 복귀할 수 있도록 Callback을 구현해야 합니다. 유닛을 복귀할 시점과 복귀할 유닛은 장소에서 선택됩니다. 이 같은 경우에 함수 개체를 사용할 수 있습니다. 장소를 구현하는 곳에서는 함수 개체의 추상화된 클래스를 ComeBackUnitEvent라 정하는 작업을 수행하기로 합시다. 그리고 이를 기반으로 하는 구체화 된 클래스를 ComeBackHelper라 정하고 EHLand에서 정의하기로 합시다. 이처럼 개발 공정에서 이전 공정에서 작업한 것에 대해 수정이 생길 수 있으며 이러면 반드시 문서를 수정하시기 바랍니다. 이는 여러 명이 개발을 하면 소통의 부재 때문에 생기는 많은 문제를 해결하는 데 도움이 됩니다. 이러한 이유로 많은 엔지니어가 "계약에 의한 개발"을 하라고 하는 것입니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.17]

 

 그리고 EHLand에서는 각 장소를 생성할 때 ComeBackHelper 개체를 전달하는 것으로 초기화 시퀀스를 수정하기로 합시다. 이를 알아야 각 장소에서는 유닛을 복귀시키기 위해 이를 이용하여 복귀시킬 수 있을 것입니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.18]

 

 이제 ComeBackUnit 유즈케이스에 대한 시퀀스 다이어그램을 보여 드리겠습니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.19]

 

 실제 구현에 대한 부분은 다음 단계에서 다룰 것입니다.

 

 이제는 주거지에서 초점이 왔을 때에 해당하는 유즈케이스들에 대한 시퀀스 다이어그램들을 작성해 보기로 합시다. 소등하기에 해당하는 TurnOff 유즈케이스에서는 전체 유닛을 잠을 자게 하고 회사원일 경우에만 자기 전에 알람을 설정해 주면 됩니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.20] 

 

 휴식하기에 해당하는 Relax 유즈케이스에서는 유닛을 선택한 후에 해당 유닛을 휴식을 취하게 하고 해당 유닛이 마술사인 경우에는 휴식 후에 달나라 여행을 하게 하면 됩니다.


OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.21]

 

 마지막으로 EHLand 종료화에서 생성한 개체들을 소멸하는 부분에 대해 살펴봅시다. 개체 소멸에 관한 책임을 신뢰성 있게 하면서 간략하게 하는 좋은 방법은 개체를 생성한 곳에서 소멸에 관한 책임을 지게 하는 것입니다. 이를 시퀀스 다이어그램으로 나타내면 [그림 10.22]와 같이 나올 수 있을 것입니다.



OOP 프로그래밍 실습 시퀀스 다이어그램

[그림 10.22]

 

이상으로 설계 단계는 마무리하기로 하겠습니다.


10 OOP Part1

10 OOP Part2

10 OOP Part3

(모든 동영상 강의는 무료입니다.)

반응형