책 스터디를 위해 작성하는 프로젝트
- 연극이나 음악회를 공연할 수 있는 작은 소극장
- 홍보를 위해 이벤트 기획
- 초대장을 받은 관람객은 티켓으로 교환한 후에 입장
- 초대장을 받지 못한 관람객은 티켓을 구매 후 입장
- 따라서, 관람객을 입장시키기 전에 이벤트 당첨 여부 확인, 당첨자가 아닌 경우 티켓을 판매 후 입장시켜야 함
- 로버트 마틴의 클린 소프트웨어에 의하면 모든 모듈은 제대로 실행돼야 하고, 변경이 용이해야 하며, 이해하기 쉬워야 한다.
- 코드를 이해하기 위해 여러 가지 세부적인 내용들을 한꺼번에 기억하고 있어야 한다는 점은 코드를 이하해기 어렵게 만든다.
- Theater class의 enter method가 수행하는 일
- 코드를 이해하기 어려운 이유
- Theater가 관람객의 가방과 판매원의 매표소에 직접 접근하기 때문
- 관람객과 판매원이 자신의 일을 스스로 처리한다는 직관을 벗어남
- 해결 방법 (a)
- 해결 방법 (b)
- 절차적 프로그래밍 (그림 1.2)
- 객체 지향 프로그래밍
- 해결 방법 (c)
- 실생활과의 괴리
- Audience와 TicketSeller는 실생활에서도 자신의 일을 자신이 처리
- Theater, Bag, TickeOffice는 그렇지 않음 -> 객체 지향에서는 능동적이고 자율적인 존재로 변화: (의인화)