내 경우 C++로 클레스 설계할 때 항상 포함( has-a ) 관계만을 사용해서 클레스계층을 구성함 --;;
별로 의식하고 그런건 아닌데, 자꾸 하다보니 이쪽이 익숙해진 때문인듯 하네;;
어떤식이나면, 공통적인 클레스를 사용할 때 기본이 되는 클레스에서 상속받아서 새로운 클레스를 만드는게 아니라 아예 새로운 클레스의 내부에 기본이 되는 클레스를 선언해 버리는 방식임.
재미있는게 어지간한 경우는 (상당히 복잡한 계층구조에서도) 이것만으로도 거의 해결이 되고, 각 클레스를 하나의 부속처럼 사용하니까 수정할 때도 꽤 편리하다.
재귀문법을 안쓰는 거랑 상속 안 쓰는건 내 오래된 습관중에 하나긴 한데, 그래도 역시 상속 안쓰는 건 고치는게 좋겠지?
is-a 관계를 has-a 관계로 구현하다보면 첨에는 괜찮은데 나중에 점점 이질감 느껴지지 않음?? C에서 객체지향 흉내낼때는 언어적으로 상속이 지원이 안되니까 has-a 관계로 억지로 구현한다 쳐도 C++에선 그럴 필요 없을 것 같다
우린 전자가 메인이니,,
제조사에서 C 컴파일러만 줘도 존나 감사
상속도 너무 익숙해지면 상속레벨 겁내 쳐 올라버리면 겁내 안좋다던데. 난 졎대딩이라 안좋다 할 수준까진 상속 멕여본 적은 없어서 ㄷㄷㄷ
상속레벨이라는게 뭘 말하려는건지 모르겠지만 상속하고 상속하고 또 상속하는 경우에 \'생길것으로 의심되는 성능 저하\'는 사실상 거의 없다고 봐도 된다.
예를 들면 최상위 클레스에서 예상치 못한 문제가 발생한 경우 -_-;;
예상치 못한 문제가 발생하는 경우는 is-a나 has-a나 똑같지 뭐
최악의 경우 그 클레스에게 상속받은 모든 클레스를 뜯어 고쳐야 되는 일이 발생하기도 함
함수명이 바뀐다거나 내부 타입이 바뀐다거나 하는 경우에 그런 귀찮은 작업이 동반되긴 하는데 조금 수정하는 정도가 아니라 완전 다 뜯어 고쳐야 하는 정도면 설계가 잘못된거 아닐까
그렇게 볼 수도 있음요. 그래서 초반에 클레스 블록도 그릴때는 고민을 쫌 해야 함