You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
레벨 1 블랙잭 미션에서 저는 Participant를 부모 타입으로, Dealer와 Player를 자식 타입으로 사용했습니다. 클라이언트의 관점에서 이 상속은 서브클래싱일까요 서브타이핑일까요?
❓ 이유
Dealer와 Player를 호출하고 사용하고 있는 클라이언트의 관점에서 draw라는 메서드를 실행했을 때, 클라이언트는 딜러와 플레이어 모두 동일하게 한 장의 카드를 뽑는 것을 기대할 것이라고 생각합니다. 또, isBust 혹은 isBlackjack과 같은 메서드를 실행했을 때에도 클라이언트는 Dealer와 Player 모두에게 동일한 기대를 한다고 생각합니다. 이런 관점에서는 이 상속이 서브타이핑에 해당한다고 볼 수 있습니다.
그렇지만 클라이언트에서 Participant가 아니라 Dealer와 Player를 구분하여 사용하고 있었기 때문에 대체 가능성이 깨졌다고 볼 수 있고, 이 상속은 단순히 중복 코드를 없애기 위한 서브클래싱이었다고 생각이 듭니다.
그래서 지금 다시 블랙잭 미션을 구현하게 된다면 상속을 사용하지 않을 것이라고 결론을 내렸습니다.
다른 분들은 블랙잭에서 상속을 사용하셨는지 사용하지 않으셨는지, 사용하지 않으셨다면 어떻게 구현하셨는지 궁금합니다.
또 13장을 읽은 후인 지금, 다시 블랙잭 게임을 구현하게 된다면 상속을 사용하실 것인지에 대한 의견도 같이 나눠보면 좋겠습니다~!
💡 이슈
클라이언트의 관점이라고 이야기합니다.Participant를 부모 타입으로,Dealer와Player를 자식 타입으로 사용했습니다. 클라이언트의 관점에서 이 상속은 서브클래싱일까요 서브타이핑일까요?❓ 이유
Dealer와Player를 호출하고 사용하고 있는클라이언트의 관점에서draw라는 메서드를 실행했을 때, 클라이언트는 딜러와 플레이어 모두 동일하게 한 장의 카드를 뽑는 것을 기대할 것이라고 생각합니다. 또,isBust혹은isBlackjack과 같은 메서드를 실행했을 때에도 클라이언트는Dealer와Player모두에게 동일한 기대를 한다고 생각합니다. 이런 관점에서는 이 상속이 서브타이핑에 해당한다고 볼 수 있습니다.Participant가 아니라Dealer와Player를 구분하여 사용하고 있었기 때문에대체 가능성이 깨졌다고 볼 수 있고, 이 상속은 단순히 중복 코드를 없애기 위한 서브클래싱이었다고 생각이 듭니다.상속을 사용하지 않을 것이라고 결론을 내렸습니다.또 13장을 읽은 후인 지금, 다시 블랙잭 게임을 구현하게 된다면 상속을 사용하실 것인지에 대한 의견도 같이 나눠보면 좋겠습니다~!
📖 관련 페이지