객체지향의 사실과 오해 정리
◎ 자율적인 책임이 자율적인 객체와 유연한 설계를 낳는다.
◎ 객체지향은 안정적인 도메인 구조에 불안정한 기능을 통합한 것이다.
◎ 객체가 메시지를 선택하는 것이 아니라 메시지가 객체를 선택하게 해야 한다
[ 참고 블로그]
https://techblog.woowahan.com/2502/
▣ 01장: 협력하는 객체들의 공동체
역할, 책임, 협력
협력 속에 사는 객체( 객체는 상태와 행동을 함께 지닌 자율적인 존재이며, 협력과 메시지를 통해 다른 객체와 상호작용합니다. )
객체를 중심으로 설계된 프로그램은 유연하고 확장성이 높으며, 코드의 재사용성이 높아집니다.
▣ 02장: 이상한 나라의 객체
객체지향과 인지 능력에 대해 논의 : 객체지향 프로그래밍은 인간의 인지 능력과 유사한 방식으로 객체를 이용하여 문제를 해결하는 것이 특징입니다.
객체는 상태, 행동, 식별자를 가지며, 이는 소프트웨어에서 객체의 속성, 메서드, 변수 등과 관련이 있습니다.
객체를 기계로서 바라보는 시각에 대해 다루며, 객체의 행동이 상태를 결정한다는 개념을 소개합니다.
▣ 03장: 타입과 추상화
추상화를 통한 복잡성 극복에 대해 설명하며, 객체지향이 추상화를 이용하여 복잡한 문제를 해결하는 방식임을 강조합니다.
다음으로, 객체지향과 추상화에 대해 논의합니다. 객체지향은 개념에 대한 추상화와 이를 이용한 객체 모델링이 중요합니다. 객체를 그룹으로 나누어 단순화하고, 이를 통해 추상화된 개념을 생성합니다. 또한, 객체를 분류하기 위한 틀인 클래스를 이용하여 개념을 표현합니다.
그리고, 타입에 대해 다룹니다. 타입은 개념이며, 데이터 타입과 객체와의 관계에 대해 설명합니다. 행동이 우선이 되는 객체지향에서는 행동을 통해 타입이 결정됩니다.
타입의 계층에 대해서도 다루며, 트럼프 계층, 일반화/특수화 관계, 슈퍼타입과 서브타입에 대해 설명합니다. 일반화는 추상화를 위한 도구임을 강조합니다.
마지막으로, 정적 모델과 클래스에 대해 다루며, 타입의 목적과 추상화의 의미를 설명합니다. 또한, 동적 모델과의 차이를 이해하기 위해 정적 모델과 클래스에 대한 개념을 소개합니다.
▣ 04장: 역할, 책임, 협력
먼저, 협력에 대해 설명하며, 요청과 응답으로 협력하는 사람들의 예시를 들고, 협력의 중요성을 강조합니다.
다음으로, 책임에 대해 다루며, 책임의 분류와 메시지와의 관계에 대해 설명합니다.
그리고, 역할에 대해 다루며, 책임의 집합으로서의 역할과 판사와 증인의 예시를 들어 설명합니다. 또한, 역할의 추상화와 대체 가능성에 대해서도 다룹니다.
객체의 모양을 결정하는 협력에 대해서도 다루며, 객체의 책임이 협력을 따라 흐르도록 설계하는 것의 중요성에 대해 강조합니다.
마지막으로, 객체지향 설계 기법에 대해 다루며, 책임-주도 설계, 디자인 패턴, 테스트-주도 개발 등의 기법에 대해 설명합니다. 이러한 기법들을 이용하여 객체지향 시스템을 설계하면, 유지보수와 확장이 쉬운 유연한 시스템을 만들 수 있습니다.
▣ 05장: 책임과 메시지
먼저, 자율적인 책임에 대해 다루며, 설계의 품질을 좌우하는 책임과 책임이 자율적일 때의 장점에 대해 강조합니다. 또한, 책임의 추상화를 지나치게 하지 않고 구체적으로 정의해야 한다는 것과 책임을 자극하는 메시지를 활용해야 한다는 것에 대해 다룹니다.
다음으로, 메시지와 메서드에 대해 다루며, 메시지와 메서드의 차이와 다형성의 개념에 대해 설명합니다. 또한, 유연하고 확장 가능하며 재사용성이 높은 협력을 구현하는 방법으로서, 메시지를 활용하는 것의 중요성을 강조합니다.
메시지를 따라가는 것의 중요성에 대해서도 다루며, 객체지향의 핵심인 메시지와 책임-주도 설계에 대해 살펴보고, 메시지를 묻지 말고 시켜야 한다는 원칙과 메시지를 믿어야 한다는 것을 강조합니다.
객체 인터페이스에 대해서도 다루며, 인터페이스와 메시지의 관계와 공용 인터페이스의 중요성에 대해 설명합니다. 또한, 책임과 메시지, 그리고 인터페이스의 관계에 대해서도 다룹니다.
05장은 객체지향 프로그래밍에서 중요한 개념인 "책임과 메시지"에 대해 다룹니다.
먼저, 자율적인 책임에 대해 다루며, 설계의 품질을 좌우하는 책임과 책임이 자율적일 때의 장점에 대해 강조합니다. 또한, 책임의 추상화를 지나치게 하지 않고 구체적으로 정의해야 한다는 것과 책임을 자극하는 메시지를 활용해야 한다는 것에 대해 다룹니다.
다음으로, 메시지와 메서드에 대해 다루며, 메시지와 메서드의 차이와 다형성의 개념에 대해 설명합니다. 또한, 유연하고 확장 가능하며 재사용성이 높은 협력을 구현하는 방법으로서, 메시지를 활용하는 것의 중요성을 강조합니다.
메시지를 따라가는 것의 중요성에 대해서도 다루며, 객체지향의 핵심인 메시지와 책임-주도 설계에 대해 살펴보고, 메시지를 묻지 말고 시켜야 한다는 원칙과 메시지를 믿어야 한다는 것을 강조합니다.
객체 인터페이스에 대해서도 다루며, 인터페이스와 메시지의 관계와 공용 인터페이스의 중요성에 대해 설명합니다. 또한, 책임과 메시지, 그리고 인터페이스의 관계에 대해서도 다룹니다.
인터페이스와 구현의 분리에 대해서도 다루며, 객체 관점에서 생각하는 방법과 캡슐화와의 관계에 대해 설명합니다. 또한, 인터페이스와 구현의 분리 원칙과 책임의 자율성이 협력의 품질을 결정한다는 것을 강조합니다.
▣ 06장: 객체 지도
먼저, 기능 설계와 구조 설계의 차이에 대해 다루며, 두 가지 재료인 기능과 구조의 중요성에 대해 설명합니다. 특히, 구조는 안정적인 재료로서 중요하다는 것을 강조합니다.
다음으로, 안정적인 재료인 구조에 대해 다루며, 도메인 모델과 객체지향의 표현적 차이를 강조하고, 불안정한 기능을 담는 안정적인 도메인 모델의 중요성을 설명합니다.
그리고, 불안정한 재료인 기능에 대해서도 다루며, 유스케이스와 그 특성, 그리고 설계 기법이나 객체지향 기법이 아닌 것으로 설명합니다.
마지막으로, 기능과 구조를 결합하는 방법에 대해 다룹니다. 도메인 모델, 유스케이스, 그리고 책임-주도 설계를 이용하여 기능과 구조를 결합하는 방법을 설명하고, 기능 변경을 흡수하는 안정적인 구조의 중요성을 강조합니다.
▣ 07장: 함께 모으기
그리고, 코드와 세 가지 관점에 대해 다룹니다. 코드는 도메인 개념, 인터페이스, 구현의 세 가지 관점을 모두 제공해야 한다는 것을 강조하고, 도메인 개념을 참조하는 이유와 인터페이스와 구현을 분리하는 방법을 설명합니다.
.
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
Java 코딩테스트 (0) | 2023.04.27 |
---|---|
Java 코딩테스트 (0) | 2023.04.17 |
1일 1로그 100일 완성 IT 지식 정리(브라이언 W. 커니핸) (0) | 2023.04.17 |
Java/Spring 기반 서비스 개발과 MSA 구축 (0) | 2023.03.23 |
Kubernetes 학습(chatGPT answer) (0) | 2023.03.22 |