객체지향 개발 5대 원리 : SOLID

|

객체지향 개발 5대 원리 SOLID



1. SRP (단일책임의 원칙: Single Responsibility Principle) 

 : HERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE.


 클래스를 변경하는 이유는 단 하나의 이유여야 합니다. 클래스에 여러가지의 기능이 포함되어 있다면 클래스를 분리해서 새로운 기능을 사용하는 클래스를 만들어야 합니다. 




2.OCP (개방폐쇄의 원칙: Open Close Principle) 

: YOU SHOULD BE ABLE TO EXTEND A CLASSES BEHAVIOR, WITHOUT MODIFYING IT.


 확장(상속)에는 열려있고 변경하는것에는 닫혀있어야 한다. 공통된 기능을 추상화해서 상위단계로 올려서 인터페이스나 추상객체를 만들고 하위에서는 그것을 상속받거나 구현해서 목적에 맞게 상세한 기능을 구현한다. 프로그램은 최대한 추상화된 클래스를 사용함으로써 신규 하위클래스나 변경에 종속되어서는 안된다. 변경될것과 변하지 않을 것을 구분해서 변하는 것을 인터페이스로 정의하고 하위 클래스에서는 인터페이스를 구현한다.




3. LSP (리스코브 치환의 원칙: The Liskov Substitution Principle) 

:FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT.


 서브 타입은 언제나 기반 타입으로 교체할 수 있어야 한다




4. ISP (인터페이스 분리의 원칙: Interface Segregation Principle)

 : CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE.


 ISP원리는 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원리입니다.




5.DIP (의존성역전의 원칙: Dependency Inversion Principle)

 -A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS.

 -B. ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON ABSTRACTIONS.


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


 객체 지향 프로그래밍에서 의존 관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존 관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다.  




+아래의 사이트에서 너무 잘 설명이 되어있어서 여기에서는 간략한 개념만 다뤘습니다. 자세한것은 아래의 사이트에 방문해서 보시면 됩니다.


<참고사이트>

http://www.nextree.co.kr/p6960/

https://ko.wikipedia.org/wiki/SOLID


And