클래스간의 관계결정하기 ( 상속 Vs 포함 )Backend/java2018. 8. 9. 18:57
Table of Contents
반응형
클래스간의 관계결정하기 – 상속 Vs 포함정의 : 가능한 한 많은 관계를 맺어주어 재사용성을 높이고 관리하기 쉽게 한다.Is – a 와 has – a 를 가지고 문장을 만들어 본다.원은 점이다 – Circle in a Point원은 점을 가지고 있다 . – Circle has a Point상속관계 : ~은 ~이다 ( is – a )포함관계 : ~은 ~을 가지고 있다 ( has – a )클래스를 정의할 때... 관련된 클래스들은 최대한 관계를 많이 맺어주어서 재사용성을 높여야 합니다.클래스간의 관계를 상속으로 할 것인지 포함으로 할 것인지 결정하는 것이 아직은 쉽지 않으실 텐데요.가장 간단한 방법은 ‘is-a’와 ‘has-a’를 가지고 문장을 만들어보는 것입니다.그럼, 앞서 나온 Circle클래스와 Point클래스를 가지고 문장을 만들어봅시다.is-a를 가지고 문장을 만들면... Circle is a Point. 즉, 원은 점이다.has-a를 가지고 문장을 만들면... Circle has a Point. 원은 점을 가지고 있다.가 됩니다.어느 문장이 더 자연스럽나요? 여기서 점은... 원의 중심을 의미하는 원점을 뜻한다고 했을 때...원을 구성하는 것은 원점과 반지름이니까... Circle ahs a Point 즉, 원은 원점을 가지고 있다...가 더 자연스러운 문장이라고 할 수 있습니다.그래서... 왼쪽의 코드와 같이 Circle클래스가 Point클래스를 상속받도록 하는 것 보다...Point클래스를 포함시키도록 하는 것이 더 적절합니다.사실... 실제 프로그래밍을 하다 보면... 이처럼 문장을 만들어도 판단하기 어려운 경우가 많은데요.대부분의 경우 포함관계이고요...기존의 클래스에 새로운 기능이 추가된 새로운 클래스를 만들 때는 상속관계를 맺어주면 됩니다.상속이나 포함의 공통적인 목적은...코드를 재사용함으로써 서로 유기적으로 연결되도록 하는 것이고...그렇게 함으로써 한 곳의 변경이 다른 곳에 자동적으로 영향을 미치도록 하여...작업의 양을 줄여주고... 오류의 가능성을 낮춰주는 것입니다.상속관계는 포함관계보다 객체지향개념적으로... 좀더 중요한 의미를 갖습니다...포함관계는 간단히 얘기해서 재사용성을 높인다는 정도인데...상속관계는 앞으로 배우게 될 다형성과도 깊은 관계가 있고... 상속계층도에 포함되므로...앞서 살펴본 것과 같이 조상의 변화에 따라 모든 자손들이 영향을 받기 때문에...상속관계를 잘못 맺어주면... 원하지 않는 영향을 줄 수도... 받을 수도 있습니다.그래서... 상속관계를 맺어줄 때는 좀더 신중하게 결정해야 합니다.
반응형
'Backend > java' 카테고리의 다른 글
Object 클래스는 무엇일까 ? (0) | 2018.08.09 |
---|---|
단일상속 ( single inheritance ) (0) | 2018.08.09 |
클래스간의 관계 - 포함관계 (0) | 2018.08.09 |
클래스간의 관계 - 상속관계 ( inheritance ) (0) | 2018.08.09 |
상속의 정의와 장점 ( 자세히 ) (0) | 2018.08.09 |
@IT grow. :: IT grow.
#IT #먹방 #전자기기 #일상
#개발 #일상