일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JavaScript
- 성수핫플
- 독서
- 책읽기
- 헤드퍼스트디자인패턴
- 성수직장인
- 성수
- 책너두
- 직장인
- 독서일지
- IntelliJ
- 디자인패턴
- 클린코드
- 오브젝트
- 성수볼거리
- 헤드퍼스트
- JAVA개발자
- 객체지향
- 코딩
- docker
- DesignPattern
- Linux
- 개발자
- 깨끗한코드
- 성수맛집
- 객체지향프로그래밍
- 주니어개발자
- 직장인점심
- Java
- 상속
- Today
- Total
목록책책책 책을 읽읍시다‼ ver.개발/[ 오브젝트: 코드로 이해하는 객체지향 설계 ] (44)
닭발개발
38일차. 오브젝트: 코드로 이해하는 객체지향 설계[7주차_화요일] 483-493pg #요약 **Chapter 14. 일관성 있는 협력** 01. 핸드폰 과금 시스템 변경하기 1) 기본 정책 확장 2) 고정요금 방식 구현하기 3) 시간대별 방식 구현하기 4) 요일별 방식 구현하기 5) 구간별 방식 구현하기 - 현재 구현의 가장 큰 문제는 이 클래스들이 유사한 문제를 해결하고 있음에도 불구하고 설계에 일관성이 없다는 것. - 이 클래스들은 기본 정책을 구현한다는 공통의 목적이 있지만 정책을 구현하는 방식은 완전히 다르다. - 개념적으로는 연관돼 있지만 구현 방식에 있어서는 완전히 제각각 - 유사한 기능을 서로 다른 방식으로 구현해서는 안된다. - 유사한 기능은 유사한 방식으로 구현해야 한다. 02. 설계에..
37일차. 오브젝트: 코드로 이해하는 객체지향 설계[7주차_월요일] 471-482pg #요약 **Chapter 14. 일관성 있는 협력** 01. 핸드폰 과금 시스템 변경하기 1) 기본 정책 확장 2) 고정요금 방식 구현하기 3) 시간대별 방식 구현하기 - 책임을 할당하는 기본 원칙은 책임을 수행하는 데 필요한 정보를가장 잘 알고있는 정보 전문가에게 할당하는 것.
35일차. 오브젝트: 코드로 이해하는 객체지향 설계[6주차_금요일] 447-459pg #요약 **Chapter 13. 서브클래싱과 서브타이핑** 01. 타입 02. 타입의 계층 03. 서브클래싱과 서브타이핑 4) 클라이언트의 기대에 따라 계층 분리하기 - 인터페이스는 클라이언트가 기대하는 바에 따라 분리돼야 한다. 그러면 변경에 대한 영향을 더 세밀하게 제어할 수 있게 된다. - 인터페이스는 클라이언트의 요구가 바뀜에 따라변겨된다. - 인터페이스 분리 원칙 : 인터페이스를 클라이언트의 기대에 따라 분리함으로써 변경에 의해 영향을 제어하는 설계 원칙 - 인터페이스 분리 원칙은 비대한 인터페이스의 단점을 해결한다. - 설계가 꼭 현실 세계를 반영할 필요는 없다. - 현실을 정확하게 묘사하는 것이 아니라 요구..
34일차. 오브젝트: 코드로 이해하는 객체지향 설계[6주차_목요일] 436-446pg #요약 **Chapter 13. 서브클래싱과 서브타이핑** - 13장의 목표 : 상속이 서브타입 다형성과 동적 메서드 탐색에 밀접하게 연관돼어 있음 알기. - 객체기반 프로그래밍 : 상태와 행동을 캡슐화한 객체를 조합해서 프로그램을 구성하는 방식. - 객체지향 프로그래밍 : 객체기반 프로그래밍의 한 종류, 상속과 다형성을 지원하지만 객체기반 프로그래밍은 지원하지 않음. 01. 타입 1) 개념 관점의 타입 : 우리가 인지하는 세상의 사물의 종류 - 우리가 인식하는 객체들에 적용하는 개념이나 아이디어 - 어떤 대상이 타입으로 분류될 때 그 대상을 타입의 인스턴스라고 부름 - 객체 : 타입의 인스턴스 - 타입은 심볼, 내연,..
33일차. 오브젝트: 코드로 이해하는 객체지향 설계[6주차_수요일] 425-435pg #요약**Chapter 12. 다형성** 01. 다형성(Polymorphism) 02. 상속의 양면성 03. 업캐스팅과 동적 바인딩 04. 동적 메서드 탐색과 다형성 1) 자동적인 메시지 위임 2) 동적인 문맥 3) 이해할 수 없는 메시지 a. 정적타입 언어일 때 b. 동적타입 언어일 때 4) self 대 super - super를 런타임에 결정하는 경우 : 스칼라의 트레이트는 super의 대상을 믹스인되는 순서에 따라 동적으로 결정함. 따라서 사용하는 언어의 특성에 따라 달라질 수 있다. - 동적 바인딩과 self 참조는 동일한 메시지를 수신하더라도 객체의 타입에 따라 적합한 메서드를 동적으로 선택할 수 있게 함. -..
32일차. 오브젝트: 코드로 이해하는 객체지향 설계[6주차_화요일] 416-424pg #요약 **Chapter 12. 다형성** 01. 다형성(Polymorphism) 02. 상속의 양면성 03. 업캐스팅과 동적 바인딩 04. 동적 메서드 탐색과 다형성 1) 자동적인 메시지 위임 2) 동적인 문맥 - 메시지를 수신한 객체가 무엇이냐에 따라 메서드 탐색을 위한 문맥이 동적으로 바뀌고, 동적인 문맥을 결정하는 것은 바로 메시지를 수신한 객체를 가리키는 self 참조. - self 전송 : self 참조가 가리키는 자기 자신에게 메시지를 전송하는 것. - self 전송을 이해하려면 self 참조가 가리키는 그 객체에서부터 메시지 탐색을 다시 시작해야 한다. 3) 이해할 수 없는 메시지 - 클래스는 자신이 처리..
31일차. 오브젝트: 코드로 이해하는 객체지향 설계[6주차_월요일] 403-415pg #요약 **Chapter 12. 다형성** 01. 다형성(Polymorphism) 02. 상속의 양면성 03. 업캐스팅과 동적 바인딩 1) 같은 메시지, 다른 메서드 - 업캐스팅 : 부모 클래스 타입으로 선언된 변수에 자식 클래스의 인스턴스를 할당하는 것이 가능한 것. 부모클래스에 대해 작성된 코드를 전혀 수정하지 않고도 자식 클래스에 적용할 수 있음. - 동적 바인딩 : 객체지향 시스템이 메시지를 처리할 적절한 메서드를 컴파일 시점이 아니라 실행시점에 결정하기 때문에 선언된 변수의 타입이 아니라 메시지를 수신하는 객체의타입에 따라 샐행되는 메서드가 결정되는 것. - 업캐스팅과 동적 바인딩은 상속을 이용해 개방-폐쇄 원..
30일차. 오브젝트: 코드로 이해하는 객체지향 설계[5주차_토요일] 393-402pg #요약 **Chapter 12. 다형성** - 상속의 목적은 코드 재사용이 아닌 타입 계층을 구조화하기 위함. - 타입 계층은 객체지향 프로그래밍의 중요한 특성 중 하나인 다형성의 기반을 제공함. - 이번 장의 목적 : 상속의 관점에서 다형성이 구현되는 기술적인 메커니즘 살펴보기 01. 다형성(Polymorphism) 02. 상속의 양면성 - 상속의 목적은 프로그램을 구성하는 개념들을 기반으로 다형성을 가능하게 하는 타입 계층을 구축하기 위한 것이다. - 타입 계층에 댛란 고민 없이 코드를 재사용하기 위해 상속을 사용하면 이해하기 어렵고 유지보수하기 버거운 코드가 만들어진다. 1) 상속을 사용한 강의 평가 - 일반적으로..
29일차. 오브젝트: 코드로 이해하는 객체지향 설계[5주차_금요일] 378-392pg #요약 **Chapter 11. 합성과 유연한 설계** 01. 상속을 합성으로 변경하기 02. 상속으로 인한 조합의 폭발적인 증가 03. 합성 관계로 변경하기 1) 기본 정책 합성하기 2) 부가 정책 적용하기 3) 기본 정책과 부가 정책 합성하기 4) 새로운 정책 추가하기 5) 객체 합성이 클래스 상속보다 더 좋은 방법이다. - 상속은 부모 클래스의 세부적인 구현에 자식 클래스를 강하게 결합 시키기 때문에 코드의 진화를 방해함. - 믹스인 : 상속과 합성의 특성을 모두 보유하고 있는 독특한 코드 재사용 방법 04. 믹스인 - 상속과 클래스를 기반으로 하는 재사용 방법을 사용하면 클래스의 확장과 수정을 일관성 있게 표현할..
28일차. 오브젝트: 코드로 이해하는 객체지향 설계[5주차_목요일] 364-377pg #요약 **Chapter 11. 합성과 유연한 설계** 01. 상속을 합성으로 변경하기 02. 상속으로 인한 조합의 폭발적인 증가 - 상속으로 인해서 -> 작은기능들을 조합해서 더 큰 기능을 수행하는 객체를 만들어야 하는 경우가 생김 1) 기본 정책과 부가 정책 조합하기 2) 상속을 이용해서 기본 정책 구현 3) 기본 정책에 세금 정책 조합 4) 기본 정책에 기본 요금 할인 정책 조합하기 5) 중복 코드의 덫에 걸리다 - 클래스 폭발, 조합의 폭발 : 상속의 남용. 하나의 기능을 추가하기 위해 필요 이상으로 많은 수의 클래스를 추가해야 하는 경우. 자식 클래스가 부모 클래스의 구현에 강하게 결합되도록 강요하는 상속의 근..