본문 바로가기

OOP

[OOP] OOP의 5원칙

1. OOP(Object-Oriented Programming)란

프로그램 설계방법론이자 개념의 일종으로, 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라 프로그램을 수많은 객체(object)라는 기본 단위로 나눠서 이들의 상호작용으로 프로그래밍하는 방식이다.

 

이러한 OOP에서 꼭 지켜야 할 5개의 원칙을 객체지향 5원칙이라 한다.

 

2. 객체지향 5원칙

SPR(단일 책임 원칙, Single Responsibility Principle)

: 객체는 오직 하나의 책임을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.

 

OCP(개방-폐쇄 원칙, Open-Closed Principle)

: 객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙이다. 즉, 객체 기능의 확장을 허용하고 스스로의 변경은 피해야 한다.

 

LSP(리스코프 치환 원칙, Liskov Substitution Principle)

: 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다. 즉 부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다는 것이다. 

 

ISP(인터페이스 분리 원칙, Interface Segregation Principle)

: 클라이언트에서 사용하지 않는 메서든느 사용해선 안 된다. 그러므로 인터페이스를 다시 작게 나누어 만든다. OCP와 비슷한 느낌도 들지만 엄연히 다른 원칙이다. 하지만 ISP를 잘 지키면 OCP도 잘 지키게 될 확률이 증가한다.

 

DIP(의존성 역전 원칙, Dependency Inversion Principle)

: 추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해선느 안 된다는 원칙으로서, 일반적으로 객체지향의 인터페이스를 통해서 이 원칙을 준수할 수 있게 된다. 상대적으로 고수준인 클라이언트는 저수준의 클래스에서 추상화한 인터페이스만을 바라보기 때문에 이 인터페이스를 구현한 클래스는 클라이언트에 어떤 변경도 없이 얼마든지 나중에 교체될 수 있다.