<--SyntaxHighlighter--> SyntaxHighlighter.all();

1. 티켓판매 애플리케이션 구현하기

2. 무엇이 문제인가

- 모든 모듈은 제대로 실행돼야 한다(o)

- 변경이 용이해야 한다(x) => 과한 의존성 => 결합도가 높다.

- 이해하기 쉬워야 한다(x)

3. 설계 개선하기

- 자율성을 높이자

   · 모든 객체가 자율적인 존재가 되도록 설계를 변경(TicketSeller, Audience 등)

   · 캡슐화 : 객체 내부의 세부적인 사항을 감추는 것 => 객체 사이의 결합도를 낮춤 => 설계 변경이 쉬워짐.

- 절차지향과 객체지향

   · 절차지향:  프로세스와 데이터를 별도의 모듈에 위치시키는 방식

   · 객체지향: 프로세스와 데이터를 동일한 모듈 내부에 위치시키는 방식. 어떤 책임을 할당할 것이냐에 초점을 맞춤

- 책임의 이동

   · 기존: 책임이 Theater에 집중됨

   · 변경: 책임이 ticketSeller, ticketOffice, audienct 에게 적절히 분배됨.

- 의인화

   · 모든 객체들이 자율적으로 행동하는 설계.

4. 객체지향 설계

- 좋은 설계: 오늘의 요구하는 기능을 온전히 수행하면서, 내일의 변경을 매끄럽게 수용할 수 있는 설계.

- 자율성 <- 결합도 낮춤 <- 캡슐화

         ㄴ<- 책임 분배 <- 의인화(자율적으로 행동)

+ Recent posts