BookReview 10

08_의존성 관리하기

오브젝트 - 코드로 이해하는 객체지향 설계의 8번째 챕터 의존성 관리하기 파트다. 08_의존성 관리하기에서는 영화 예매 시스템을 통해 충분히 협력적이면서도 유연한 객체를 만들기 위해 의존성을 관리하는 방법을 살펴보고 있다. 00_들어가기 작고 응집도 높은 객체 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미 단독으로 수행할 수 있는 작업은 거의 없기 때문에 일반적으로 애플리케이션의 기능을 구현하기 위해서는 다른 객체에게 도움을 요청해야 한다. 이런 요청이 객체 사이의 협력을 낳는다. 협력은 객체가 다른 객체의 존재와 다른 객체가 수신할 수 있는 메시지를 알고 있어야 한다. 이런 지식이 객체 사이의 의존성을 낳는다. 협력을 위해서는 의존성이 필요하지만, 과도한 의존성을 애플리케이션을 수정하기 어렵..

07_객체 분해

오브젝트 - 코드로 이해하는 객체지향 설계의 7장 객체 분해 파트를 다루는 글이다. 7장에서는 프로그래밍 패러다임의 흐름 속에서 지금까지 정리했던 객체지향 개념들이 탄생하게 된 배경을 서술하고 있다. 이를 통해 지금까지 다루었던 다양한 원리와 개념들을 이해하는데 많은 도움이 될 수 있고, 객체지향 이외의 다른 패러다임을 이해하는것에 도움을 받을 수 있다고 설명하고 있다. 00_들어가기 추상화 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업 분해 큰 문제를 해결 가능한 작은 문제로 나누는 작업 추상화와 분해는 인간이 세계를 인식하고 반응하기 위해 사용하는 가장 기본적인 사고 도구라고 할 수 있음 01_프로시저 추상화와 데이터 추상화 프로그래밍 언어의 발ㄹ전은 좀 더 효과적인 추상화를..

06_메시지와 인터페이스

[오브젝트 - 코드로 이해하는 객체지향 설계]의 6장 메시지와 인터페이스 챕터이다. 이번 챕터에서는 영화 예매 애플리케이션을 예제로 두고, 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는데 도움이 되는 설계 원칙과 기법을 살펴보는것을 주제로 하고있다. 00_들어가기 객체지향 프로그램에 대한 가장 흔한 오해 애플리케이션이 클래스의 집합으로 구성된다. 클래스라는 구현 도구에 지나치게 집착하면 경직되고 유연하지 못한 설계에 이를 확률이 높아진다. 훌륭한 객체 지향 코드를 얻기 위해서는 클래스가 아닌 객체를 지향해야 한다. 협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다. 책임이 객체가 수신할 수 있는 메시지의 기반이 된다. 클래스 사이의 정적인 관계에서 메시지 사이의 동적인 흐름으로 초점을 전환하는 ..

05_책임 할당하기

[오브젝트 - 코드로 이해하는 객체지향 설계]의 5번째 챕터 [책임 할당하기]에 대한 리뷰를 진행하려고 한다. 5장에서는 2장에서 작성한 영화 예매 애플리케이션의 설계과정을 통해 객체에 책임을 할당하는 기본적 원리에 대해 설명하고 있다. 00_들어가기 책임에 초점을 맞춘 설계 책임에 초점을 맞춰 설계할 때 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기 쉽지 않다는 것이다. 책임 할당의 과정은 일종의 트레이드오프 활동 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며, 어떤 방법이 최선인지는 상황과 문맥에 따라 달라진다. 올바른 책임을 할당하기 위해서는 다양한 관점에서 설계를 평가할 수 있어야 한다. 01_책임 주도 설계를 향해 책임 중심 설계의 두 가지 원칙 데이..

04_설계 품질과 트레이드 오프

[오브젝트 - 코드로 이해하는 객체지향 설계] 의 4번째 챕터 [설계 품질과 트레이드 오프]에 대한 파트이다. 이번 챕터에서는 영화 예매 시스템을 책임이 아닌 상태를 표현하는 데이터 중심의 설계로 살펴보고, 객체지향으로 설계한 구조와 어떤 차이점이 있는지를 살펴보고자 한다. 00_들어가기 책임 주도 설계 역할, 책임, 협력 중에서 가장 중요한 것은 책임 책임이 객체지향 애플리케이션 전체의 품질을 결정 객체지향 설계 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동 객체지향 설계에 관한 두 가지 관점 객체지향 설계의 핵심은 책임 책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관돼 있다. 책임은 객체의 상태에서 행동으로, 나아가 객체와 객체 사..

03_역할, 책임, 협력

