[객체지향] 인터페이스 다중상속 중요성

Woo Yong·2023년 12월 18일
1

자바

목록 보기
3/4
post-thumbnail

카카오 클라우드 교육을 들으면서 Final Duck 프로그램을 설계하던 중 궁금증이 생겨서 글을 쓰게 되었다.

다형성과 다중제어에 장점을 가지고 있는 interface에 대해 학습 후 interface를 적용하여 새롭게 모델링 하는 작업을 수행했다.

그리고 내가 설계한 ClassDiagram과 강사님이 말씀해주신 ClassDiagram이 다르고 이해가 되지 않아 글을 쓰게 되었다.

내가 설계한 ClassDiagram

위 코드는 내가 설계한 ClassDiagram이다. FlyableSoundable 인터페이스를 생성하여 해당 인터페이스의 구현체를 만들었다.

그리고 해당 구현체를 각 객체들이 인스턴스 필드로 받아 메소드를 실행하도록 코드를 작성했다.

강사님이 말씀해주신 ClassDiagram

위 코드는 강사님이 강의시간에 말씀해주신 ClassDiagram이다. FlyableSoundable 인터페이스를 생성한 것은 동일하다. 하지만 각 인터페이스의 구현체는 만들지 않고 각 객체들이 인터페이스를 상속하였다.

그리고 구현한 객체에서 오버라이딩하여 재정의를 해주어야한다.

차이점

두가지 ClassDiagram의 차이점에 대해 알아보자.
내가 설계한 ClassDiagram은 인터페이스 구현체를 인스턴스 필드로 주입했기 때문에 인터페이스의 장점인 다중 제어가 불가능하다.

반면에 강사님이 설명해주신 ClassDiagram은 sound() 메서드에서 꽥꽥에서 빽빽으로 수정한다고하면 재정의한 구현 객체들의 코드를 일일히 모두 수정해주어야한다.

두 ClassDiagram은 완벽한 설계가 아니기 때문에 문제점이 많은 ClassDiagram이라고 해주셨다. 그리고 해당 설계는 interface의 사용을 극대화하기 위한 ClassDiagram이라고 하셨고, 틀린 ClassDiagram은 아니라고 말씀해주셨다.

profile
Back-End Developer

0개의 댓글