Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
[객사오] Chapter 7
- 객체지향 설계 안에 존재하는 세가지 연관된 관점
- 개념 관점: 도메인 안에 존재하는 개념과 개념들 사이의 관계 표현
- 명세 관점: 객체가 협력을 위해 무엇을 할 수 있는가에 초점
- 구현 관점: 실제 작업을 수행하는 코드를 작성하는 것
커피 주문 설계
- 메뉴 항목은 메뉴판에 포함된다 =
포함관계 - 손님 타입은 메뉴판 타입을 알고 있어야 원하는 커피를 선택할 수 있다.
- 한 타입의 인스턴스가 다른 타입의 인스턴스를 포함하지 않지만 서로 알고 있어야 한다.
연관관계
설계하고 구현하기
- 메시지가 객체를 선택하게 해야 한다.
- 메시지 선택 → 메시지를 수신하기 적절한 객체 선택
- 메시지를 수신할 객체 = 메시지를 처리할 책임
- 객체가 수신하는 메시지는 객체가 외부에 제공하는 공용 인터페이스에 포함
인터페이스 정리
- 객체가 수신한 메시지 → 객체의 인터페이스
- 객체를 협력이라는 문맥에서 떼어내어 수신 가능한 메시지만 추려냄 → 인터페이스
구현
- 인터페이스 식별 이후 메서드 구현
코드의 3가지 관점
- 개념 관점
- 도메인을 구성하는 중요한 개념과 관계 반영
- 명세 관점
- 클래스의 인터페이스
- 변화에 안정적인 인터페이스 = 인터페이스를 통해 구현과 관련된 세부사항이 없어야 한다.
- 구현 관점
- 클래스 내부 구현
- 메서드의 구현과 속성의 변경은 외부 객체에게 영향을 미쳐서는 안된다.
- 메서드와 속성이 클래스 내부로 캡슐화 되어야 한다.