본문 바로가기
Programming/OOP

객체지향의 5대 원칙 SOLID

by Teshub 2021. 1. 16.

 

OOP의 5대 원칙
SRP (단일 책임 원칙)
OCP (개방, 폐쇄 원칙)
LSP (리스코프 치환 원칙)
ISP (인터페이스 분리 원칙)
DIP (의존 역전 원칙)

Single Responsiblity Principle (단일 책임 원칙)

- 소프트웨어의 메소드,함수,클래스는 단 하나의 기능(책임)만을 가져야한다-

응집도는 높고 결합도는 낮은 프로그램
한 클래스가 수행할수있는 기능이 많아지면 클래스 내부의 함수끼리 강한 결합이 발생할 가능성이 높아진다
이는 유지보스에 비용이 증가하게 되므로 따라서 책임을 분리시킬 필요가 있다.

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

- 기존의 코드를 변경하지않고 기능을 수정하거나 추가할수 있도록 설계를 해야한다-

OCP에 만족하는 설계를 할 때 변경되는것이 무엇인지에 초점을 맞춘다.
자주 변경되는 내용은 수정하기 쉽게 설계, 변경되지 않아야하는 것은 수정되는 내용에 영향을 받지않게한다
이를 위해 자주 사용되는 문법이 인터페이스이다.


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

- 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다.

부모 클래스와 자식 클래스 사이의 행위에는 일관성이 있어야 한다는 원칙이며 이는 객체지향 프로그래밍에서 부모 클래스의 인스턴스 대신 자식 클래스의 인스터스를 사용해도 문제가 없어야한다는것을 의미한다

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

-  클래스에서 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다는, 여러 개의 구체적인 인터페이스가 낫다.

자신이 사용하지 않는 기능에는 영향을 받지 말아야 한다는 의미이다.

핸드폰에 웹서핑 사진촬영이 있지만 전화할때는 다른기능을 사용하지않는다
따라서 기능별로 독립적인 인터페이스를 구현한다 서로에게 영향받지 않도록 설계해야한다

Dependency Inversion Principle (의존 역전 원칙)

- 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다는 원칙이다.

DIP를 만족한다는 것은 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺는다는 것을 의미한다.
의존성주입이라는 기술로 변화를 유연한 설계를 가능하다

728x90

'Programming > OOP' 카테고리의 다른 글

객체지향의 특징 4가지  (0) 2021.01.16

댓글