Study/오브젝트
-
상속은 코드 재사용의 목적이 아닌 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공한다. 상속은 클라이언트 관점에서 인스턴스들을 동일하게 행동하는 그룹으로 묶기 위해서 사용해야 한다. 이번 장에서는 상속의 관점에서 다형성이 구현되는 기술적인 메커니즘을 살펴보자.이번 장을 읽고 나면 다형성이 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로 탐색하는 과정을 통해 구현되며,상속이 이런 메서드를 찾기 위한 일종의 탐색 경로를 클래스 계층의 형태로 구현하기 위한 방법이라는 사실을 이해하게 될 것이다. 다형성많은(poly)+형태(morph)를 의미하는 합성어여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법 상속의 양면성..
[Object] 12장 : 다형성상속은 코드 재사용의 목적이 아닌 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공한다. 상속은 클라이언트 관점에서 인스턴스들을 동일하게 행동하는 그룹으로 묶기 위해서 사용해야 한다. 이번 장에서는 상속의 관점에서 다형성이 구현되는 기술적인 메커니즘을 살펴보자.이번 장을 읽고 나면 다형성이 런타임에 메시지를 처리하기에 적합한 메서드를 동적으로 탐색하는 과정을 통해 구현되며,상속이 이런 메서드를 찾기 위한 일종의 탐색 경로를 클래스 계층의 형태로 구현하기 위한 방법이라는 사실을 이해하게 될 것이다. 다형성많은(poly)+형태(morph)를 의미하는 합성어여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법 상속의 양면성..
2025.02.20 -
상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용(is-a관계)합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 (has-a관계)합성은 구현에 의존하지 않는다는 점에서 상속과 다르다.합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 합성 관계는 객체 사이의 동적인 관계다. 상속으로 인한 조합의 폭발적인 증가기본정책과 부가정책이 있는 경우 기본 정책이 추가되는 경우에 기존에 만들어진 하나의 쌍이 하나 더 만들어지면 되겠지만..만약 부가정책이 추가된다면 엄청나게 많은 조합이 생겨나게 될 것이다이를 클래스 폭발(class explosion) 문제..
[Object] 11장 : 합성과 유연한 설계상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용(is-a관계)합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 (has-a관계)합성은 구현에 의존하지 않는다는 점에서 상속과 다르다.합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 합성 관계는 객체 사이의 동적인 관계다. 상속으로 인한 조합의 폭발적인 증가기본정책과 부가정책이 있는 경우 기본 정책이 추가되는 경우에 기존에 만들어진 하나의 쌍이 하나 더 만들어지면 되겠지만..만약 부가정책이 추가된다면 엄청나게 많은 조합이 생겨나게 될 것이다이를 클래스 폭발(class explosion) 문제..
2025.01.30 -
객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 것- 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적인 기법인 상속에 관해 살펴보자- 재사용 관점에서 상속이란 클래스 안에 정의된 인스턴스 변수와 메서드를 자동으로 새로운 클래스에 추가하는 구현 기법 - 상속 이외에 코드를 효과적으로 재사용하는 방법인 합성은 다음장에서 배워보자 상속과 중복 코드 DRY 원칙 (Don't Repeat Yourself)전화요금을 계산하는 애플리케이션을 통한 예시- 밤에 전화하면 세금을 할인해 주는 Phone의 등장을 상속으로 구현하려 함 타입 코드 사용 - 낮은 응집도와 높은 결합도라는 문제 발생if(type == PhoneType.REGULAR) {} else if (type == Pho..
[Object] 10장 : 상속과 코드 재사용객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 것- 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적인 기법인 상속에 관해 살펴보자- 재사용 관점에서 상속이란 클래스 안에 정의된 인스턴스 변수와 메서드를 자동으로 새로운 클래스에 추가하는 구현 기법 - 상속 이외에 코드를 효과적으로 재사용하는 방법인 합성은 다음장에서 배워보자 상속과 중복 코드 DRY 원칙 (Don't Repeat Yourself)전화요금을 계산하는 애플리케이션을 통한 예시- 밤에 전화하면 세금을 할인해 주는 Phone의 등장을 상속으로 구현하려 함 타입 코드 사용 - 낮은 응집도와 높은 결합도라는 문제 발생if(type == PhoneType.REGULAR) {} else if (type == Pho..
2024.10.06 -
8장에서 배운 의존성 관리기법들을 정리하는 챕터라고 생각이름을 가진 설계 원칙을 통해 기법들을 정리 개방-폐쇄 원칙(open-closed principle)(OCP)확장 가능하고 변화에 유연하게 대응할 수 있는 설계확장에 열려 있다 : '동작'을 추가해서 기능을 확장수정에 대해 닫혀 있다 : '코드'를 수정하지 않고 동작을 추가하거나 변경유연한 설계란 기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있는 설계 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라의존성 관점에서 개방-폐쇄 원칙을 따르는 설계- 컴파일타임 의존성은 유지하면서 런타임 의존성의 가능성을 확장하고 수정할 수 있는 구조 추상화가 핵심이다개방-폐쇄 원칙의 핵심은 추상화에 의존하는 것추상화란 핵심적인 부분만 남기고..
[Object] 9장 : 유연한 설계8장에서 배운 의존성 관리기법들을 정리하는 챕터라고 생각이름을 가진 설계 원칙을 통해 기법들을 정리 개방-폐쇄 원칙(open-closed principle)(OCP)확장 가능하고 변화에 유연하게 대응할 수 있는 설계확장에 열려 있다 : '동작'을 추가해서 기능을 확장수정에 대해 닫혀 있다 : '코드'를 수정하지 않고 동작을 추가하거나 변경유연한 설계란 기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있는 설계 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라의존성 관점에서 개방-폐쇄 원칙을 따르는 설계- 컴파일타임 의존성은 유지하면서 런타임 의존성의 가능성을 확장하고 수정할 수 있는 구조 추상화가 핵심이다개방-폐쇄 원칙의 핵심은 추상화에 의존하는 것추상화란 핵심적인 부분만 남기고..
2024.08.26