티스토리 뷰
🚀 OOP를 올바르계 설계해 나가는 원칙
OOP의 4대 특성 캡슐화
, 상속
, 추상화
, 다형성
은 객체지향 프로그래밍을 이어가는 동안 사용할 Tool
같은 역할이 된다.
도구가 있다면 용도에 맞게 사용해야하는데 요리를 하면 표준에 있듯이 OOP 세계에서도 원칙이라는 것이 존대한다.
OOP
를 기반으로 설계하는 방식을 OOD (Object Oriented Design)
이라고 하며
설계 방법을 구체화 하여 정리한 원칙이 SOLID
가 되는 것이다.
🌠 SOLID
원칙이 탄생한 것은 높은 응집도와 낮은 결합도 목표로 로버트 C.마틴
이 확립한 개념이다.
☄ DIP(Dependency Inversion Principle) : 의존 역전 원칙
자신보다 변하기 쉬운 것에 의존하지 마라
아래 그림에서는 자동차 클래스
가 스노우 타이어 클래스
에 의존하는 것을 볼 수 있다.
만일 스노우타이어의 타이어를 교체해 주는 경우 코드를 어떻게 짜야만 할까?
해당 클래스를 모두 지우고 새로운 브랜드로 교체하는 방법은 매우 번거로운 활동이다.
때문에 우리는 타이어를 인터페이스
로 만들고
각 브랜드 타이어의 특징만을 하위 클래스에서 구현한다면 코드의 확장성
, 유연성
을 가져갈 수 있을 것이다.
이제 자동차 클래스
는 변하기 어려운 타이어 인터페이스
에 의존하게 되었다.
이처럼 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나
상위 클라스를 두어 변하기 쉬운 것의 변화에 영향을 받지 않게 하는 것이 의존 역전 원칙이다.
☄ OCP(계방 - 폐쇄 원칙) 과 다른것은?
DIP원칙
의 설계는 OCP와 크게 다르지 않다. 그러나 개발자가 보아야할 포인트는 OCP와 DIP의 차이가 아닌
최초 변하기 쉬웠던 스노우 타이어
클래스를 의존하던 자동차 클래스를
타이어 인터페이스
를 구현하는 것으로
그 의존 관계가 역전 되었다는 것에 초점을 두어야한다.
🧾 Reference
'프로그래밍 언어 > C(C언어)' 카테고리의 다른 글
[C언어] 최소한 조건문은 알아야 게임을 만들지! (0) | 2018.01.27 |
---|---|
[C언어] 변수에 직접 입력하기 (0) | 2018.01.23 |
[C언어] 이번에는 소수로 표현해보자 실수 자료형 (0) | 2018.01.16 |
[C언어} 자료형의 종류와 쓰임 (0) | 2018.01.12 |
[C언어] 값에도 신분증이 있다? 변수 입력 (0) | 2018.01.10 |
- Total
- Today
- Yesterday
- interview
- docker
- Algorithm
- Spring
- 그래프
- 스프링부트
- ajax
- security
- JPA
- 자바
- 알고리즘
- Solid
- 스프링
- C언어
- 백준
- 면접
- spring-cloud
- 매트랩
- Matlab
- 자격증
- kakao
- springboot
- CS
- 수학
- 디자인패턴
- 릿코드
- nginx
- OOP
- 프로그래머스
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |