Study
-
객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 것- 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적인 기법인 상속에 관해 살펴보자- 재사용 관점에서 상속이란 클래스 안에 정의된 인스턴스 변수와 메서드를 자동으로 새로운 클래스에 추가하는 구현 기법 - 상속 이외에 코드를 효과적으로 재사용하는 방법인 합성은 다음장에서 배워보자 상속과 중복 코드 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 -
객체지향 설계의 핵심은협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거하는 데 있다의존성 이해하기변경과 의존성의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다의존성은 함께 변경될 수 있는 가능성을 의미, 모든 경우에 의존성이 전이되는 것은 아니다의존성이 실제로 전이될지 여부는 견경의 방향과 캡슐과의 정도에 따라 달라진다. 런타임 의존성과 컴파일타임 의존성런타임 의존성 : 객체 사이의 의존성 컴파일타임 의존성 : 클래스 사이의 의존성 런타임 의존성과 컴파일타임 의존성이 다를 수 있다 컨텍스트 독립성클래스가 사용될 특정한 문맥에 대해 최소한의 가정만으로 이뤄져 있다면다른 문맥에서 재사용하기가 더 수월해진다. 의존성 해결컴파일타임 의존성을 실행 컨텍스트에 맞는 적절한 런타임 의존..
[Object] 8장 : 의존성 관리하기객체지향 설계의 핵심은협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거하는 데 있다의존성 이해하기변경과 의존성의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다의존성은 함께 변경될 수 있는 가능성을 의미, 모든 경우에 의존성이 전이되는 것은 아니다의존성이 실제로 전이될지 여부는 견경의 방향과 캡슐과의 정도에 따라 달라진다. 런타임 의존성과 컴파일타임 의존성런타임 의존성 : 객체 사이의 의존성 컴파일타임 의존성 : 클래스 사이의 의존성 런타임 의존성과 컴파일타임 의존성이 다를 수 있다 컨텍스트 독립성클래스가 사용될 특정한 문맥에 대해 최소한의 가정만으로 이뤄져 있다면다른 문맥에서 재사용하기가 더 수월해진다. 의존성 해결컴파일타임 의존성을 실행 컨텍스트에 맞는 적절한 런타임 의존..
2024.08.21 -
문제를 해결하기 위해 사용하는 저장소는 장기 기억이 아니라 단기기억이다.문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어진다. -> 인지 과부하(cognitive overload) 인류가 복잡한 분야(소프트웨어 개발 영역)의 문제를 해결하기 위해 사용한 것추상화불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업한 번에 다뤄야 하는 문제의 크기를 줄이는 것 한 번에 단기 기억에 담을 수 있는 추상화의 수에는 한계가 있지만 추상화를 더 큰 규모의 추상화로 압축시킴으로써 단기 기억의 한계를 초월할 수 있다.분해(decomposition)큰 문제를 해결 가능한 작은 문제로 나누는 작업 프로시저 추상화와 데이터 추상화프로그래밍 언어의 발전좀 더 ..
[Object] 7장 : 객체 분해문제를 해결하기 위해 사용하는 저장소는 장기 기억이 아니라 단기기억이다.문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어진다. -> 인지 과부하(cognitive overload) 인류가 복잡한 분야(소프트웨어 개발 영역)의 문제를 해결하기 위해 사용한 것추상화불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업한 번에 다뤄야 하는 문제의 크기를 줄이는 것 한 번에 단기 기억에 담을 수 있는 추상화의 수에는 한계가 있지만 추상화를 더 큰 규모의 추상화로 압축시킴으로써 단기 기억의 한계를 초월할 수 있다.분해(decomposition)큰 문제를 해결 가능한 작은 문제로 나누는 작업 프로시저 추상화와 데이터 추상화프로그래밍 언어의 발전좀 더 ..
2024.08.13