2008년 01월 02일
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 | 2008/01/02 17:40 | C++ | 트랙백(1) | 덧글(0)





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