🧐 🤔 그거 어떻게 쓰더라 🙄 😙

IS-A, HAS-A 애매할 때 구별법

2022. 12. 25. Evergood Kim이가 씀

기본 개념만 따지고 든다면 머저리가 아닌 이상 이걸 구별 못할 리가 없겠지. IS-A, HAS-A라는 이름에서부터 티가 팍팍 나지만; 한쪽은 상속관계, 한쪽은 소유관계이다. 그러나 우리가 만드는 것들 중에는 현실의 무언가에 대응하지 않는 경우가 반드시 있다. 인간과 학생의 관계? 경찰과 총의 관계? 그런 거 아무리 들이대봤자; 내가 만들려는 것은 아예 상상의 존재라서 그런 비유 따위 별로 효과가 없단 말이다. 현실의 인간과 학생의 관계는 IS-A인 게 분명한 정답이지만 내가 만드는 세계에서는 그 정답을 애초에 내가 정해야 하는데 어떡한담?

그래서 내가 생각하는 기준은 (A의 코드를 가져와서 B를 만들려는 경우)

만약 A가 세상에서 사라지면 B의 존재가 의미 있는가?

  • 의미 있다: A를 부품으로 가져온다.(HAS-A)
  • 의미 없다: A를 상속받는다.(IS-A)

이렇다.

예를 들어;물론 예를 들려면 현실의 무언가를 들어서 설명할 수밖에 없지만… 인류가 멸종하면 학생이라는 건 개념 자체가 의미 없다.(IS-A) 반면에 노래방기계의 화면이 망가진다면 그 기계는 설령 못쓰게 되더라도 아예 의미가 없어지진 않는다. 만약 다른 화면이 있다면 대체돼서 다시 작동할 여지도 있다.(HAS-A)

728x90