나는 이렇게 본다/객체지향의 사실과 오해 7

객체지향의 세 가지 관점(도메인, 인터페이스, 구현)

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 07 함께 모으기 요약 정리 객체지향의 세 가지 관점 개념 관점(Conceptual Perspective) 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 소프트웨어는 도메인에 존재하는 문제를 해결하기 위해 개발된다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점(Specification Perspective) 도메인을 벗어나 개발자의 영역인 소프트웨어에 집중 객체들의 책임에 초점을 맞추며 객체의 인터페이스를 바라보는 관점이다. 구현 관점(Implementation Perspect..

도메인과 유스케이스, 유지보수하기 쉽고 유연한 객체지향 시스템

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 06 객체지도 요약 정리 설계 객체지향은 자주 변경되는 '기능'이 아니라 안정적인 '구조'를 기반으로 시스템을 구조화한다. (구조 중심 설계) 기능 측면 설계는 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춘다. (충분조건) 구조 측면 설계는 서비스의 형태가 어떠해야 하는지에 초점을 맞춘다. (필요조건) 기능과 구조는 조화를 이루어야 한다. 소프트웨어는 요구사항이 항상 변경된다. 이 '변경' 때문에 설계가 필요한 것이다. 예측 불가능한 변경에 유연하게 대처할 수 있는 안정적인 구조를 설계해야한다. 좋은 설계는 나중에라도 변경할 수 있는 여지를 남겨 놓는 설계다. 즉, 설계의 목표..

객체지향의 강력함은 책임을 자율적으로 만드는 것에 달려있다

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 05 책임과 메시지 요약 정리 객체가 행동을 하는 유일한 이유는 다른 객체로부터 요청(메시지)을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 자율적인 책임은 객체가 '어떻게'해야 하는가가 아니라 '무엇'을 해야 하는가를 설명한다. 메서드 - 메시지를 처리하기 위해 내부적으로 선택하는 방법을 메서드라고 한다. 필요한 경우 메시지에는 인자가 함께 전달된다. 다형성 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신한다. 객체들은 서로 다른 메서드를 이용해 메시지를 처리할 수 있다. 즉, 동일한 메시지를 서로 다른 메서드(처리방법)를 이용해 처리..

테스트 주도 개발은 객체지향 설계도구

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 04 역할, 책임, 협력 요약 정리 협력 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 협력의 본질은 요청과 응답으로 연결되는 네트워크다. 첵임 책임은 객체의 외부에 제공해 줄 수 있는 정보(아는 것) 개인적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 외부에 제공해 줄 수 있는 서비스(하는 것)의 목록이다. 객체를 생성하거나 계산을 하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 역할 '왕'과 '여왕'이 객체라면 '판사'는 그들의 역할이다. 같은 ..

추상화는 복잡성을 이해하기 쉬운 수준으로 단순화하는 것

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 03 타입과 추상화 요약 정리 이해하기 쉽고 예측 가능한 수준으로 단순화하는 전략 추상화란 불필요한 부분을 도려내가면서 본질(목적)을 드러나게 하는 과정이다. 공통점은 취하고 차이점을 버리는 일반화를 통해 단순하게 만든다. 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것이다. 공통적인 특성으로 묶은 것을 '개념'이라고 한다. 개념은 세 가지 관점으로 이야기 할 수 있다. 심볼 : 개념을 가리키는 명칭(ex. 트럼프카드) -> 명칭 내연 : 개념의 완전한 정의(ex. 트럼프카드의 설명, 공통된 특징) -> ..

행동이 상태를 결정한다.

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 02 이상한 나라의 객체 요약 정리 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 숫자, 문자열, 양, 속도, 시간, 날짜, 참/거짓과 같은 단순한 값들은 객체가 아니다. 단순한 값들은 다른 객체의 상태를 표현하기 위해 사용한다. 객체의 상태를 구성하는 모든 특징을 객체의 프로퍼티라고 한다. 정적인 프로퍼티 사람이라면 키, 성별, 체력 등이 될 수 있고 변경되지 않고 고정되기 때문에 ‘정적’이다. (cf. key) 동적인 프로퍼티 값(va..

일하는 객체들이 서로 협력하는 관계를 구축하는 것

제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 01 / 협력하는 객체들의 공동체 요약 정리 객체지향의 목표는 실세계를 모방하는 것이 아니다. 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 현실 세계와 비유하는 것은 '상태'와 '행위'를 [캡슐화]하는 소프트웨어 객체의 [자율성]을 설명하는 데 효과적이기 때문 객체는 상태와 행위를 하나의 단위로 묶는 자율적인 존재 객체지향에서 가장 중요한 개념 세 가지는 '역할', '책임', '협력'이다. 여러 객체가 동일한 역할을 수행할 수 있다. 역할은 책임(일), 임무를 의미한다. (손님, 점원, 바리스타) 역할은 대체 가능하다. (부품) 책임을 수행하는 방법(일하는 방법)은 객체가 자율적으로 선택할 수 있다. → 다형성과 관련 객체는 동시에..