오브젝트 책 10장 11장에 대한 내용을 발표로 만들어보았습니다.
자바를 사용하면서 객체지향프로그래밍이라는 단어는 수도 없이 들었지만, 여전히, 객체지향은 솜사탕을 만지는 느낌이였습니다.
'오브젝트' 책은 그런면에서 굉장히 실용적인 책이라는 점을 발견했고, 이를 Sliip 스터디에서 발표하게 되었습니다.
21. 그러나, 상속의 가장 큰 문제는 조합의 폭발적인 증가
오늘우리는왜코드를재사용해야하는가?에대한탐구와,상속을활용
한코드재사용을살펴보고,이과정에서코드추상화로서상속이가진
단점을해결하며,상속이가진단점을다시한번상기시켜봅니다.
더하여,상속이가진고질적인단점을합성으로바꿔보면서상속의궁극적
인단점을극복합니다.이과정에서우리는상속과합성의장단점을이
해할수있습니다.
마지막으로,스칼라에서는믹스인이라는기법을제공하는데,이는상속
과합성의중간쯤에있는문법으로무엇인지이해해보는것이오늘의목
표입니다.
๏하나의 기능을 추가하거나 수정하기 위해 불필요하게 많은 수
의 클래스를 추가하거나 수정해야 한다.
๏단일 상속만 지원하는 언어에서는 상속으로 인해 오히려 중복
코드의 양이 늘어날 수 있다.
46. RateDiscountablePolicy
RegularPolicy
TaxablePolicy
BasicRatePolicy
val traitPhone = new Phone(
List(
Call(LocalDateTime.of(2017, 1, 2, 10, 0), LocalDateTime.of(2017, 1, 2, 10, 1))
),
new RegularPolicy(Money.wons(100), Duration.ofSeconds(10))
with RateDiscountablePolicy
with TaxablePolicy {
val discountAmount: Money = Money.wons(100)
val taxRate = 0.02
})
쌓을 수 있는 변경