반응형 STUDY/OOP5 독서 메모 | 객체지향의 사실과 오해 | 실제로 설계하고 구현해보기 "객체지향의 사실과 오해" 책을 읽으면서 메모한 글입니다. (07장) 개념 관점(Conceptual Perspective)에서 설계: 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 명세 관점(Specification Perspective)에서의 설계: 명세 관점은 도메인의 개념이 아니라 실제로 소프트웨어 안에서 살아 숨쉬는 객체들의 책임에 초점을 맞추게 된다. 즉 사용자 영역인 도메인을 벗어나 개발자 영역인 소프트웨어로 초점이 옮겨진다. 구현 관점(Implementaion Perspective): 실제 작업을 수행하는 코드, 즉 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것 지금까지 역할, 책임, 협력을 이용해 객체의 인터페이스를 식별했다. 협력에 참여하기 위해 객체가 수신해야.. 2023. 7. 24. 독서 메모 | 객체지향의 사실과 오해 | 객체지향의 안정적인 구조 설계 "객체지향의 사실과 오해" 책을 읽으면서 메모한 글입니다. (06장) 06. 객체 지도 기능을 중심으로 구조를 종속시키는 접근법은 범용적이지 않고 재사용이 불가능하며 변경에 취약한 모델을 낳게 된다. 반면에 안정적인 구조를 중심으로 기능을 종속시키는 접근법을 범용적이고 재사용 가능하면 변경에 유연하게 대처할 수 있는 모델을 만든다. 즉 객체지향 개발 방법은 안정적인 구조에 변경이 빈번하게 발생하는 기능을 종속시키는 방법과 유사하다. 이는 범용적이고 재사용성이 높으며, 변경에 안정적인 이점이 있다. 자주 변경되는 기능이 아니라 안정적인 구조를 따라 역할, 책임, 협력을 구성하라! 기능 설계 vs 구조 설계 설계의 가장 큰 도전은 기능과 구조라는 두 가지 측면을 조화롭게 만들어야 한다는 것이다. 기능 측면의.. 2023. 7. 12. 독서 메모 | 객체지향의 사실과 오해 | 책임과 메시지 "객체지향의 사실과 오해" 책을 읽으면서 메모한 글입니다. (05장) 05. 책임과 메시지 자율적인 책임 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 협력에 참여하는 객체가 얼마나 자율적인지가 전체 애플리케이션의 품질을 결정한다. 객체가 책임을 자율적으로 수행하기 위해서는 객체에게 할당되는 책임 역시 자율적이어야 한다. 또한 책임이 수행 방법을 제한할 정도로 구체적인 것도 문제지만 협력의 의도를 명확하게 표현하지 못할 정도로 추상적인 것 역시 문제다. 자율적인 책임의 특징은 객체가 어떻게(how) 해야 하는가가 아니라 무엇(what)을 해야 하는가를 설명한다는 것이다. 메시지와 메서드 메시지 하나의 객체는 메시지를 전송함으로써 다른 객체에 접근한다... 2023. 7. 7. 독서 메모 | 객체지향의 사실과 오해 | 역할, 책임, 협력 "객체지향의 사실과 오해" 책을 읽으면서 메모한 글입니다. (04장) 04. 역할, 책임, 협력 객체지향 설계의 전체적인 품질을 결정하는 것은 개별 객체의 품질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이다. 협력 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의한다. 책임 어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우 해당 객체가 책임을 가진다고 말한다. 책임의 분류 하는 것(doing) 객체를 생성하거나 계산을 하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 아는 것(knowing) 개인적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 .. 2023. 7. 7. 독서 메모 | 객체지향의 사실과 오해 | 객체, 타입, 추상화 '객체지향의 사실과 오해" 책을 읽으면서 메모한 글입니다. (01~03장) 01. 협력하는 객체들의 공동체 객체지향에 대해서 설명할 때 일반적으로 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임이라고 표현한다. 하지만 소프트웨어 객체와 실세계 사물 사이에 존재하는 연관성은 희미하다. 즉 객체지향의 목표는 실세계를 모방하는 것이 아니라, 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 시스템은 역할과 책임을 수행하는 객체로 분할되고 시스템의 기능은 객체 간의 연쇄적인 요청과 응답의 흐름으로 구성된 협력으로 구현된다. 객체지향 설계는 적절한 객체에게 적절한 책임을 .. 2023. 7. 7. 이전 1 다음 반응형