📍 상속과 컴포지션의 장단점
상속과 컴포지션은 객체 지향 프로그래밍에서 코드 재사용을 달성하는 두 가지 주요 접근 방식이다.
상속의 장점
- 코드 재사용: 부모 클래스의 속성과 메서드를 자식 클래스가 상속받아 사용할 수 있으므로 중복 코드를 줄일 수 있다.
- 계층 구조: 상속을 사용하면 클래스 계층 구조를 구축하여 ‘객체 간의 계층적인 관계’를 나타낼 수 있다. 이는 객체를 분류하고 구조화하는 데 도움이 된다.
- 다형성: 상속은 다형성을 지원하며, 다양한 자식 클래스 객체를 부모 클래스 타입으로 다룰 수 있다.
상속의 단점
- 긴밀한 결합: 상속을 남용하면 클래스 간의 긴밀한 결합을 초래할 수 있으며, 부모 클래스의 변경이 자식 클래스에 큰 영향을 미칠 수 있다.
- 계층 구조 복잡성: 상속 계층 구조가 지나치게 복잡해지면 유지보수가 어려워질 수 있으며, 설계 오류를 수정하기 어려울 수 있다.
컴포지션의 장점
- 느슨한 결합: 컴포지션을 사용하면 객체 간의 관계를 느슨하게 만들 수 있으며, 한 객체의 변경이 다른 객체에 큰 영향을 미치지 않는다.
- 유연성: 컴포지션을 통해 객체를 조합하여 필요한 기능을 생성할 수 있으므로 더 유연한 설계를 할 수 있다.
- 인터페이스 기반: 컴포지션을 통해 다른 객체의 인터페이스를 활용할 수 있으며, 다양한 구현을 지원한다.
컴포지션의 단점
- 코드 작성과 유지보수의 추가 작업: 컴포지션을 추가 클래스 및 객체를 생성하고 관리해야 하므로 초기 구현에 비용이 발생할 수 있다.
- 일반적으로 복잡성이 증가할 수 있음: 객체를 여러 개 조합하여 원하는 기능을 만들 때 코드 구조가 복잡해 질 수 있다.