본문 바로가기

개발하기

요리를 예시로 쉽게 설명하는 구조와 설계

구조(Structure) = 재료

케이크 만들기의 구조:

- 밀가루 2컵
- 달걀 3개
- 우유 1컵
- 설탕 1컵
- 버터 200g
- 오븐 기구
- 믹서기

 

설계(Design) = 조리법/방법

케이크 만드는 설계:

1. 반죽 순서
2. 온도 조절 방법
3. 굽는 시간
4. 섞는 방식

 

 

# 구조(Structure) - 재료들
class 재료들:
    def __init__(self):
        self.밀가루 = Ingredient("밀가루", 200)
        self.설탕 = Ingredient("설탕", 100)
        self.달걀 = Ingredient("달걀", 3)
        self.우유 = Ingredient("우유", 100)

# 설계(Design) - 조리법
class 케이크만들기:
    def __init__(self):
        self.재료 = 재료들()
        self.오븐 = Oven()
        self.믹서기 = Mixer()
    
    def 반죽하기(self):
        # 설계: 어떤 순서로 섞을 것인가
        self.믹서기.섞기(self.재료.달걀, self.재료.설탕)
        self.믹서기.섞기(self.재료.밀가루)
        self.믹서기.섞기(self.재료.우유)
    
    def 굽기(self):
        # 설계: 어떤 온도로 얼마나 구울 것인가
        self.오븐.예열(180)
        self.오븐.굽기(40)  # 40분

# 실제 게임 시스템에 적용
class RPGGame:
    # 구조: 게임에 필요한 재료들
    def __init__(self):
        self.캐릭터 = Character()
        self.몬스터들 = []
        self.아이템들 = []
        self.맵 = GameMap()
    
    # 설계: 게임 진행 방법
    def 게임진행(self):
        while True:
            self.입력처리()
            self.캐릭터이동()
            self.전투처리()
            self.화면그리기()

# 웹 애플리케이션 예시
class WebApp:
    # 구조: 웹앱 구성요소들
    def __init__(self):
        self.데이터베이스 = Database()
        self.사용자관리 = UserManager()
        self.화면 = WebInterface()
    
    # 설계: 실행 방법
    def 실행(self):
        self.사용자확인()
        self.데이터가져오기()
        self.화면표시()

 

아키텍처 구조와 설계 차이점 글 읽어보기

실생활 비유로 보는 차이점

  1. 자동차의 경우:
  • 구조(재료): 엔진, 바퀴, 핸들, 브레이크
  • 설계(방법): 동력 전달 방식, 제동 시스템 작동 방법
  1. 스마트폰의 경우:
  • 구조(재료): 화면, 배터리, 프로세서, 카메라
  • 설계(방법): UI 작동 방식, 배터리 절약 기능, 카메라 처리 방법
  1. 게임의 경우:
  • 구조(재료): 캐릭터, 맵, 아이템, 점수시스템
  • 설계(방법): 게임 진행방식, 충돌처리방법, 점수계산방식

중요한 포인트

  1. 구조(재료)가 좋아도 설계(방법)가 나쁘면:
  • 좋은 재료로 만든 맛없는 요리
  • 고급 부품으로 만든 비효율적인 기계
  1. 설계(방법)가 좋아도 구조(재료)가 나쁘면:
  • 뛰어난 요리사가 나쁜 재료로 요리
  • 잘 짜인 프로그램이 낮은 성능의 하드웨어에서 실행
  1. 성공적인 시스템을 위해서는:
  • 좋은 재료(구조)
  • 좋은 조리법(설계)
  • 둘 사이의 조화로운 균형