객체 지향 프로그래밍의 5가지 원칙

오늘 날씨는 야옹·2024년 1월 22일
0

C++

목록 보기
2/8

OOP의 5가지 원칙

  • 단일 책임 원칙 (SRP: Single Responsibility Principle)
  • 개방 폐쇄 원칙 (OCP: Open/Closed Principle)
  • 리스코프 치환 원칙 (LSP: Liskov's Substitution Principle)
  • 인터페이스 분리 원칙 (ISP: Interface Segregation Principle)
  • 의존관계 역전 원칙 (DIP: Dependency Inversion Principle)

이를 다 따서 SOLID 원칙이라고 함.
이 원칙을 적용하면, 코드를 확장하고 유지보수 관리하기가 쉬워지며, 복잡성을 제거할 수 있음.


단일 책임 원칙 (SRP)

한 클래스는 하나의 책임만 가져야 한다.


개방 폐쇄 원칙 (OCP)

확장에는 열려 있어야 하며, 수정에는 닫혀 있어야 함.
=> 추상화 사용을 통한 관계 구축을 권장하는 것

OOP의 다형성과 관련이 있으며, 인터페이스/Override/상속 등을 활용하여 기능 추가를 쉽게 만듦.


리스코프 치환 원칙 (LSP)

상위 타입의 객체를, 상속받은 하위 타입의 객체로 치환 가능해야 하며, 잘 동작해야 함.
즉, 다형성에서 하위 클래스는 인터페이스 규약을 모두 지켜야 함.


인터페이스 분리 원칙 (ISP)

인터페이스를 사용할 때, 거대한 인터페이스가 아닌 작은 인터페이스를 사용하는 게 좋음.

  • 거대한 인터페이스를 사용할 경우 => 사용 불가하거나 의미 없는 인터페이스까지 사용하고, 의존하게 됨 => 불안정한 코드, 가독성에도 좋지 않음.

때문에 작고, 꼭 필요한 인터페이스만 사용


의존관계 역전 원칙 (DIP)

객체들 간 의존 관계는 있을 수밖에 없는데...
상위 계층과 하위 계층의 의존 관계를 반전(역전)시킴으로써, 상위 계층이 하위 계층의 구현으로부터 독립되게 함.

  • 상위 모듈은 하위 모듈에 의존해서는 안 된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다.
  • 추상화는 세부 사항에 의존해서는 안 된다. 세부사항이 추상화에 의존해야 한다.

즉, 상위 객체와 하위 객체 모두 동일한 인터페이스(추상화)에 의존하게 함
=> 의존성을 인터페이스에 걺으로써, 유지보수에 용이하게 함.


참고

그리고 예제 같은 경우 이분 블로그가 이해하기 너무너무 좋다

0개의 댓글