메뉴 건너뛰기

OBG

Programming

OBG
조회 수 1012 추천 수 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 1979
247 Deeplearning 파이썬 머신러닝 무료 강의 (7시간) OBG 2022.07.06 124
246 Deeplearning Play Super Mario Bros with a Double Deep Q-Network OBG 2022.09.15 129
245 Web defer, async 스크립트 OBG 2023.01.10 129
244 Site 모든 개발자를위한 10 가지 특별한 GitHub 리포지토리 OBG 2023.12.28 130
243 Tool/etc AWS 망 분리하기 OBG 2022.09.06 131
242 Python 2048 Game in Python OBG 2022.09.22 131
241 Python FastAPI 톺아보기 - 부제: python 백엔드 봄은 온다 OBG 2023.01.25 133
240 서버 Debugging Node.js Memory Leaks: How to Detect, Solve or Avoid Them in Applications OBG 2023.07.04 133
239 Deeplearning 강화학습 학습 관련 정리 OBG 2022.08.10 134
238 서버 Design a Basic Search Engine (Google or Bing) | System Design Interview Prep OBG 2023.05.27 134
237 Deeplearning 추천 시스템 OBG 2023.03.30 136
236 Deeplearning Keras를 활용한 주식 가격 예측 OBG 2022.09.02 139
235 Tool/etc How to stop programmers to copy the code from GitHub when they leave the company? OBG 2024.01.02 139
234 Tool/etc 쿠버네티스 클러스터 OBG 2022.11.11 140
233 Tool/etc AWS VPC 피어링 OBG 2022.11.03 141
232 Deeplearning Reinforcement Learning for Dynamic Pricing Suggestion OBG 2023.04.01 142
231 Web Creating A Fixed-Length Queue In JavaScript Using Arrays OBG 2022.09.14 143
230 Tool/etc "Node.js를 떠나며" - express를 만든 TJ의 글 OBG 2022.06.23 145
229 서버 Golang Tutorial for Node.js Developers, Part I.: Getting started OBG 2022.06.16 145
228 서버 SSH-Tunneling을 통한 MySQL 서버 연결 OBG 2023.04.21 153
Board Pagination Prev 1 ... 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15
위로