SOLID 원칙
- Single Responsibility Principle(SRP) : 단칠 책임 원칙
- Open-Closed Principle(OCP) : 개방, 폐쇄 원칙
- Liskov Substitution Principle(LSP) : 리스코프 치환 원칙
- Interface Segregation Principle(ISP) : 인터페이스 분리 원칙
- Dependency Inversion Principle(DIP) : 의존성 역전 원칙
단일 책임 원칙(SRP)
- 클래스는 한가지 기능만 수행해야 하고, 한가지 이유로만 변경해야 한다
- 컴포지션, 어그리게이션 -> 각 클래스를 객체화로 사용
개방, 폐쇄 원칙(OCP)
- 확장에 열려있고, 수정에 닫혀있어야 한다
- 새 기능 추가시 기존 코드를 수정하지 않고, 새 클래스를 추가하는 방식으로 구현
- 추상클래스
-> monster 클래스에 attack_special 정의
-> monster_a에서 monster 상속 받아서 새로 정의 (인탱글, 가상 등등)
리스코프 치환 원칙(LSP)
- 자식 클래스는 부모 클래스를 완전히 대체할 수 있어야 한다
- is-a 관계
- 부모로 업캐스팅 후에도 프로그램이 올바르게 동작해야 함
인터페이스 분리 원칙(ISP)
- 인터페이스는 작고 섬세해야 하고, 클래스는 필요한 인터페이스만 구현해야 함
- SRP를 인터페이스에 적용한것
- 사요하지 않는 인터페이스를 강제로 구현하게 해서는 안됨
의존성 역전 원칙(DIP)
- 상위 수준 모듈은 하위 수준의 모듈에 의존해서는 안 되며 상위, 하위 수준 모두 추상레이어(인터페이스)에 의존해야 함
- 개방, 폐쇠 원칙(OCP)을 적용하기 위해 사용
- C++에서는 추상 클래스와 인터페이스로 구현
- 캐릭터 -> 플레이어(클래스) -> 탈것 / 무기 (인터페이스 / 추상클래스)