Book
-
[객체지향의 사실과 오해] 객체지향 설계의 관점과 추상화 기법Book/객체지향의 사실과 오해 2023. 3. 14. 17:17
객체지향 설계 관점 개념 관점(Conceptual Perspective) 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 사용자가 도메인을 바라보는 관점을 반영 실제 도메인의 규칙과 제약을 최대한 유사하게 반영 명세 관점(Specification Perspective) 사용자의 영역인 도메인을 벗어나 개발자의 영역인 소프트웨어로 초점 이동 도메인이 아닌 객체들의 책임에 초점 객체가 협력을 위해 무엇을 할 수 있는가에 초점 구현 관점(Implementation Perspective) 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것 객체의 책임을 어떻게 수행할 것인가에 초점 인터페이스를 구현하는데 필요한 속성과 메서드를 클래스에 추가 클래스의 공용 인터페이스는 명세 관점을 반영..
-
[객체지향의 사실과 오해] 기능과 구조의 통합Book/객체지향의 사실과 오해 2023. 3. 14. 16:11
기능설계 VS 구조설계 설도메인 모델계는 기능(function) 측면의 설계와 구조(structure) 측면의 설계로 구성 기능 측면의 설계는 제품이 사용자를 위해 무엇을 할 수 있는지 초점 구조 측면의 설계는 제품의 형태가 어떠해야 하는지에 초점 설계는 기능과 구조 두가지 측면을 녹여 조화를 이루도록 하는 것 변경되는 요구사항에 유연하게 대처할 수 있는 안정적인 구조를 갖춰야함 객체지향은 객체의 구조에 집중하고 기능이 객체의 구조를 따르게 함 기능과 구조 사용자에게 제공할 기능과 기능을 담을 안정적인 구조 기능은 사용자가 자신의 목표를 달성하기 위해 사용할 수 있는 시스템의 서비스 구조는 시스템의 기능을 구현하기 위한 기반으로, 기능 변경을 수용할 수 있도록 안정적 기법 구조는 사용자나 이해관계자들이 ..
-
[객체지향의 사실과 오해] 책임의 자율성을 통한 협력의 품질Book/객체지향의 사실과 오해 2023. 3. 14. 14:30
자율적인 책임 책임 객체지향 공동체는 자율적인 객체로 구성 자율적인 객체는 자신의 의지와 판단에 따라 맡은 책임을 수행하는 객체를 의미 객체가 자율적이기 위해선 객체에게 할당되는 책임의 수준 역시 자율적이어야 함 책임은 자율성을 보장할 정도로 포괄적이고 추상적이돼, 협력에 참여하는 의도를 명확하게 설명할 수 있는 수준안에서 추상적이어야 함 메시지와 메서드 메시지 객체는 메시지를 전송하여 다른 객체에 접근 메시지 이름(message name) : 객체가 요청하는 메시지 메시지 인자(argument) : 메시지에 포함되는 추가적인 정보 메시지 전송 수신자와 메시지(메시지 이름, 메시지 인자)의 조합 수신자.메시지 이름(메시지 인자) 어떻게가 아닌 무엇에 해당함 객체가 제공하는 메시지는 외부의 다른 객체가 볼..
-
[객체지향의 사실과 오해] 역할, 책임, 협력을 통한 객체지향 설계 이해Book/객체지향의 사실과 오해 2023. 3. 13. 16:20
역할, 책임, 협력 책임 객체가 요청에 대해 응답할 수 있거나, 적절한 행동을 할 의무가 있는 경우 객체의 책임은 '객체가 무엇을 알고있는가'와 '무엇을 할 수 있는가'로 구성 크레이그 라만 객체의 책임 분류 - '하는 것'과 '아는 것' 하는 것(doing) 객체를 생성하거나 계산을 하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 아는 것(knowing) 개인적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 책임은 객체의 외부에 제공해 줄 수 있는 정보(아는 것의 측면)와 외부에 제공해 줄 수 있는 서비스(하는 것의 측면)의 목록 책임은 객체의 공용 인터페이스(public interface)..
-
[객체지향의 사실과 오해] 추상화의 2가지 차원을 바탕으로 이해한 타입(type)Book/객체지향의 사실과 오해 2023. 3. 10. 17:21
추상화 추상화를 통한 복잡성 극복 현실세계에서 불필요한 정보를 무시하여, 목적에 부합하도록 단순하게 만들어야함 추상화 어떤 양상, 세부 사항, 구조를 좀 더 명확하게 이해하기 위해 특정 절차나 물체를 의도적으로 생략하거나 감춤으로써 복잡도를 극복하는 방법 추상화의 2가지 차원 - 구체적인 사물들 간의 공통점을 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것 - 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것 모든 경우에 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것 -77P. 추상화 정의- 개념(concept) 공통점을 기반으로 객체들을 묶기 위한 그릇 일반적으로 다양한 사물이나 객체에 적용할 수 있는 아이디어나 관념 개념을 이용하면 객체를 여러..
-
[객체지향의 사실과 오해] 객체에 대해서Book/객체지향의 사실과 오해 2023. 3. 9. 21:57
객체 객체는 상태를 가지며 상태는 변경 가능 상태를 변경시키는 것은 객체의 행동 행동의 결과는 상태에 의존적이며, 상태를 이용해 서술할 수 있음 행동의 순서가 결과에 영향 객체가 어떤 상태에 있더라도 유일하게 식별 가능 객체 식별 가능한 개체 또는 사물. 객체는 구체적인 사물일 수도, 추상적인 개념일 수도 있음. 객체는 구별 가능한 식별자, 특징적인 행동, 변경가능한 상태를 가짐. 소프트웨어 안에서 객체는 저장된 상태와 실행 가능한 코드를 통해 구현됨. -47P. 객체 정의- 상태 상태는 과거 했던 행동의 결과 상태를 이용하면 과거에 얽매이지 않고 현재를 기반으로 객체의 행동 방식을 이해할 수 있음 상태를 이용하면 과거의 모든 행동 이력을 설명하지 않고도 행동의 결과를 쉽게 예측하고 설명할 수 있음 상태..
-
[객체지향의 사실과 오해] 역할, 책임, 협력 관점의 객체지향Book/객체지향의 사실과 오해 2023. 3. 7. 16:16
역할, 책임, 협력 관점 객체지향 실세계에서 사람들은 협력을 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행 1. 여러사람이 동일한 역할 수행 가능 역할에 따르는 책임을 수행할 수 있다면 다른 사람이 수행 가능 2. 역할은 대체가능성을 의미 동일한 역할을 수행할 수 있다면 요청자는 누가 역할을 수행하는지 문제되지 않음 3. 책임을 수행하는 방법은 자율적으로 선택 가능 요청을 받은 사람들은 요청을 처리하는 방법을 자유롭게 선택 동일한 요청에 대해서 역할을 수행하는 사람마다 다른방식으로 처리할 수 있음 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있는 능력을 다형성(polymorphism) 4. 한사람이 동시에 여러 역할을 수행 가능 한사람이 동시에 둘 이상의 역할을 수행할 수 있음 객체 객체지향 ..
-
[객체지향의 사실과 오해] 서문Book/객체지향의 사실과 오해 2023. 3. 7. 14:17
책이 전달하고자 하는 바를 잊지 않도록 작가의 의도를 정리 객체지향이란 일반적인 객체지향의 특징 추상화, 캡슐화, 상속, 다형성 SQLID 디자인 패턴 등등 책에서 말하는 객체지향 클래스가 아니라 객체를 바라보는 것 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것 협력에 참여하는 객체들에게 적절한 역할과 책임을 부여하는 것 위의 개념을 프로그래밍 언어라는 틀에 담아내는 기술을 익히는 것 목차 1. 협력하는 객체들의 공동체 객체지향 패러다임의 핵심은 자율적인 객체들의 협력 2. 이상한 나라의 객체 객체란 무엇인가 객체는 상태와 행동, 식별자를 가진 존재 3.타입과 추상화 객체지향 패러다임에서 가장 널리 사용하는 추상화 추상화는 동적인 객체들을 단순화시켜 정적인 타입..