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

리스코프 치환 원리 자료를 찾다가  디자인의 5대 원칙도 함 집고 넘어 간다.

첫번째 원칙,  단 하나의 책임 원칙( The Single Responsibility principle )
 - 어떤 클래스를 변경해야 할 이유는 오직 하나뿐이어야 한다.

두번째 원칙,     개방-폐쇄의 원리(Open-Closed Principle, OCP)

 - 추상화와 다형성이 근간.

 - 수정에는 닫혀 있어야 하며, 확장에는 열여있어야 한다.

 

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

 - 자식타입들은 부모타입들이 사용되는 곳에 대체될수 있어야 한다.

 - 만약 대체가 안된다면 그 상속은 잘못된 것이다.

 - 예로 Rectangle class 와 이를 상속받는 Square class 있다고 할때 Rectangle 은 가로와 세로의

    설정을 따로따로 해주는 함수가 있어야 하지만 Square 의 경우는 정사각형이므로 같이 처리해주면

    된다. 만약 Rectangle 을 매개변수로 받는 함수가 있고 이 함수안에서는 Rectangle 객체를 통해

    가로와 세로길이를 셋팅한다고 할 때, Rectangle 객체라면 가로세로 길이를 따로따로 설정할수

    있게 되겠지만 Square 의 경우는 따로 설정이 안되므로 원하는 결과가 나올수 없다.

    (  에센셜 C++ )

 

네번째 원칙,  의존역전의 원리(Dependency Inversion Principle, DIP)
 -  고차원 모듈은 저차원 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화 된것에 의존해야 한다.
 -  추상화 된것은 구체적인 것에 의존 하면 안된다. 구체적인 것이 추상화된 것에 의존해야 한다.

다섯번째 원칙, 인터페이스 격리 원칙 ( Interface Segregation Principle )
 - 어떤 객체의 사용자에게 그 사용자한테 필요한 메소드만 있는 인터페이스를 제공하라.

자세한것은 더 따로 모아서 공부 해야 겠당..ㅠㅠ 어렵도다 어려워..

 

by Redcomet | 2008/01/02 17:40 | C++ | 트랙백(1) | 덧글(0)

트랙백 주소 : http://blue4lu.egloos.com/tb/1678498
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 이름없는 블로그 at 2008/06/05 01:55

제목 : 항목 19: 클래스 설계는 타입 설계와 똑같이 취급..
클래스 설계? 타입 설계? C++에서 새로운 클래스를 설계하는다는것은 타입을 설계하는 것과 같다. 왜냐하면 그 클래스에는 operator 오버로드, 메모리 할당 및 해제, 객체 초기화 및 종료 등 모두 클래스에서 하기 때문이다. 타입은 어떻게 설계 할것인가? EC++ 3판에서는 많은 것들 중 고수들은 몇가지 질문을 스스로 던저 자신을 괴롭히며 만든다고 한다. 1. 새로 정의한 타입의 객체 생성 및 소멸은 어떻게 이루어져야 하는가? 2. 객체 초......more

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