주제내용SOLIDSRP (Single Responsibility Principle) - 단일책임원칙OCP (Open Closed Principle) - 개방 폐쇄 원칙 LSP (Liskov Substitution principle) - 리스코프 치환 원칙ISP (Interface Segregation Principle) - 인터페이스 분리 법칙DIP (Dependency Inversion) - 의존성 역전 원칙
주제
- SOLID 에 대해 알아봅시다.
내용

SOLID
- 5가지 소프트웨어 개발 원칙
- 확장 및 유지 보수가 더 쉽도록 소프트웨어를 구축할 때 따라야 하는 지침
- Robert C. Martin 정의
// 케이스 마다 사진 추가
SRP (Single Responsibility Principle) - 단일책임원칙
- 모듈을 변경할 이유가 하나뿐이어야 한다.
- 로버트 C 마틴이 말하는 모듈
- 함수와 데이터 구조로 응집된 집합
OCP (Open Closed Principle) - 개방 폐쇄 원칙
- 소프트웨어 요소들은 확장에 열려있어야 하고, 변경에는 닫혀있어야한다.
- 클래스에 더 많은 기능을 부여하고 싶다면, 가장 이상적인 접근방법은 기존 기능을 변경하는것이 아닌 새로운 함수를 추가하는 것
- 목적
- 클래스의 존재하는 기능의 변경 없이 해당 클래스의 기능을 확장시키는 것 입니다. 이로인해 사용중인 클래스의 변경으로 인한 버그 발생을 피할 수 있습니다.
LSP (Liskov Substitution principle) - 리스코프 치환 원칙
- S가 T의 서브타입이라면, T는 어떠한 경고도 내지 않으면서, S로 대체가 가능합니다.
- 즉, 자식 클래스는 부모 클래스가 할 수 있는 모든 것을 할 수 있어야 한다.
- 서브 클래스는 기반 타입이 약속한 규약을 지켜야한다.
ISP (Interface Segregation Principle) - 인터페이스 분리 법칙
- 클라이언트는 사용하지 않는 메서드에 대해 의존적이지 않아야 한다.
- 목적
- 액션 집합을 더 작은 액션 집합으로 쪼개서, 클래스가 필요한 액션들만 실행할 수 있도록 하는 것
- vehicle interface에 fly() 가 있는데, bike 클래스가 fly 메서드가 필요한가?
DIP (Dependency Inversion) - 의존성 역전 원칙
- 추상은 구체에 의존하지 않아야 하며, 구체는 추상에 의존적이어야 한다.
- 고수준의 모듈은 저수준의 모듈에 의존적이면 안되고, 둘다 추상에 의존적이어야 한다.
- 고수준 모듈 (또는 클래스): 도구와 함께 동작하는 클래스.
- 저수준 모듈 (또는 클래스): 수행하기 위한 도구.