TIL

2021.06.12 기록장

Gisungcu 2021. 6. 12. 00:11

ToDo

  • 책 읽기
  • 미션
  • 블로그 읽기
  • 시험

Done

  • 책 읽기
  • 시험
  • 블로그 읽기

Weekly goal

  • 책 읽기
  • 블로그 읽기

Feeling

오늘은 미션을 시험을 보고 책을 읽었다. 미션은 내일 다 할 수 있으려나.

 

object

 

445p. 행동 호환성 서브 타입은 슈퍼 타입으로 변경이 가능하다.

내가 생각했던 상속은 타입을 정의한다고 생각했다. 새는 펭귄이기에 새를 상속받을 수 있다.라고

근데 이 부분에서는 개념적으로는 연관성이 있더라도 클라이언트가 원하는 행동으로 일치하지 않는 다면 상속을 사용하면 안 된다는 것이다.

클라이언트가 원한 새는 모두 날 수 있는 새였는데 펭귄은 날지 못하니, 클라이언트 관점으로 생각해야 한다.

 

449p. 클라이언트의 기대에 따라 계층 분리하기

인터페이스는 클라이언트가 기대하는 바에 따라 분리돼야 한다.

나는 새를 원하는 클라이언트에게는 나는 새를, 걷기만 하는 새를 원하는 클라이언트에게는 걷는 새를 준다.

더 좋은 방법은 합성을 사용하는 것이다.

 

만약 날지 않는 새만 지금 서비스에서 원하고 미래에도 원할 것 같지 않다면 잘 구분해서 설계하는 쪽이 바람직하다.

 

 

456p. 리스 코프 치환 원칙

개념적으로 상속관계를 했을 때 문제 ex) 정사각형은 직사격형이 될 수 있다.

개념적으로 맞지만 클라이언트가 만약 직사각형만 취급하고 있다면 문제가 된다.

"클라이언트와 격리한 채로 본 모델은 의미 있게 검증하는 것이 불가능하다."

 

462p. 계약에 의한 설계와 서브 타이핑

리스 코프 치환 원칙은 서브타입이 그것의 슈퍼 타입을 대체할 수 있어야 한다.

상속을 하면 서브클래스가 되고 서브 클래스는 모두 서브 타입이 되는 것은 아니다.

코드 재상용을 하기 위해 상속했고, 클라이언트 관점에서 대체가 안되면  서브 타입이라고 할 수 없다.

 

계약에 의한 설계는 잘 알지 못해서 사전 조건, 사후 조건은 잘 모르겠다. 후에 부록을 읽어봐야겠다.