SRP, OCP 참고
https://veams.tistory.com/65
객체 지향 설계 5원칙(SOLID) - 단일책임원칙SRP, 개방폐쇄원칙 OCP
객체지향 프로그래밍, 어떤 기준으로 설계하면 좋을까? 객체 지향 설계를 할 때, 시간이 지난 후에도 유지 보수와 확장이 쉬운 프로그래밍을 하기 위한 기본 원칙이 5개가 존재한다. 개발자라면
veams.tistory.com
리스코프 치환 원칙 (LSP, Liskov substitution principle)
- "서브타입(derived)은 언제나 상위타입(base)으로 교체가 가능해야 한다."
객체 지향 언어에서는 객체의 상속이 일어나며 부모/자식 관계가 정의된다.
하지만 이 과정에서 상속 관계를 잘못 설정하는 경우가 생긴다.
LSP 원칙은 올바른 상속은 무엇인지 제시한다.
자식 클래스는 최소한 부모 클래스가 가능한 행위를 수행할 수 있어야 한다.
객체의 상속 관계에서 자식 클래스는 부모 클래스에서 가능한 동작이 보장되도록 하여, 호출하는 프로그램 입장에서 부모 타입인지, 자식 타입인지 신경쓰는 상황을 없애는 것이다. 이 경우 두 클래스가 서로 교체되어도 프로그램의 동작에 문제가 생기지 않는다.
대표적인 상속 관계를 잘못 설정한 예시로 직사각형과 정사각형을 언급한다. 직관적으로 보기에, 직사각형은 정사각형을 포함하는 개념이다. 그래서 누군가는 직사각형을 정사각형이 상속받도록 시도할 수 있다.
그러나 직사각형과 정사각형은 상속 관계가 될 수 없다. 이 원칙에 따르면 두 객체의 역할을 치환했을 때 동일한 결과 값이 도출되어야 하는데, 그렇지 않는 것이다. 자식 타입인 정사각형 객체는 상위 타입으로 설정한 직사각형 객체가 가진 행위를 할 수 있어야 하는데 그렇지 못하다. 직사각형은 가로와 세로가 다른 경우도 있기 때문에, 가로 세로가 모두 동일한 정사각형이 직사각형의 기능을 온전히 가질 수 없다.
이 경우, 상위 개념으로 사각형 객체를 구현하고, 이를 상속 받는 자식 개념으로 직사각형과 정사각형으로 각각 관계를 설정할 수 있을 것이다. (사각형-정사각형, 사각형-직사각형) 이제 자식 객체는 부모 객체의 동작을 완벽하게 대체할 수 있다.
'개발기초' 카테고리의 다른 글
객체 지향 설계 5원칙(SOLID) - 의존 역전 원칙 DIP [핵심간단] (0) | 2023.02.22 |
---|---|
객체 지향 설계 5원칙(SOLID) - 인터페이스 분리 원칙 ISP [핵심간단] (0) | 2023.02.21 |
객체 지향 설계 5원칙(SOLID) - 단일책임원칙SRP, 개방폐쇄원칙 OCP (0) | 2023.02.21 |
OOP 객체 지향 프로그래밍이란? [핵심간단정리] (0) | 2023.02.20 |
내배캠 11일차 TIL : 프로그래머스 문제 풀이 첫 경험 (0) | 2022.11.24 |
댓글