SOLID 설계의 원칙 3 – 리스코프 치환 원칙

Posted on

리스코프 치환 원칙(Liskcov Substitution Principle)은 클래스 상속의 구조가 지켜야 하는 원칙을 말한다. 보통 상속을 말할때, inheritance라는 단어의 의미에 주목하면 부모클래스, 자식클래스로 분류할 수 있다. 이로부터 상속의 구조를 구성하면 아래와 같이 된다.

일종의 가족의 계보도와 같은 계층이 그려지는데, 이를 객체지향 문법으로 구현하면 아래처럼 된다.

부모 돌쇠 = new 아들();

그러나 부모라는 타입이 아들을 의미할 수 있는가? 아들을 낳아서 이름을 돌쇠라고 하지만, 이는 사람이 보기에 직관에 위배된다. 이를 해결하려면

하위클래스 is a kind of 상위클래스

구현클래스 is able to 인터페이스

의 구조를 구문에서도 잘 드러내야 한다.

이와 같이 하면

가구 컴퓨터책상 = new 책상();

과 같이 직관을 위배하지 않는 구문이 가능해진다. 즉 위의 분류도대로라면 하위클래스의 존재가 상위클래스의 역할을 하기에 충분하고, 상속의 단어 의미대로가 아니면서도 구문적으로 어색하지 않은 문법이 완성된다.

이를 잘 지키는 것을 리스코프 치환 원칙이라고 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다