오브젝트
객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것이다. 세번째 걸음을 내디딜 수 있는지 여부는 협력에 참여하는 객체 들에게 얼마나 적절한 역할과 책임을 부여할 수 있느냐에 달려 있다. 객체지향의 마지막 걸음은 앞에서 설명한 개념들을 여러분이 사용하는 프로그래밍 언어라는 틀에 흐트러짐 없이 담아낼 수 있는 기술을 익히는 것이다. 《객체지향의 사실과 오해》가 첫번째 걸음과 두번째 걸음인 객체와 협력에 초점을 맞췄다면 《오브젝트: 코드로 이해하는 객체지향 설계》는 세번째와 네번째 걸음인 책임의 할당과 그 구현에 초점을 맞춘다. 이 책을 읽고 나면 객체에 적절한 역할과 책임을 부여하는 방법과 유연하면서도 요구사항에 적절한 협력을 설계하는 방법을 익히게 될 것이다. 나아가 프로그래밍 언어라는 도구를 이용해 객체지향의 개념과 원칙들을 오롯이 표현할 수 있는 방법 역시 익힐 수 있을 것이다. ★ 이 책에서 다루는 내용 ★ ◎ 역할, 책임, 협력에 기반해 객체지향 프로그램을 설계하고 구현하는 방법 ◎ 응집도와 결합도를 이용해 설계를 트레이드오프하는 방법 ◎ 설계를 유연하게 만드는 다양한 의존성 관리 기법 ◎ 타입 계층을 위한 상속과 코드 재사용을 위한 합성의 개념 ◎ 다양한 설계 원칙과 디자인 패턴
- 저자
- 조영호
- 출판
- 위키북스
- 출판일
- 2019.06.17
package ch12;
import java.util.Arrays;
public class LectureMain {
public static void main(String[] args) {
Lecture lecture = new Lecture("객체지향 프로그래밍", 70, Arrays.asList(81, 95, 75, 50, 45));
String evaluation = lecture.evaluate();
Lecture lecture2 = new GradeLecture(
"객체지향 프로그래밍",
70,
Arrays.asList(new Grade("A", 100, 95),
new Grade("B", 94, 80)),
Arrays.asList(81, 95, 75, 50, 45));
Professor professor = new Professor("다익스트라", new Lecture("알고리즘", 70, Arrays.asList(81, 95, 75, 50, 45)));
String statistics = professor.compileStatistics();
Professor professor2 = new Professor("다익스트라", new GradeLecture("알고리즘", 70,
Arrays.asList(new Grade("A", 100, 95),
new Grade("B", 94, 80)),
Arrays.asList(81, 95, 75, 50, 45)));
String statistics2 = professor2.compileStatistics();
}
}
lecture 예제로 다형성 구현
업캐스팅
Lecture lecture = new GradeLecture(...);
반대로 부모 클래스의 인스턴스를 자식 클래스 타입으로 변환하기 위해서는 명시적인 타입 캐스팅이 필요한데 이를 다운캐스팅이라고 부른다.
다운캐스팅
Lecture lecture = new GradeLecture(...);
GradeLecture GradeLecture = (GradeLecture) lecture;
406p
반응형
'Book' 카테고리의 다른 글
[독서 기록] 1만 시간의 재발견, 안데르스 에릭슨 (0) | 2023.05.17 |
---|---|
[독서 기록] 오브젝트 14장 일관성 있는 협력 (0) | 2023.01.18 |
[독서 기록] 오브젝트 10장 상속과 코드 재사용 11장 합성과 유연한 설계 (0) | 2023.01.17 |
[독서 기록] 오브젝트 8장 의존성 관리하기 9장 유연한 설계 (0) | 2023.01.17 |
[독서 기록] 오브젝트 6장 메시지와 인터페이스 (0) | 2023.01.17 |