[오브젝트 - 코드로 이해하는 객체지향 설계]의 3번째 챕터 [03_역할, 책임, 협력]의 파트이다. 03 챕터는 대제목에 다라 역할, 책임, 협력에 대해 설명하고 있으며, 코드의 경우 02 객체지향 프로그래밍의 영화 예매 애플리케이션을 바탕으로 설명하고 있다. 00_들어가기 객체지향 페러다임의 핵심 역할(Role) : 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합 책임(Responsibility) : 협력에 참여하기 위해 객체가 수행하는 행동 협력(Collaboration) : 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 클래스, 상속, 지연 바인딩 : 중요한 개념이기는 하나, 다분히 구현 측면에 치우쳐 있기 때문에 객체지향 패러디임의 본질과는 거리가 있다. 객체지향의 본질 협..

[책 리뷰 공통] - 리뷰 포멧 설정하기

책 리뷰는 현재 '오브젝트'만 진행하고 있고 금주부터 [개발자의 글쓰기] 를 병행해볼 생각이다. 그런데 '오브젝트'에 대한 01 챕터와 02 챕터 리뷰를 진행하면서 느낀것은 포멧이 정해져 있지 않으니 매번 형식이 들쑥날쑥이어서 리뷰를 안하니만 못한, 다시 읽기 힘든 형식이 되는것 같은 느낌으로 진행된다. 따라서 이번에는 포멧에 대해 설정을 해보려고 한다. 먼저 현재와 동일하게 각 챕터마다 하나의 게시글로 진행을 하고, 책에서 소분된 소단락 부분마다 소제목을 지정하고 세분화 하여 진행하고자 한다. 예를들어 소단락의 타이틀이 '협력'일 경우 01_협력으로으로 지정하고 하위 내용을 순차적으로 작성할 예정이다. 그리고 소단락이 종료될때마다 깃헙에 해당 내용의 코드를 푸쉬하고 링크를 통해 연결해보고자 한다. 포멧..

BookReview 2023.01.08

02_객체지향 프로그래밍

오브젝트의 2장은 [객체지향 프로그래밍]을 소제목으로 하고있다. 2장에서는 '영화 예매 시스템'을 예시로 두고 객체지향 프로그래밍에 대해 설명하고 있다. 2장부터는 깃헙에 사전 정리된 내용이 없기 때문에 책일 읽으면서 내용을 해당 게시글에 정리하고자 한다. 01_객체, 설계 파트에서는 티켓 판매 애플리케이션을 구현하는 것을 예시로 두고 설명하였고, 02_객체지향 프로그래밍에서는 영화 예매 시스템을 예시로 두고 객체지향에 대해 설명하고 있다. 01. 요구사항 살펴보기 '요구사항 살펴보기'의 경우 애플리케이션을 설계하기 전에 사전에 정의되어야 하는 용어의 구분 및 할인 정책 등을 기술하고 있다. 상세내역은 블로그에 정리하지 않고 내용에 대한 확인이 필요할 때 책을 다시 펼쳐보기 위해 참고 페이지만 기록해둔다..

01_객체, 설계

오브젝트의 1장 객체, 설계 파트는 깃헙에서 미리 진행된 부분이 있으므로 인용하여 작성하고, PR의 본문을 참조하여 짜집기식으로 작성하였다. 2장부터는 책을 읽음과 동시에 게시글을 작성해볼 생각이다. Github 01. 객체를 설계하기 위한 예시 - 티켓 판매 애플리케이션 구현하기 티켓 판매 애플리케이션 작성을 위한 첫 번째 구조를 작성하였다. 애플리케이션의 기초적인 흐름에 따라 작성되었으며, 기능별로 객체지향적 의미를 가지도록 PR에 따라 Refactoring 될 것이다. PR : https://github.com/JIHYEON-PF/book_review_object/pull/2 티켓 판매 어플리케이션의 첫 번째 리펙토링 - 캡슐화 진행 내역입니다. by JIHYEON-PF · Pull Request ..

00_Intro

사내 개발 스터디가 얼마전에 새로운 주제로 시작되었다. 입사했을 때 진행중이던 스터디가 종료되면서 새롭게 주제를 정하면서 선정된 책은 [오브젝트]와 [개발자의 글쓰기]이다. 객체지향에 대해 개념을 겉햝기로 알고있던 나에게 아주 좋은 주제선정이다. 이 책은 코드를 통해 객체지향에 대한 개념을 설명하고 있기 때문에 깃헙을 통해 코드를 업로드 하고, 책 장마다 읽고난 후의 리뷰를 블로그에 함께 업로드 할 예정이다. Github : https://github.com/JIHYEON-PF/book_review_object GitHub - JIHYEON-PF/book_review_object Contribute to JIHYEON-PF/book_review_object development by creating an..