메뉴 건너뛰기

OBG

Programming

OBG
조회 수 971 추천 수 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 1714
27 Reversing 워게임 사이트 정리 MoA 2014.01.27 1280
26 API/MFC unsigned char <-> 유니코드(unicode) 및, string 변환 매크로 - USES_CONVERSION MoA 2013.07.28 1332
25 Python [게임 만들기] 강좌 진행 예정 2 MoA 2014.04.26 1463
24 API/MFC MFC 클래스 멤버함수 설명서 MoA 2013.07.28 1514
23 Library [OpenCV] 얼굴 인식 예제 file MoA 2012.10.14 1536
22 Python [농장게임 만들기] 1. Nubcake Farms 게임 소개 4 file OBG 2014.04.26 1590
21 API/MFC CreateThread와 AfxBeginThread의 차이 너울 2011.09.26 1591
20 API/MFC 다른 스레드에서 메인다이얼로그 포인터 받아오기 AfxGetMainWnd() 1 MoA 2013.07.28 1616
19 Site 졸업작품 및 각종 과제물 프로그램은 어떻게 만들어야 하나? (윈도우즈 응용프로그램) MoA 2013.09.10 1644
18 API/MFC 프로세스 - 생성과 종료 그리고 이것 저것 너울 2011.10.12 1834
17 Python 파이썬에서 C모듈 사용하기 MoA 2014.02.10 1919
16 Python [농장게임 만들기] 3. 배경을 그리자 6 file MoA 2014.04.28 2068
15 C/C++ C 언어의 문자형 변수 char - 8비트 정수형 변수 MoA 2013.07.28 2240
14 API/MFC 다국어를 위한 StringTable, LoadString 1 MoA 2013.12.22 2410
13 API/MFC Thread와 SendMessage를 통해 DeadLock을 만드는 방법 MoA 2013.07.28 2625
12 Python [농장게임 만들기] 10. 상점을 추가하자 file MoA 2014.05.01 2671
11 API/MFC DLL 생성 시 주의 MoA 2013.08.22 2684
10 Python [액션게임 만들기] 3. 클래스 다이어그램 기초 file OBG 2014.05.07 2775
9 Deeplearning 직접 보고 추천하는 머신러닝 & 딥러닝 & 수학 총정리(2022) OBG 2022.07.24 3329
8 API/MFC 프린터 출력하기 MoA 2013.10.16 3437
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 ... 15 Next
/ 15
위로