본문 바로가기
728x90

캡슐화4

Chapter 4. 설계 품질과 트레이드오프 객체지향 설계의 핵심은 역할, 책임, 협력이다. 1. 협력: 애플리케이션 기능 구현을 위한 객체들 간의 상호작용. 2. 책임: 객체가 다른 객체와의 협력을 위해 수행하는 행동. 3. 역할: 대체 가능한 책임의 집합. 객체지향 설계에서 가장 중요한 것은 적절한 책임 할당이다. 적절한 책임 할당이 이루어 져야 제대로된 협력이 가능하고 제대로된 역할의 배분이 이루어진다. 객체지향 설계는 올바른 책임을 할당해 낮은 결합도와 높은 응집도를 가진 구조를 만드는 것이다. 이 말에는 다음과 같은 두 가지 관점이 섞여있다. 1. 객체지향 설계의 핵심이 책임이다. 2. 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되 있다. 설계를 변경한다는 것은 비용 발생과 직결되 있다. 따라서 합리적인 비용 내에서.. 2022. 1. 10.
Chapter 2. 객체지향 프로그래밍 영화 예매 시스템 예제 영화 예매 시스템을 사용해 사용자는 영화를 예매할 수 있다. 예제에 들어가기 전 용어에 대해 설명하겠다. 영화는 영화 자체에 대한 제목, 상영시간, 가격 같은 영화 하나가 가지고 있는 기본적인 정보이다. 상영은 실제로 관객들이 관람하는 사건이다. 상영은 상영일자, 시간, 순번등을 가지고 있다. 이 용어의 구분이 중요한 이유는 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이기 때문이다. 사람들은 영화를 예매한다고 표현하지만 실제로는 특정 시간에 상영되는 영화를 관람할 수 있는 권리를 구매하는 거다. 특정 조건을 만족하는 예매자는 요금을 할인 받을 수 있다. 할인을 받지 않는다면 영화의 기본 요금이 책정된다. 할인은 1명을 기준으로 하기 때문에 n명이 할인 조건에 만족하는 상영을.. 2022. 1. 3.
Chapter 1. 객체, 설계 티켓 판매 애플리케이션 구현 소극장에서 이벤트를 통해 공연을 무료로 관람할 수 있는 관객과 표를 구매해야 하는 관객이 있다고 가정하자. 이벤트에 당첨된 관객은 당첨을 입증하는 표를 연극표로 교환한 뒤에 입장할 수 있다. 따라서 연극 당일날 이 두 종류의 관객을 입장시킬때 당첨여부를 확인하고 당첨자가 아니라면 티켓을 판매한 뒤 입장해야 한다. 이를 구현하기 위해 다음과 같은 클래스들을 설계하자 1 2 3 4 5 6 7 /** * 이벤트 당첨자에게 발송되는 초대장 */ public class Invitation { /** 초대 일자 */ private LocalDateTime when; } cs 1 2 3 4 5 6 7 8 9 10 11 12 /** * 공연을 관람하는 사람들이 가지고 있어야 하는 티켓 */.. 2022. 1. 1.
객체지향의 주요 개념과 특징 객체 -식별자 존재: 객체를 유일하게 구별 -상태 존재: 자료구조에 해당 -메서드 존재: 연산을 수행할 수 있는 행위에 해당 -클래스로 선언 및 사용: 객체들 사이의 공통의 구조와 행위가 클래스로 선언되 사용 클래스 -클래스는 공통되는 것들을 묶어서 대표적인 이름을 붙인것  -클래스가 개념적이라면, 객체는 구체적이다 -데이터뿐 아니라 이 데이터에서 수행되는 메서드까지 포함해 묶은것 구조체 -서로 연관된 자료들만 모아 놓은것 -구성: -struct: 구조체를 나타내는 예약어 -student: 구조체 태그명 -구조체 멤버 인스턴스 -같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체 -클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현되는 것 -인스턴스화: 추상.. 2021. 5. 10.
728x90