일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 독서일지
- 헤드퍼스트
- 코딩
- 객체지향프로그래밍
- docker
- 디자인패턴
- IntelliJ
- 성수직장인
- Linux
- 상속
- 책읽기
- 독서
- JAVA개발자
- DesignPattern
- Java
- JavaScript
- 오브젝트
- 책너두
- 성수
- 클린코드
- 직장인
- 성수볼거리
- 직장인점심
- 헤드퍼스트디자인패턴
- 성수맛집
- 개발자
- 주니어개발자
- 깨끗한코드
- 성수핫플
- 객체지향
- Today
- Total
닭발개발
[오브젝트] 9일차. 108-118pg | 캡슐화, 응집도, 결합도 본문
[오브젝트] 9일차. 108-118pg | 캡슐화, 응집도, 결합도
D269 2023. 7. 5. 14:149일차.
오브젝트: 코드로 이해하는 객체지향 설계[2주차_수요일]
108-118pg
#요약
**Chapter 04. 실제 품질과 트레이드오프**
2) 영화를 예매하자
02. 설계 트레이드오프
1) 캡슐화
- 한 곳에서 일어난 변경이 전체 시스템에 영향을 끼치지 않도록 파급효과를 적절하게 조절할 수 있는 장치 제공
- 변경될 가능성이 높은 부분은 구현, 상대적으로 안정적인 부분은 인터페이스
2) 응집도와 결합도
- 응집도 : 모듈에 포함된 내부 요소들이 연관돼 있는 정도를 나타냄
- 모듈 내의 요소들이 하나의 목적을 위해 긴밀하게 협력한다면 그 모듈은 높은 응집도를 가진다.
- 변경의 관점에서 응집도란 변경이 발생할 때 모듈 내부에서 발생하는 변경의 정도로 측정할 수 있다.
- 응집도가 높을수록 변경의 대상과 범위가 명학해지기 때문에 코드를 변경하기 쉬워진다.
- 결합도 : 의존성의 정도를 나타내며 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 나타내는 척도.
- 결합도는 한 모듈이 변경되기 위해서 다른 모듈의 변경을 요구하는 정도로 측정할 수 있다.
- 캡슐화를 지키면 모듈 안의 응집도는 높아지고 모듈 사이의 결합도는 낮아진다.
03. 데이터 중심의 영화 예매 시스템의 문제점
1. 캡슐화 위반
2. 높은 결합도
3. 낮은 응집도
1) 캡슐화 위반
- 추측에 의한 설계전략 : 접근자와 수정자에 과도하게 의존하는 설계 방식 : 객체가 사용될 협력을 고려하지 않고 객체가 다양한 상황에서 사용될 수 있을 것이라는 막연한 추측을 기반으로 설계를 진행한다.
2) 높은 결합도
- 객체 내부의 구현이 객체의 인터페이스에 드러난다는 것은 클라이언트가 구현에 강하게 결합된다는 것이다.
- 데이터 중심 설계는 객체의 캡슐화를 약화시켜 클라이언트가 객체의 구현에 강하게 결합된다.
3) 낮은 응집도
- 서로 다른 이유로 변경되는 코드가 하나의 모듈 안에 공존할 때
- 단일 책임 원칙(Single Responsibility Principle, SRP) : 클래스는 단 한 가지의 변경 이유만 가져야 한다는 것.
04. 자율적인 객체를 향해
1) 캡슐화를 지켜라
- 객체는 자신이 어떤 데이터를 갖고 있는지 내부에 캡슐화하고 외부에 공개하면 안됨.
- 속성의 가시성을 private으로 설정했다고 해도 접근자와 수정자를 통해 속성을 외부로 제공하고 있다면 캡슐화를 위반하는 것이다.
#발췌
동일한 객체라고 하더라도 객체가 참여하는 협력에 따라 객체의 얼굴은 계속해서 바뀌게 된다.
코드를 완성한 그 순간부터 코드를 수정할 준비를 해야 한다.
'책책책 책을 읽읍시다‼ ver.개발 > [ 오브젝트: 코드로 이해하는 객체지향 설계 ]' 카테고리의 다른 글
[오브젝트] 13일차. 156-171pg | 다형성, 변경보호, 리팩토링, 메소드 응집도 (0) | 2023.07.10 |
---|---|
[오브젝트] 12일차. 141-155pg | GRASP패턴, 낮은 결합도, 높은 응집도, 창조자패턴 (0) | 2023.07.10 |
[오브젝트] 8일차. 92-107pg | 객체의 역할, 데이터 중심 설계 (0) | 2023.07.04 |
[오브젝트] 7일차. 78-91pg | 객체의 책임, 역할 (0) | 2023.07.03 |
[오브젝트] 6일차. 65~77pg | 추상화, 상속, 협력 (0) | 2023.07.01 |