#상속
5
FundamentalOOP
오브젝트; 상속과 다형성
코드 재사용을 목적으로 상속을 사용하면 변경이 어렵고 유연하지 못한 설계에 이른다. 상속은 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 다형성의 기반을 제공한다. 상속은 인스턴스를 동일하게 행동하는 그룹으로 묶기 위한 관점으로 사용되어야 한다. 다형성 Polymorphism은 많은 형태를 가질 수 있는 능력을 의미한다. 컴퓨터 과학에서 다형성은 하나의 추상 인터페이스에 대해 코드를 작성하고 이 추상 인터페이스에 대해 서로 다른 구현을 연결 할 수 있는 능력으로 정의한다. 다형성의 구분은 위 그림과 같다. 오버로딩 다형성
FundamentalOOP
오브젝트; 상속의 문제
객체지향 프로그래밍에서 코드를 재사용하기 위한 기법으로 상속과 합성은 가장 널리 사용된다. 상속 부모클래스와 자식클래스를 연결해 부모클래스의 코드를 재사용한다. 클래스 사이의 의존성은 컴파일 타임에 결정된다. is-a 관계 상속을 제대로 사용하기 위해서는 부모의 내부 구현을 상세하게 알아야 하기 때문에 결합도가 높음 정적인 관계 합성 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해 부분 객체의 코드를 재사용한다. 객체 사이의 의존성은 런타임에 결정된다. has-a 관계 퍼블릭 인터페이스에 의존하기 때문에 내부 구현이 변경되더라
FundamentalOOP
오브젝트; 추상화에 의존하는 상속
부모 클래스의 변경에 의해 자식 클래스가 영향을 받는 현상을 취약한 기반 클래스 문제 라고 부른다. 이제 결합도의 개념을 상속에 적용해보자. 구현을 상속한 경우(extends) 파생 클래스는 기반 클래스에 강하게 결합되며, 이 둘 사이의 밀접한 연결은 바람직하지 않다. 설계자들은 이런 현상에 대해 "취약한 기반 클래스 문제"라는 명칭을 붙였다. 겉으로 보기에는 안전한 방식으로 클래스를 수정한 것 처럼 보이더라도 이 새로운 행동이 파생 클래스에게 상속될 경우 파생 클래스의 잘못된 동작을 초래할 수 있기 때문에 기반 클래스는 "취약하다
FundamentalOOP
오브젝트; 상속과 중복 코드
객체지향 프로그래밍의 장점 중 하나는 코드의 재사용이다. 객체지향은 코드를 재사용 하기 위해 새로운 코드를 추가한다. 객체지향에서 클래스를 재사용 하는 전통적인 방법은 클래스를 추가하는 것이다. 이 장에서는 클래스를 재사용하기 위해 클래스를 추가하는 대표적인 방법인 상속에 관한 내용이다. 상속 외에도 새로운 클래스의 인스턴스 내에 기존 클래스의 인스턴스를 포함시키는 합성이라는 방법도 있다. 중복 코드를 제거해야 하는 이유 중복 코드는 변경을 방해한다. 중복 코드는 코드를 수정하기 위해 어떤 코드가 중복인지 먼저 찾아야 하는 시간이
FundamentalOOP
오브젝트; 객체지향 프로그래밍
이번 장은 이 책을 읽으면서 이해하게 될 다양한 주제들을 얕은 수준으로 가볍게 살펴보는 것 책의 예제 소개를 위한 요구사항 할인 조건 순서 조건 : 상영 순번으로 할인 여부 결정 기간 조건 : 영화 사영시작 시간으로 할인 여부 결정 할인 정책 : 할인 할 요금 결정 금액 할인 정책 : 정액 할인 비율 할인 정책 : 비율 할인 객체지향 패러다임으로 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 어떤 클래스가 필요한지 고민 하기 전에 어떤 객체들이 필요한지 고민하라 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추