본문 바로가기

오브젝트10

오브젝트 04 - 설계 품질과 트레이드오프 오브젝트 04 - 설계 품질과 트레이드오프 가끔 좋은 설계보다는 나쁜 설계를 통해 통찰을 얻기도 한다. 특히 좋은 설계와 나쁜 설계를 비교할 때 효과가 좋다. 이번 장에서는 영화 예매 시스템을 책임이 아닌 상태를 표현하는 데이터 중심의 설계를 살펴보고 객체 지향적으로 설계한 구조와 어떤 차이점이 있는지 살펴보자. 4.1 데이터 중심의 영화 예매 시스템 데이터 중심 설계에서 객체는 자신이 포함하고 있는 데이터를 조작하는데 필요한 오퍼레이션을 정의한다. 데이터 중심 설계에서는 객체를 독립된 데이터 덩어리로 바라본다. 상태가 객체 분할의 중심이 되면 구현에 관한 세부사항이 객체의 인터페이스에 스며들게 되어 캡슐화가 무너진다. 결과적으로 상태 변경은 인터페이스의 변경을 초래하여 해당 인터페이스에 의존하는 모든 .. 2024. 2. 19.
오브젝트 03 - 역할, 책임, 협력 오브젝트 03 - 역할, 책임, 협력 3.1 협력 객체지향의 핵심은 역할, 책임, 협력이다. 이를 고민하지 않은 채 구현에 초점을 맞추는 것은 변경하기 어렵고 유연하지 못한 코드를 낳는다. 3.1.1 영화 예매 시스템 돌아보기 객체지향 원칙을 따르는 애플리케이션의 제어 흐름은 하나에 의해 통제되지 않고 다양한 객체들 사이에 균형있게 분배된다. 다양한 객체들은 기능을 구현하기 위해 메시지를 주고 받으며 상호작용하는데 이를 협력이라고 한다. 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 한다. 객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다. 3.1.2 협력 두 객체 사이의 협력은 하나의 객체가 다른 하나에게 도음울 요청할 때 시작된다. 메시지 전송은 객체 사이의 협력을.. 2024. 2. 13.
오브젝트 02 - 객체지향 프로그래밍 오브젝트 02 - 객체지향 프로그래밍 2.1 영화 예매 시스템 - 영화, 상영, 할인 정책, 할인 조건이 있는 영화 예매 시스템이 존재한다. 2.2 객체지향 프로그래밍을 향해 2.2.1 협력, 객체, 클래스 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 이를 위해서는 아래의 두 가지에 집중해야 한다. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라. 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것이다. 따라서 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해.. 2024. 2. 6.
오브젝트 01 - 객체, 설계 오브젝트 01 - 객체, 설계 1.1 티켓 판매 애플리케이션 구현하기 조건 초대장을 가진 사람은 티켓으로 교환 후 입장 가능 일반 입장객은 티켓을 구매 후 입장 가능 간단하고 예상대로 동작하지만 몇가지 문제점이 있는 프로그래밍 public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller){ this .ticketSeller = ticketSeller; } public void enter(Audience audience) { if (audience.getBag().hasinvitation()) { Ticket ticket = ticketSeller.getTicketOffice().getTic.. 2024. 2. 6.
728x90
반응형