티스토리 뷰
객체지향 5원칙
- 시간이 지나도 변경이 용이하고 유지보수와 확장이 쉬운 소프트웨어 개발 가능
- 복잡성을 제거해 개발의 생산성을 높일 수 있음
- 5개 모두 반드시 적용해야 할 필요는 없으며 특정 문제를 해결하기 위한 지침
1) 단일 책임 원칙 (Single Responsibility Principle)
- 하나의 클래스는 하나의 기능(책임)만 가져야 한다.
- 즉, 하나의 기능에 대해서만 책임을 져야 한다.
- 하나의 클래스에서 여러 개의 기능이 있다면 수정 사항이 발생했을 때, 수정해야 하는 부분이 많아진다.
- 하지만 하나의 클래스에서 하나의 기능만 있다면 수정해야 할 부분이 적어져 유지보수에 도움이 된다.
- 높은 응집도와 낮은 결합도
2) 개방 폐쇄 원칙 (Open Closed Principle)
- 확장에는 열려 있고(open) 수정에는 닫혀(close) 있어야 한다.
- 즉, 기본 코드를 변경하지 않으면서 기능을 수정, 추가할 수 있도록 설계
- 추상화를 활용하여 기능 확장을 도모
3) 리스코프 치환 원칙 (Liskov Substitution Principle)
- 하위 클래스가 상위 클래스를 대체할 수 있다.
- 즉, 하위 클래스를 업캐스팅 한 상태에서 상위 클래스를 사용해도 동작이 의도대로 흘러가야 한다.
- 하위 클래스는 상위 클래스를 상속 받고 오버라이딩을 과하게 하지 않는다.
- 다형성의 원리
4) 인터페이스 분리 원칙 (Interface Segregation Principle)
- 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다.
- 즉, 인터페이스에 범용적인 기능을 많이 넣기 보다 사용에 맞게끔 분리
- 인터페이스에 너무 많은 기능이 있을 경우 상속 받은 클래스는 사용하지 않는 기능도 억지로 구현해야 하는데 이러한 상황을 방지
5) 의존 역전 원칙 (Interface Segregation Principle)
- 의존 관계를 맺을 때 변화하기 쉬운 것보다 변화하기 어려운 것에 의존하라는 의미
- 즉 클래스를 직접 참조하는 것보다는 상위 요소(추상 클래스, 인터페이스)를 참조하라는 것
'TIL' 카테고리의 다른 글
07월 24일: 엑스코드 단축키 (0) | 2023.07.24 |
---|---|
7월 21일: swift) 천 단위마다 콤마 찍기 (0) | 2023.07.21 |
7월 19일: 객체지향 프로그래밍의 4가지 특징 (0) | 2023.07.19 |
7월 18일: swift)클래스와 구조체의 차이 (0) | 2023.07.18 |
7월 17일: 스택stack / 큐queue (0) | 2023.07.17 |
최근에 올라온 글