본문 바로가기

IT 도서 정리

(5)
[오브젝트] CHAPTER 5. 책임 할당하기 4장에서 데이터 주도 설계의 문제점을 알아봤으니, 이제 책임 주도 설계를 해보자. 책임에 초점을 맞춰서 설계할 때 어떤 것이 가장 어려울까? => 어떤 객체에게 어떤 책임을 할당할지를 결정하는 것이 가장 큰 어려움이라고 한다. GRASP 패턴은 책임 할당의 어려움을 해결하기 위한 답을 제시해준다. GRASP 패턴: General Responsibility Assignment Software Pattern의 약자, 객체에 책임을 할당할 때 지침으로 삼을 수 있는 원칙들의 집합 책임 할당을 위한 GRASP 패턴 1. 도메인(DOMAIN) 개념에서 출발하라. 설계를 시작히기 전 참고할 수 있는 개념들의 모음이 있는 것만으로도 큰 도움이 된다. 하지만, 도메인 개념을 정리하는 데 너무 많은 시간을 들이지 말고 ..
[오브젝트] CHAPTER 4. 설계 품질과 트레이드오프 객체지향 설계 - 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동 객체지향 설계의 핵심은 책임이다. 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되어 있다. 훌륭한 설계: 합리적인 비용 안에서 변경을 수용할 수 있는 구조를 만드는 것. 데이터 주도 설계 4장에서는 잘못된 설계 방법인 데이터 주도 설계(Data-Driven Design)를 통해 통찰을 준다. 데이터 주도 설계의 한계 1. 객체의 상태는 구현에 속하므로 변하기 쉽다. 2. 구현에 관한 세부사항이 인터페이스에 스며들어 캡슐화의 원칙이 무너진다. 3. 상태 변경은 인터페이스의 변경을 불러오고, 이는 변경에 취약하다는 뜻이다. 책임을 결정하기 전에 이 객체가 포함해야 하는 데이..
[오브젝트] CHATPER 3. 역할, 책임, 협력 3장에서는 객체지향 패러다임의 핵심인 역할, 책임, 협력에 대해서 자세히 설명한다. 협력 - 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용. 책임 - 객체가 협력에 참여하기 위해 수행하는 로직. 역할 - 객체들이 협력 안에서 수행하는 책임들의 집합. 협력(collaboration) 객체지향 세계에서 기능을 구현할 수 있는 유일한 방법으로, 한 객체가 다른 객체에게 도움을 요청할 때 시작된다. 메시지 전송 - 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단 메시지를 수신한 객체는 메서드를 실행해 요청에 응답한다. 객체 스스로 메서드를 선택하며, 이는 자신의 일을 스스로 처리할 수 있는 자율적인 존재라는 것을 의미한다. 협력이 설계를 위한 문맥을 결정한다 객체의 행동을 결정..
[오브젝트] CHAPTER 2. 객체지향 프로그래밍 핵심 용어 도메인 객체(상태 + 행동) 접근 제어와 접근 수정자 협력 메시지와 메서드 지연 바인딩(동적 바인딩) 초기 바인딩(정적 바인딩) 추상화 상속과 다형성 추상 클래스와 인터페이스 상속과 협력 핵심 요약 - 객체지향 프로그래밍을 구성하는 다양한 요소와 구현 기법 객체지향 프로그래밍 온라인 영화 예매 시스템이라는 구체적인 예시로 설명을 시작한다. 객체지향 프로그래밍 1. 어떤 클래스가 필요한지 고민하기 전, 어떤 객체들이 필요한지 고민하라. 2. 객체를 독립적인 존재가 아닌, 기능을 구현하기 위해 협력하는 공동체의 일원으로 파악하라. 도메인(domain) - 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야 프로그래머는 도메인의 구조(객체들의 관계)에 맞게 클래스들을 구성하는 것이 좋다! 객체 ..
[오브젝트] CHAPTER 1. 객체, 설계 정리의 취지 개발 관련 도서는 전공과 관련된 책이니만큼 전공책을 공부한다는 마음으로 읽어볼까 합니다. 저자는 실무가 이론보다 앞서며 코드를 통해 그 부분을 독자에게 잘 설명합니다. 책의 메인 내용이 코드 예제인만큼 코드도 넣으면 좋겠지만, 이 부분은 필자의 역량 부족으로 책을 참고해 주시면 감사하겠습니다. 핵심 용어 의존성, 결합도 캡슐화 자율성, 응집도 구현이 아닌 인터페이스에 의존하라. 의인화 본문 티켓 판매 애플리케이션이라는 구체적인 예시를 통해 설명을 시작한다. 로버트 마틴은 이라는 책에서 모듈에 대해 설명한다. 모듈 - 크기와 상관없이 클래스나, 패키지, 라이브러리와 같이 프로그램을 구성하는 임의의 요소를 의미한다. 모듈의 조건 1. 제대로 실행되어야 함. 2. 변경이 용이해야 함. 3. 이해하..