객체지향 5원칙 : 3.리스코브 치환의 원칙, 적용방법!쉬운 예시!

용기가 생명을 위험한 지경으로 몰고 갈 수 있듯이, 공포심이 때로는 생명을 지켜줄 때도 있다

 

 

리스코브 치환의 원칙 : LSP : The Liskov Substitution Principle

 

1.요점

 

-자식클래스는 언제나 부모클래스를 대체할 수 있어야 한다는 원칙

 

-부모클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다는 것

 

 

예시1)

자료형 T가 부모클래스, 자료형 S가 자식클래스(하위클래스)라고 한다면, T의 객체를 S의 객체로 교체해도 문제가 없어야 한다.

 

 

 

2.적용방법

1)만약 두 개체가 똑 같은 일을 한다면 둘을 하나의 클래스로 표현하고 이들을 구분할 수 있는 필드를 둡니다.

 

2)똑같은 연산을 제공하지만, 이들을 약간씩 다르게 한다면 공통의 인터페이스를 만들고 둘이 이를 구현 합니다. (인터페이스 상속)

 

3)공통된 연산이 없다면 완전 별개인 2개의 클래스를 만듭니다.

 

4)만약 두 개체가 하는 일에 추가적으로 무언가를 더 한다면 구현 상속을 사용합니다.

 

 

 

위반예시)

위반하는 예로는너비와 높이의 조회(getter)와 할당(setter) 메서드를 가진 직사각형 클래스로부터 정사각형 클래스를 파생하는 경우가 있습니다.

 

정사각형은 너비와 높이가 동일하기때문에, 값을 함부로 바꿀 수 없는 부분에서 예기치 못한 오류를 범할 수 있습니다

 

정사각형은 너비와 높이가 같음을 유지하는 조건으로 할당 메서드를 변경하면, 직사각형의 할당메서드에서 너비와 높이를 독립적(자유롭게)으로 변경하는 조건에서 위반사항이 발생합니다. 

 

(리스코브의 원칙대로 직사각형객체를 사용하는 문맥에서 직사각형객체 대신 정사각형객체를 사용할 수 없기 때문에 위반사항입니당)

 

 

 

남기는 말

자료를 쉽게 풀어 쓸려고했는데,,, 도움이 되셨으면 좋겠습니다. 

댓글

Designed by JB FACTORY