일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 헤드퍼스트디자인패턴
- 성수맛집
- Linux
- 성수직장인
- 독서
- 성수핫플
- 클린코드
- Java
- 직장인점심
- 오브젝트
- 깨끗한코드
- 객체지향프로그래밍
- 성수
- JAVA개발자
- 디자인패턴
- IntelliJ
- 독서일지
- JavaScript
- 헤드퍼스트
- 객체지향
- 책너두
- docker
- 상속
- 코딩
- 주니어개발자
- 개발자
- 직장인
- 책읽기
- 성수볼거리
- DesignPattern
- Today
- Total
목록책책책 책을 읽읍시다‼ ver.개발/[ 오브젝트: 코드로 이해하는 객체지향 설계 ] (44)
닭발개발
27일차. 오브젝트: 코드로 이해하는 객체지향 설계[5주차_수요일] 349-363pg #요약 **Chapter 11. 합성과 유연한 설계** 01. 상속을 합성으로 변경하기 1) 불필요한 인터페이스 상속 문제: java.util.Properties와 java.util.Stack 2) 메서드 오버라이딩 오작용 문제: InstrumentedHashSet - InstrumetedHashSet 합성관계로 변경 : HashSet 인스턴스를 내부에 포함한 후 HashSet의 퍼블릭 인터페이스에서 제공하는 오퍼레이션들을 이용해 필요한 기능을 구현하면 된다. - InstrumetedHashSet 은 HashSet이 제공하는 퍼블릭 인터페이스 그대로 제공해야 함. - InstrumetedHashSet 이 Set 인터페이..
26일차. #책너두 오브젝트: 코드로 이해하는 객체지향 설계[5주차_화요일] 336-348pg #요약 **Chapter 10. 상속과 코드 재사용** - 객체지향에서는 코드 재사용을 위해 '새로운'코드를 추가하는데 코드는 보통 클래스 안에서 작성되니까 새로운 클래스를 추가한다. - 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적 기법 : 상속 - 클래스의 인스턴스 안에 기존 클래스의 인스턴스를 포함시키는 방법 : 합성 01. 상속과 중복코드 02. 취약한 기반 클래스 문제 03. Phone 다시 살펴보기 1) 추상화에 의존하자 2) 차이를 메서드로 추출하라 3) 중복 코드를 부모 클래스로 옮겨라 - 공통 코드를 옮길 때 인스턴스 변수보다 메서드를 먼저 이동시키는게 편한데 컴파일 에러를 통해..
25일차. 오브젝트: 코드로 이해하는 객체지향 설계[5주차_월요일] 322-335pg #요약 **Chapter 10. 상속과 코드 재사용** - 객체지향에서는 코드 재사용을 위해 '새로운'코드를 추가하는데 코드는 보통 클래스 안에서 작성되니까 새로운 클래스를 추가한다. - 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적 기법 : 상속 - 클래스의 인스턴스 안에 기존 클래스의 인스턴스를 포함시키는 방법 : 합성 01. 상속과 중복코드 - 중복코드를 제거해야 할 이유 1) DRY 원칙 2) 중복과 변겅 3) 상속을 이용해서 중복 코드 제거하기 4) 강하게 결합된 Phone과 NightlyDiscountPhone - 기반 클래스 문제 : 상속 관계로 연결된 자식 클래스가 부모 클래스의 변경에 취..
24일차. 오브젝트: 코드로 이해하는 객체지향 설계[4주차_토요일] 305-321pg #요약 **Chapter 09. 유연한 설계** - 8장에서 유연하고 재사용가능한 설계를 만드려고 적용할 수 있는 다양한 의존성 관리 기법들을 소개했다면 9장에서는 이 기법들을 원칙이라는 관점에서 정리 01. 개방-폐쇄 원칙(Open-Closed Principle, OCP) 02. 생성 사용 분리 03. 의존성 주입 04. 의존성 역전 원칙 05. 유연성에 대한 조언 1) 유연한 설계는 유연성이 필요할 때만 옳다. - 유연하고 재사용 가능한 설계 : 런타임 의존성과 컴파일타임 의존성의 차이를 알고 같은 컴파일 타임 의존성으로부터 다양한 런타임 의존성을 만들 수 있는 코드 구조를 가지는 설계 2) 협력과 책임이 중요하다...
23일차. 오브젝트: 코드로 이해하는 객체지향 설계[4주차_금요일] 291-304pg #요약 **Chapter 09. 유연한 설계** - 8장에서 유연하고 재사용가능한 설계를 만드려고 적용할 수 있는 다양한 의존성 관리 기법들을 소개했다면 9장에서는 이 기법들을 원칙이라는 관점에서 정리 01. 개방-폐쇄 원칙(Open-Closed Principle, OCP) 02. 생성 사용 분리 - 결합도가 높을수록 개방폐쇄 원칙을 따르는 구조를 설계하기 어려워진다. - 동일 클래스에서 객체 생성과 사용의 두 가지 이질적 목적을 가진 코드가 공존하는 것이 문제 -> 객체와 관련된 두 책임을 서로 다른 객체로 분리해야 함. - 객체에 대한 생성과 사용을 분리. - 사용으로부터 생성을 분리하는 방법은 객체를 생성할 책임을..
22일차. 오브젝트: 코드로 이해하는 객체지향 설계[4주차_목요일] 277-290pg #요약 **Chapter 08. 의존성 관리하기** 01. 의존성 이해하기 02. 유연한 설계 8) 컨텍스트 확장하기 - 결합도를 낮춤으로써 얻게 되는 컨텍스트의 확장이라는 개념이 유연하고 재사용 가능한 설계를 만든다. 9) 조합 가능한 행동 - 어떤 객체와 협력하느냐에 따라 객체의 행동이 달라지는 것은 유연하고 재사용 가능한 설계가 가진 특징 - 유연&재사용 가능한 설계는 객체가 어떻게 하는지를 장황하게 나열하지 않고도 객체들의 조합을 통해 무엇을 하는지를 표현하는 클래스로 구성됨. - 선언적으로 객체의 행동을 정의할 수 있음 **Chapter 09. 유연한 설계** - 8장에서 유연하고 재사용가능한 설계를 만드려고 ..
21일차. 오브젝트: 코드로 이해하는 객체지향 설계[4주차_수요일] 264-276pg #요약 **Chapter 08. 의존성 관리하기** 01. 의존성 이해하기 1) 변경과 의존성 2) 의존성 전이 3) 런타임 의존성과 컴파일타임 의존성 4) 컨텍스트 독립성 5) 의존성 해결하기 클래스의 메서드를 호출하는 대부분의 경우에 매번 동일한 객체를 인자로 전달하고 있다면 생성자를 이용하거나 setter 메서드를 이용해 의존성을 지속적으로 유지하는 방식으로 변경하는게 좋다. 02. 유연한 설계 의존성과 결합도의 관계 살펴보기 1) 의존성과 결합도 - 객체의 협력을 위해서는 서로의 존재와 수행 가능한 책임을 알아야 한다. - 의존성이 과하면 문제가 된다. - 바람직한 의존성? 재사용성이 있는 의존성, 컨텍스트에 독..
20일차. 오브젝트: 코드로 이해하는 객체지향 설계[4주차_화요일] 250-263pg #요약 **Chapter 07. 객체 분해** 01. 프로시저 추상화와 데이터 추상화 02. 프로시저 추상화와 기능 분해 03. 모듈 04. 데이터 추상화와 추상 데이터 타입 05. 클래스 1) 클래스는 추상 데이터 타입인가? 2) 추상 데이터 타입에서 클래스로 변경하기 3) 변경을 기준으로 선택하라 - 타입을 기준으로 절차를 추상화하지 않았다면 객체지향 분해가 아님. - 클래스가 추상 데이터 타입의 개념을 따랐는지 보려면 클래스 내부에 인스턴스의 타입을 표현하는 변수가 있는지 보면 됨. - 인스턴스 변수에 저장된 값을 기반으로 메서드 내에서 타입을 명시적으로 구분하는 방식은 객체지향 위반임. - 객체지향에서는 타입 변..
19일차. 오브젝트: 코드로 이해하는 객체지향 설계[4주차_월요일] 235-249pg #요약 **Chapter 07. 객체 분해** 01. 프로시저 추상화와 데이터 추상화 02. 프로시저 추상화와 기능 분해 03. 모듈 1) 정보 은닉과 모듈 - 기능을 기반으로 시스템을 분해하는 것이 아니라 변경의 방향에 맞춰 시스템 변경 - 정보 은닉(information hiding) : 시스템을 모듈 단위로 분해하기 위한 기본 원리. 시스템에서 자주 변경되는 부분을 상대적으로 덜 변경되는 안정적인 인터페이스 뒤로 감춰야 한다. - 기능 분해가 하나의 기능을 구현하기 위해 필요한 기능들을 순차적으로 찾아가는 탐색의 과정이라면 모듈 분해는 감춰야 하는 비밀을 선택하고 비밀 주변에 안정적인 보호막을 설치하는 보존의 과정..
18일차. 오브젝트: 코드로 이해하는 객체지향 설계[3주차_토요일] 225-234pg #요약 **Chapter 07. 객체 분해** 01. 프로시저 추상화와 데이터 추상화 02. 프로시저 추상화와 기능 분해 1) 메인 함수로서의 시스템 2) 급여 관리 시스템 3) 급여관리 시스템 구현 - 하향식 기능 분해는 시스템을 최상위의 가장 추상적인 메인 함수로 정의하고, 메인 함수를 구현 가능한 수준까지 세부적인 단계로 분해하는 방법 - 하향식 기능 분해 방식으로 설계한 시스템은 메인 함수를 루트로 하는 '트리(tree)'로 표현할 수 있다. 4) 하향식 기능 분해의 문제점 - 시스템은 하나의 메인 함수로 구성되어 있지 않다. - 기능 추가나 요구사항 변경으로 인해 메인 함수를 빈번하게 수정해야 한다. - 비즈니..