01. 티켓 판매 애플리케이션 구현하기 작은 소극장 프로젝트 추첨을 통해 공연 무료 관람 초대장을 발송 이벤트 당첨 고객은 무료로, 비당첨 고객은 가격을 지불하고 입장해야 한다. Invitation.java Ticket Bag Audience Tic
01. 영화 예매 시스템 요구사항 온라인 영화 예매 시스템 영화; 영화에 대한 기본 정보 제목, 상영시간, 가격 정보 상영; 실제 관객들이 영화를 관람하는 사건 상영 일자, 시간, 순번 사용자가 실제로 예매하는 대상; 상영 할인
객체지향 패러다임의 핵심; 역할(role), 책임(responsibility), 협력(collaboration) 협력하는 객체들의 공동체를 창조하는 것. 01. 협력 영화 예매 시스템 돌아보기 아영화 예매라는 기능을 완성하기 위해 협력하는 객체들의 상호작용
객체지향 설계의 핵심; 역할, 책임, 협력 협력; 앱 기능을 구현하기 위해 메시지를 주고 받은 객체들 사이의 상호작용 책임; 객체가 다른 객체와 협력하기 위해 수행하는 행동 역할; 대체 가능한 책임의 집합 책임 주도 설계 이름에서 알 수 잇듯, 가
데이터가 아닌 책임에 초점을 맞춰야 한다. 책임 할당 과정; 일종의 트레이드 오프 활동 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재한다. 어떤 방법이 최선인지는 상황과 문맥에 따라 달라진다. 올바른 책임 할당을 위해서는, 다양한 관점에
객체지향 프로그램의 흔한 오해; App은 클래스의 집합 클래스에 집착 => 경직되고 비유연한 설계 유도 훌륭향 객체지향 코드; 클래스❌ 객체(지향)⭕️ 정확히는, 객체가 수행하는 책임에 초점을 맞추는 것 책임 = 객체가 수신할 메시지의 기반 App
객체가 참여할 협력을 결정하고, 협력에 필요한 책임을 수행하기 위해 어떤 객체가 필요한지에 관해 고민해라. 그 책임을 다양한 방식으로 수행해야 할 때만 타입 계층 안에 각 절차를 추상화하라. 타입 계층과 다형성은 협력이라는 문맥 안에서 책임을 수행하는 방법에 관해 고민
객체지향 시스템은 협력하는 객체들의 네트워크로 구성돼 있다. 시스템은 객체를 생성해 서로 메시지를 주고 받을 수 있게 조립하는 과정을 거쳐 만들어진다. 시스템의 행위는 객체의 조합(객체의 선택과 연결 방식)을 통해 나타나는 특성이다.
설계 원칙과 관련된 용어를 정리해보자! 01. 개방-폐쇄 원칙 계방-폐쇄 원칙(Open-Closed Principle, OCP) (by. 로버트 마틴) 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다
코드 재사용의 목적: 중복 코드 제거 코드 재사용 방식 비교 전통적인 방법 기존 코드 복사 + 복사한 코드 수정 객체지향 코드는 클래스 안에 작성되며, 새로운 클래스를 추가하는 방식으로 재사용 객체지향의 코드 재사용 방법1. 상속
상속과 합성 정의 상속 부모-자식 클래스를 연결. 부모 클래스의 코드를 재사용. 의존성이 컴파일 타입에 해결된다. is-a 관계 합성 전체 객체가 부분 객체를 포함. 부분 객체의 코드를 재사용. 런타임에 해결된다. has-a 관계 코드
상속의 목적 코드의 재사용 ❌ 상속을 사용하려는 목적이 코드 재사용인가? 타입 계층의 구조화 ⭕️ 클라이언트 관점에서 인스턴스를 동일하게 행동하는 그룹으로 묶기 위해서인가? 다형성: 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로
상속의 용도 타입 계층의 구현 부모 클래스: 자식 클래스의 일반화(generalization) 자식 클래스: 부모 클래스의 특수화(specialization) 코드 재사용 장점: 코드의 재사용 점진적인 애플리케