Book/객체지향의 사실과 오해

    [Book] 되새김질

    '객체지향 프로그램' 이란 무엇일까? 실세계를 모방하여 추상화와 은유 기반으로 새로운 세계를 창조한 프로그램이다. 공동의 목표 즉, 서비스를 달성하기 위해 책임과 역할 협력을 적절히 사용한 프로그램이다. '자율성' 을 가진 객체는 우수 객체가 된다. 다른 객체가 직접적으로 접근하여 컨트롤 하는 것 보다 책임을 부여하고 자신이 처리하는 것이 바람직한 프로그램이다. 어떻게 수행하는지는 알 필요가 없다. 단지 무엇을 수행하는지만 아는것이 중요하다. 과정보다 결과를 중요시하는 것처럼.. '책임 주도 설계' 중요하다! 행동을 먼저 고민하고 상태를 고민하라!. 회원 정보를 '저장하는 행동' 을 고려해본 다음 정보를 저장하는데 '무엇' 을 저장해야하는가? 를 고민하게 된다. 행동을 결정하게 하는 것은 협력이다! 협력..

    [Book] 3장) 타입과 추상화

    [Book] 3장) 타입과 추상화

    학습 내용 타입과 추상화에 대한 이해 추상화 목적 명확하게 이해하기 위해 특정 부분을 생략하고 감춤으로써 복잡도를 극복하는 것이 목적이다. 방법 첫번째 : 객체들간의 공통점을 합하고 차이점은 버리는 일반화를 통해 단순하게 만든다. 두번째 : 중요 부분을 강조하기 위해 불필요한 세부 사항을 제거하여 단순하게 만든다 개념 일반화한 추상적인 사람들의 생각. 언어와 사고의 기본 단위이다. (출처 : 나무위키) 3가지 관점 심볼 : 개념의 간략한 이름. 내연 : 개념을 완전히 나타낼 수 있고 의미를 통해 객체가 개념에 속하는지 알 수 있다. 외연 : 개념에 속하는 모든 객체의 집합. 개념을 이용해 공통점을 가진 객체들을 분류하여 복잡성을 극복 할 수 있다. 분류 객체에 특정한 개념을 적용하는 작업 중요도 : 분류..

    [Book] 1장) 협력하는 객체

    [Book] 1장) 협력하는 객체

    학습 내용 객체지향의 이해 객체지향 실세계를 모방하고 추상화, 은유 기반을 거처 프로그램 내에 새로운 세계를 창조 공동의 목표를 달성하기 위해 서로 메시지를 주고 받으며 협력을 하는 과정에서 암묵적인 역할과 책임을 가지고 있는 형태 객체는 자율성을 가지고 있어야 한다. 자율성이란 객체 자기 자신이 판단을 하고 요청을 처리하는 것을 말한다. 캡술화 객체 상태를 외부에서 접근을 못하도록 감추고 행동에 대해서 어떻게 처리하는지는 알 필요 없고 무엇을 하는지만 알면 된다. 장점 여러 사람들이 역할을 수행할 수 있다. 한사람이 동시에 여러 역할을 할 수 있다. 역할은 대체 가능성을 의미한다. 책임을 수행하는 방법은 자율적으로 선택 할 수 있다. 예제 코드 Member.class 책임 인바디 측정하러 이동 자료를 ..

    [Book] 7장) 함께 모으기

    [Book] 7장) 함께 모으기

    개념, 명세, 구현 관점 순서대로 개발 개념 관점 도메인 실제 도메인의 규칙과 제약을 최대한 반영 명세 관점 공용 인터페이스 객체들의 책임에 초점 구현 관점 클래스의 속성, 메서드 '어떻게' 수행 할 것인가에 초점 public class Customer { public Coffee order(String menuName, Menu menu, Barista barista) { MenuItem menuItem = menu.chooseMenu(menuName); Coffee coffee = barista.makeCoffee(menuItem); return coffee; } } public class Menu { private List menuItemList; public Menu(List menuItemLis..

    [Book] 6장) 객체 지도

    객체 지도 지도 잘 변하지 않는 지형을 토대로 만들어 짐 안정적인 구조 바탕으로 설계 객체 지향 프로그램의 설계의 접근법 기능 과 구조를 바탕 설계 구조 도메인 모델 대상을 일반화 한 모델 안정적인 구조 불안정한 기능을 담아도 변경에 대한 유연한 대응이 가능하다. 표현적 차이 객체는 추상화가 아니라 은유를 기반으로 창조된다. 기능 유스케이스 사용자 목표를 통해 연관된 시나리오의 집합 특성 사용자와 시스템 간에 상호작용을 보여주는 '텍스트' 이다. 여러 시나리오의 집합 기능의 목록을 나열한 것에 연관된 기능들을 알 수 있다. 인터페이스와 관련된 세부 사항은 포함하지 않는다. 내부 설계와 관련된 정보를 포함하지 않는다. 유스케이스는 설계 기법도, 객체지향 기법도 아니다. 시스템 내부 구조와 작동 원리같은 내..

    [Book] 5장) 책임과 메시지

    자율성 타인이 아닌 자기 자신이 행동을 하는 특성 자율적인 책임 요청을 자신의 판단에 처리하는 것 자율적인 객체와 유연한 협력 관계가 품질 좌지우지한다. 특징 어떻게 ( How ) 가 아니라 무엇 ( What ) 을 해야 하는가를 설명 메시지 행동을 수행하게 하는 자극제 조합 구조 수신자 , 메시지 이름, 인자 ex ) public String hello(String message) {}; 어떻게 ( How ) 처리 할지 명시하지 않고 무엇 ( What ) 이 실행되기를 명시 메서드 메시지 처리를 위한 내부적 선택 방법 다형성 서로 다른 객체가 동일한 메시지에 대해 다르게 반응 대체 가능성을 보고 설계 재사용성 유연한 협력 관계 유지 확장 가능성 메시지의 중요 메시지를 중심으로 협력을 설계 무엇, 어떤 ..

    [Book] 4장) 역할, 책임, 협력

    [Book] 4장) 역할, 책임, 협력

    학습 내용 역할, 책임, 협력에 대한 이해 협력 행동을 결정 하는 것은 협력이다. 협력의 구성 연쇄적인 요청과 응답 책임 어떤 대상의 요청은 그 대상이 요청을 처리할 책임을 가진다. 분류 하는 것 ( doing ) 객체 생성, 스스로 계산 다른 객체를 제어 아는 것 ( knowing ) 정보, 객체를 아는 것 자신이 유도하거나 계산할 수 있는 것에 아는 것 메시지 다른 객체에게 요청을 보내는 것 역할 책임의 집합을 역할 이라 한다. 추상화 된 책임 추상화로 인해 대체 가능한 역할 이 됨 정리 상태와 행위에 대해 고민하기 전에 협력을 먼저 고민 한 다음 협력 안에서 어떠한 책임과 역할을 수행 할 지 고민해라.

    [Book] 2장) 이상한 나라의 객체

    [Book] 2장) 이상한 나라의 객체

    책을 읽으며 저의 생각을 정리한겁니다. 오류가 있을 시 피드백 부탁드립니다. 학습내용 상태, 행동, 식별자에 대한 이해 객체의 의인화, 은유에 대한 이해 상태와 행동의 상호관계 객체의 행동은 상태에 영향을 받는다. 상태도 행동에 상태를 변화 시킨다. 왜? 책임 주도 설계가 나온것인가? 1강에서 설계를 한 것을 바탕으로 설명하자면 인바디라는 객체에 행동은 인바디를 계산해주는 것이다. 그러면 계산할때 어떤 상태가 필요할까?? 체지방률과 골견근량에 필요한 키와 몸무게, 회원이름을 출력해야할 이름도 필요하다. 이처럼 행동을 먼저 생각하고 상태가 뭐가 필요한지 생각을 해보면 설계할때 수정을 덜하고 편하다. 왜? 상태라는 개념이 나온것인가? 문제 -> 과거에 행동과 현재의 행동의 결과를 어떤 행동을 했는지 잘 알지..