본문 바로가기

LSP2

설계원칙 - SOLID(LSP) - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - https://ko.wikipedia.org/wiki/%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95 - 개요 바바라 리스코프가 하위 타입에 대해 정의한 원칙이다. S 타입의 객체 o1, T 타입의 객체 o2가 있고, T 타입을 이용해서 정의한 프로그램 P에서 o2 대신 o1을 치환해도 P의 행위가 변하지 않는다면, S는 T의 하위타입이다. - LSP 예제 모델들을 관리하는 어플리케이션을 살펴보자. Model 클래스가 있다. 실세계에서는 상당히 많은 메소드가 있겠지만 이 예제에서는 모델 코드를 반환하는 getModelCode() 메소드만 있다고 가정한다.. 2021. 2. 10.
UML - 클래스 다이어그램과 일반화 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 일반화(Generalization) 일반화의 가장 전형적인 예제는 사업에 대해 개인 고객과 기업 고객에 관한 예제이다. 이 둘의 공통점은 상위 타입(고객)으로 추출하고, 차이점은 하위 타입에서 표현한다. 모델링의 관점에서 고객에 관련된 모든것(연관, 속성, 오퍼레이션)은 기업 고객에 대해서도 성립하는것이다. 소프트웨어 관점에서 일반화는 상속과 관련있다. 상속에서 가장 중요한 원칙은 치환 가능성이다. 치환 가능성이란 만약 고객의 타입으로 참조하여 수행한 오퍼레이션이 있다면, 이 참조하는 인스턴스가 기업 고객이어도 적절하게 동작해야 한다는 의미이다. 고객 Customer와 기업 고객 EnterpriseCustomer가 있다.. 2021. 2. 10.