도서

도서/오브젝트

4. 설계 품질과 트레이드 오프

개요 2장에서는 올바른 객체지향 개발에 대해서 알아보았고, 3장에서는 객체지향 설계의 핵심에 대해서 얘기하였다. 4장 부터는 객체지향 설계를 왜 해야하는지에 대한 관점에서부터 출발하여 객체지향 설계를 안했을 때의 단점을 하나 하나 살펴본다. 이번 4장에서는 데이터 중심의 관점으로 객체의 상태에 초점을 맞추는 데이터 중심의 설계를 살펴보면서 객체 지향적인 설계의 구조와의 차이점을 알아보고자 한다. 결론부터 말하자면, 데이터 중심의 관점은 객체의 상태에 초점을 맞추기 때문에 객체 자체를 독립된 데이터로 보고, 구현 자체가 객체의 상태에 종속되기 때문에 변경에 취약해진다. 설계의 품질을 판단하기 위한 척도 설계의 품질은 판단하기 위한 척도로 캡슐화, 응집도, 결합도를 이용하여 판단이 가능하다. 캡슐화 변경 가..

도서/오브젝트

3. 역할, 책임, 협력

개요 객체지향의 본질은 협력하는 객체들의 공동체를 참조하는 것이다. 객체지향의 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 애플리케이션의 기능을 구현하기 위해서 어떤 협력이 필요하고 협력을 위해 어떤 역할과 책임이 필요한지를 고민하지 않은 채 너무 이른 시기에 구현체 초점을 맞추는 것은 변경하기 어렵고 유연하지 못한 코드를 낳는 원인이 된다. 객체지향 패러다임의 관점인 역할(role), 책임(responsibility), 협력(collaboration)에 대해서 알아보자. 협력 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 협력은 객체지향 세계에서 기능을 구현할 수 있는 유일한 방법이다. 객체 자체는 자율적으로 동작하기 때문이다. 자율..

도서/오브젝트

2. 객체지향 프로그래밍

개요 온라인 영화 예매 시스템을 통해 올바르게 된 객체지향 설계가 무엇인지, 이 책을 읽으면서 이해하게 될 다양한 주제들을 먼저 간단하게 살펴보자. 요구사항 요구사항 1 사용자는 영화 예매 시스템을 이용해 보고 싶은 영화를 예매 할 수 있다. 이 예제에서는 '영화' 와 '상영'을 구분해야한다. 1. 영화 - 제목, 상영시간, 가격 정보와 같이 영화가 가지고 있는 기본 정보 2. 상영 - 실제로 관객들이 영화를 관람하는 사건, 상영 일자, 시간, 순번 등을 가지고 있다. 이렇게 나눈 이유는 클라이언트가 실제로 예매하는 건 영화 그 자체가 아닌 상영을 예매하는 것이기 때문이다. 이 부분이 이해가 안될 수 있는데 객체의 의인화를 통해 책임을 확실히 구분 한 것이다. 요구사항 2 영화 예매시 특정한 조건을 만족..

도서/오브젝트

1. 객체, 설계

해당 글은 객체지향의 사실과 오해에 이어서 코드로 살펴보는 오브젝트 책이다. 기본적인 내용에 대한 기반은 객체지향의 사실과 오해를 기반으로 설명을 하고 있기 때문에 혹시 어느 방향인지 잘 이해가 안된다면 객체지향의 사실과 오해라는 책을 먼저 읽는 것을 권장한다! 아니 본인이 객체지향언어를 사용하는 개발자라면 꼭 읽어봐야 한다고 생각한다. 개요 잘못된 방식의 애플리케이션 설계는 무엇인지, 객체지향적인 방식의 설계는 무엇인지, 객체지향적으로 설계를 하면서 사고해야하는 것은 무엇인지에 대해 알아보자. 티켓 판매 애플리케이션 구현 요구사항 관객은 티켓 판매점에서 초대장 보유 여부에 따라 구매 하거나 교환 할 수 있다. 관객은 가방을 가지고 있으며, 가방에는 현금, 초대권, 티켓이 들어있을 수 있다. 티켓 판매점..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 4. 역할, 책임, 협력

우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜치드(Ken Blanchard) - 제목부터 이전부터 저자가 강조한 역할, 책임, 협력에 관해서 나온다.  사람들도 어떠한 상황에 처해있느냐에 따라 다르게 행동할 수 있다는 부분에서 객체 또한 어떤 협력에 참여하는지에 따라 필요한 행동이 결정되고, 그 행동이 객체의 상태를 결정한다고 한다. 객체들 간의 협력에 집중하라. 이번 장의 주제이다. 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작한다. 이렇듯 객체간의 협력은 한 객체가 다른 객체에게 메시지를 통해 요청을 할 때 시작되는 것이다. 협력 안에서 각 객체들은 어떤 요청에 대해 응답하거나 적절한 행동을 한다. 이를 우리는 객체의 책임이라고 부르고, 객체지향 개발에서 중요한 것은 객체 ..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 3. 타입과 추상화

일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 훌륭한 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다. - 키스 데블린(Keith Devlin) - 이전에 현실에 존재하는 객체들의 특징을 간추리고 요약해서 소프트웨어 객체로 추상화 할 수 있는 능력이 중요하다는 생각이 잘 못 자리잡게 된 것이라는 저자의 말을 볼 수 있었다. 결국 이 인용을 통해 분명한 저자의 의도를 알 수 있다. 현실에 존재하는 객체들의 특징을 추상화 하는 것이 아닌, 컴퓨터 소프트웨어 세계에서 하나의 객체를 창조해서 그 객체를 의인화하여 추상화하는 능력 이를 강조하는 것이라고 생각한다. 예시로 지하철 노선도가 나오는데..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 2. 이상한 나라의 객체

객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. - 레베카 워프스브록(Rebecca wirts-Brock)- 이번 장에서는 객체를 상태와 행동으로 구분함으로써 은유를 이용해 객체를 의인화함으로써 객체를 쳐다보는 관점에 대한 이야기가 주를 이루고 있다. 처음에는 아기가 가림막에 가려진 막대기를 바라보는 관점의 예시로 시작한다. 가림막 뒤에 막대기가 위 아래로 2부분이 보일 때, 대부분의 사람이라면 긴 막대기 1개가 뒤에 있구나. 라고 생각하는 것이 일반적이다. 하지만, 가림막 뒤에 있던 막대기가 알고보니 2개였다면? 당황스러울 것이다. 나 또한 읽으면서 그랬을 것 ..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 협력하는 객체들의 공동체

오늘은 최근에 읽고 있는 객체지향의 사실과 오해라는 책에 대한 내용에 대해서 포스팅해보려고 한다. 해당 책을 읽으면서 "내가 정말 객체지향이라는 것을 잘 못 이해하고 있었구나." 라는 것을 깨달을 수 있는 좋은 책 인 것 같다. 실제로 시작은 우리가 객체지향을 공부하는 데에 있어서, 현실 세계를 모방하는 것으로 배우는 것으로 시작한다. 대부분의 객체지향을 입문하는 사람들은 객체에 대한 정의를 다음과 같이 배우게 될 것이다. 실세계에 존재하거나 생각할 수 있는 것 책은 과연 이 말이 맞는 말인가? 로 시작을 하면서도, 현실에 빗대어서 객체를 설명하는 이유에 대해서 알려준다. 객체를 현실에 비유하는 이유 1. 스스로 생각하고 스스로 결정한다는 특징 -> 이 자체는 상태와 행위를 캡슐화 하는 것에 대한 설명하..

Bombo_
'도서' 카테고리의 글 목록