객체 설계 - meeyoungchoi-dev-rookie/object GitHub Wiki

01 객체 , 설계

클래스 관계도

티켓애플리케이션_클래스_구조도

클래스 흐름

  • 이벤트 당첨자는 초대장을 갖고 있다
  • 공연을 관람하기 위해 티켓을 갖고 있어야 한다
  • 이벤트 당첨자는 초대장을 티켓으로 교환할 수 있다
  • 이벤트에 당첨되지 않은 사람은 티켓을 살 현금을 갖고 있다
  • 관람객이 소지품을 가방에 담아온다
    • 가방에는 초대장 , 현금, 티켓 이 들어있다
  • 관람객이 소극장에 입장 하기전 매표소에 들른다
    • 매표소에서 초대장을 티켓으로 교환하거나
    • 티켓을 구매해야 한다
    • 매표소는 관람객에게 판매할 티켓과 티켓의 판매 금액을 보관해야 한다
  • 판매원이 매표소에서 초대장이 있는 경우 티켓을 관람객에게 준다
  • 판매원은 관람객이 초대장이 없다면 티켓을 판매한다

클래스간 의존성이 높을 때 문제점

  • 두 객체 사이의 결합도가 높으면 함께 변경될 확률도 높아지기 때문에 변경하기 어려워진다
  • 하나의 메서드에서 너무 많은 세부사항을 다루기 때문에 코드를 작성하는 사람뿐 아니라 코드를 읽고 이해해야 하는 사람 모두에게 부담을 준다
  • 가정이 깨지는 순간 코드가 흔들리게 된다
  • 객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만들어야 한다
  • 티켓 애플리케이션 무엇이 문제인가