로그인

검색

OBG
조회 수 13032 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄 첨부

streetPyghter.jpg

 

 

클릭하면 커진다.

 

클래스 다이어그램을 그린 것이다. 자세한 설명은 http://www.obg.co.kr/doku/doku.php?id=programming:design_pattern:uml 을 참고한다. (3강에서도 클래스 다이어그램에 대해 간단히 다루겠다. 궁금한 사람은 3강 앞부분을 먼저 보고 와도 좋다.)

 

맨 처음 위 다이어그램을 보면 정신이 없을 것이다. 프로그래밍을 한지 얼마 안된 사람이 위 다이어그램을 한번에 이해할거라 전혀 기대하지 않는다. 프로그래밍을 좀 해본 사람도 한눈에 볼 수 없다. 나 또한 위 다이어그램을 그리는데 3시간 넘게 걸렸다.

 

클래스가 많기 때문에 여기에다 설명을 일일이 다 적을 순 없다. 위 이미지를 다운 받아 클래스, 메쏘드의 이름을 통해 그 역할을 유추해보기 바란다. 소스 코드와도 비교해 본다.

 

흰색으로 표시한 클래스는 Singleton 패턴을 적용한 클래스이다. 이 클래스들은 오브젝트를 오직 하나만 생성할 수 있다. 몇몇 클래스는 object 클래스를 상속받는데 사실 파이썬의 모든 클래스는 object 클래스를 암묵적으로 상속받는다. 그래서 이 부분은 표시하지 않았다.

 

다이어그램에서 한눈에 띄는 것은 Player 클래스의 메쏘드 개수이다. 굳이 따로 얘기하지 않아도 제일 중요한 클래스임을 유추할 수 있을 것이다.

 

이전 농장 게임과의 차이점은 pygame.sprite.Sprite 클래스를 상속받는 클래스가 없다는 것이다. 이 게임에선 오브젝트가 플레이어 2명 + Fireball이기 때문에 굳이 쓰지 않은 것으로 생각한다.

 

위 다이어그램에서 알 수 있는 또다른 사실은 오른쪽 menu.py 부분에서 YesNo 클래스는 어디에도 연결된 부분이 없다. 그리고 왼쪽 game.py 부분에서 Vector2P 클래스 또한 Vector 클래스를 상속받아 정의되었을 뿐 다른 어디에도 연결된 부분이 없다. 이 두 클래스는 개발자가 추후에 쓸 목적으로 미리 클래스를 만들었겠지만 현재는 전혀 필요없는 클래스임을 알 수 있다. (Point 클래스는 너무 많은 곳에서 쓰여 일부로 표시하지 않은 것이니 유의하자)

 

UML을 어느 정도 알고 StarUML의 사용법을 안다면 첨부 파일의 uml 파일을 다운받아 열어보기 바란다. 그리고 클래스 다이어그램을 하나 더 추가하고 우측의 Model Explorer 클릭 후 design Model 아래의 클래스 중 관심 있는 몇개를 클래스 다이어그램으로 드래그해보자. 예를 들면 Player 클래스와 Game 클래스를 드래그해보자. 두 클래스 사이의 관계가 자동으로 보여질 것이다. 이런 식으로 위 다이어그램 중 보고 싶은 부분만 골라 새로운 클래스 다이어그램을 쉽게 만들 수 있다.

 

덧1 : 이 클래스 다이어그램은 필자가 게임을 좀 더 쉽게 분석하고자 만든 것이므로 그냥 넘어가도 상관 없다.

덧2 : 생략된 부분도 있는데 이는 중요하지 않다 판단하여 생략한 것이다. 그러나 생략하지 말아야할 것을 생략한 부분이 있을지도 모른다.

덧3 : 틀린 부분이 있을 수도 있다.

 

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Tool/etc Programming 게시판 관련 2 MoA 2014.11.01 111424
201 API/MFC DLL 생성 시 주의 MoA 2013.08.22 15224
200 API/MFC CFile을 이용한 저장/불러오기 MoA 2013.08.27 14084
199 Site 검색엔진 개발자 그룹 MoA 2013.08.30 12720
198 API/MFC 로그 클래스 및 업데이터 MoA 2013.08.30 18613
197 API/MFC MFC에서 생성,사용되는 파일 확장자 MoA 2013.08.30 12996
196 API/MFC UpdateDialogControls MoA 2013.09.05 23389
195 Site 졸업작품 및 각종 과제물 프로그램은 어떻게 만들어야 하나? (윈도우즈 응용프로그램) MoA 2013.09.10 13263
194 Tool/etc [S/W 공학] 월-인원(man-month), LOC MoA 2013.09.23 22106
193 Site 영상 처리 관련 블로그 MoA 2013.09.29 12762
192 Library AS3 Code Library MoA 2013.10.11 20733
191 Tool/etc Flash CS5 and Version Control MoA 2013.10.11 22013
190 API/MFC 프린터 출력하기 MoA 2013.10.16 17354
189 API/MFC 태스크 대화상자 (Task Dialog) MoA 2013.10.22 13277
188 API/MFC 슬라이더 컨트롤에 툴팁 삽입 (동적 툴팁) MoA 2013.10.28 13557
187 Site CSS, 자바스크립트 강좌 MoA 2013.11.05 13368
186 Python 고양이 움직이기 1 file MoA 2013.11.08 13265
185 Python 고양이 밖으로 못나가게 하기 file MoA 2013.11.10 13376
184 Python [첫게임 만들기] 1. 게임 소개 및 실습 준비 1 file MoA 2013.11.20 12978
183 Python [첫게임 만들기] 2. 배경 그리기, Bunny 움직이게 하기 file MoA 2013.11.21 11989
182 Python [첫게임 만들기] 3. Bunny를 회전시키자 file MoA 2013.11.21 13744
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 18 Next
/ 18