{"product_id":"139495","title":"오브젝트","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPBp6XsDf9PpYSJ6ZumAuM0Czeit.png?v=1765075118\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\u003ccenter\u003e\n\u003cdiv style=\"width:95%\"\u003e\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e오브젝트\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/74219491\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eDescription\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e책소개\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cdiv\u003e  \u003cb\u003e역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다.\u003cbr\u003e객체지향으로 향하는 두번째 걸음은 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것이다.\u003cbr\u003e세번째 걸음을 내디딜 수 있는지 여부는 협력에 참여하는 객체 들에게 얼마나 적절한 역할과 책임을 부여할 수 있느냐에 달려 있다.\u003cbr\u003e객체지향의 마지막 걸음은 앞에서 설명한 개념들을 여러분이 사용하는 프로그래밍 언어라는 틀에 흐트러짐 없이 담아낼 수 있는 기술을 익히는 것이다.\u003cbr\u003e\u003cbr\u003e《객체지향의 사실과 오해》가 첫번째 걸음과 두번째 걸음인 객체와 협력에 초점을 맞췄다면 《오브젝트: 코드로 이해하는 객체지향 설계》는 세번째와 네번째 걸음인 책임의 할당과 그 구현에 초점을 맞춘다.\u003cbr\u003e이 책을 읽고 나면 객체에 적절한 역할과 책임을 부여하는 방법과 유연하면서도 요구사항에 적절한 협력을 설계하는 방법을 익히게 될 것이다.\u003cbr\u003e나아가 프로그래밍 언어라는 도구를 이용해 객체지향의 개념과 원칙들을 오롯이 표현할 수 있는 방법 역시 익힐 수 있을 것이다.\u003cbr\u003e\n\u003c\/div\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cul\u003e \u003cli\u003e 책의 일부 내용을 미리 읽어보실 수 있습니다.\u003cbr\u003e\u003cspan\u003e미리보기\u003c\/span\u003e\n\u003c\/li\u003e \u003c\/ul\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e목차\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  ◎ 들어가며: 프로그래밍 패러다임\u003cbr\u003e01 패러다임의 시대 \u003cbr\u003e02 프로그래밍 패러다임 \u003cbr\u003e\u003cbr\u003e◎ 1장: 객체, 설계\u003cbr\u003e01.\u003cbr\u003e티켓 판매 애플리케이션 구현하기 \u003cbr\u003e02.\u003cbr\u003e무엇이 문제인가 \u003cbr\u003e___예상을 빗나가는 코드 \u003cbr\u003e___변경에 취약한 코드 \u003cbr\u003e03.\u003cbr\u003e설계 개선하기 \u003cbr\u003e___자율성을 높이자 \u003cbr\u003e___무엇이 개선됐는가 \u003cbr\u003e___어떻게 한 것인가 \u003cbr\u003e___캡슐화와 응집도 \u003cbr\u003e___절차지향과 객체지향 \u003cbr\u003e___책임의 이동 \u003cbr\u003e___더 개선할 수 있다 \u003cbr\u003e___그래, 거짓말이다! \u003cbr\u003e04.\u003cbr\u003e객체지향 설계 \u003cbr\u003e___설계가 왜 필요한가 \u003cbr\u003e___객체지향 설계 \u003cbr\u003e\u003cbr\u003e◎ 2장: 객체지향 프로그래밍\u003cbr\u003e01.\u003cbr\u003e영화 예매 시스템 \u003cbr\u003e___ 요구사항 살펴보기 \u003cbr\u003e02.\u003cbr\u003e객체지향 프로그래밍을 향해 \u003cbr\u003e___ 협력, 객체, 클래스 \u003cbr\u003e___ 도메인의 구조를 따르는 프로그램 구조 \u003cbr\u003e___ 클래스 구현하기 \u003cbr\u003e___ 협력하는 객체들의 공동체 \u003cbr\u003e___ 협력에 관한 짧은 이야기 \u003cbr\u003e03.\u003cbr\u003e할인 요금 구하기 \u003cbr\u003e___ 할인 요금 계산을 위한 협력 시작하기 \u003cbr\u003e___ 할인 정책과 할인 조건 \u003cbr\u003e___ 할인 정책 구성하기 \u003cbr\u003e04.\u003cbr\u003e상속과 다형성 \u003cbr\u003e___ 컴파일 시간 의존성과 실행 시간 의존성 \u003cbr\u003e___ 차이에 의한 프로그래밍 \u003cbr\u003e___ 상속과 인터페이스 \u003cbr\u003e___ 다형성 \u003cbr\u003e___ 인터페이스와 다형성 \u003cbr\u003e05.\u003cbr\u003e추상화와 유연성 \u003cbr\u003e___ 추상화의 힘 \u003cbr\u003e___ 유연한 설계 \u003cbr\u003e___ 추상 클래스와 인터페이스 트레이드오프 \u003cbr\u003e___ 코드 재사용 \u003cbr\u003e___ 상속 \u003cbr\u003e___ 합성 \u003cbr\u003e\u003cbr\u003e◎ 3장: 역할, 책임, 협력\u003cbr\u003e01.\u003cbr\u003e협력 \u003cbr\u003e___ 영화 예매 시스템 돌아보기 \u003cbr\u003e___ 협력 \u003cbr\u003e___ 협력이 설계를 위한 문맥을 결정한다 \u003cbr\u003e02.\u003cbr\u003e책임 \u003cbr\u003e___ 책임이란 무엇인가 \u003cbr\u003e___ 책임 할당 \u003cbr\u003e___ 책임 주도 설계 \u003cbr\u003e___ 메시지가 객체를 결정한다 \u003cbr\u003e___ 행동이 상태를 결정한다 \u003cbr\u003e03.\u003cbr\u003e역할 \u003cbr\u003e___ 역할과 협력 \u003cbr\u003e___ 유연하고 재사용 가능한 협력 \u003cbr\u003e___ 객체 대 역할 \u003cbr\u003e___ 역할과 추상화 \u003cbr\u003e___ 배우와 배역 \u003cbr\u003e\u003cbr\u003e◎ 4장: 설계 품질과 트레이드오프\u003cbr\u003e01.\u003cbr\u003e데이터 중심의 영화 예매 시스템 \u003cbr\u003e___ 데이터를 준비하자 \u003cbr\u003e___ 영화를 예매하자 \u003cbr\u003e02.\u003cbr\u003e설계 트레이드오프 \u003cbr\u003e___ 캡슐화 \u003cbr\u003e___ 응집도와 결합도 \u003cbr\u003e03.\u003cbr\u003e데이터 중심의 영화 예매 시스템의 문제점 \u003cbr\u003e___ 캡슐화 위반 \u003cbr\u003e___ 높은 결합도 \u003cbr\u003e___ 낮은 응집도 \u003cbr\u003e___ 캡슐화를 지켜라 \u003cbr\u003e04.\u003cbr\u003e자율적인 객체를 향해 \u003cbr\u003e___ 스스로 자신의 데이터를 책임지는 객체 \u003cbr\u003e___ 캡슐화 위반 \u003cbr\u003e05.\u003cbr\u003e하지만 여전히 부족하다 \u003cbr\u003e___ 높은 결합도 \u003cbr\u003e___ 낮은 응집도 \u003cbr\u003e___ 데이터 중심 설계는 객체의 행동보다는 상태에 초점을 맞춘다 \u003cbr\u003e06.\u003cbr\u003e데이터 중심 설계의 문제점 \u003cbr\u003e___ 데이터 중심 설계는 객체를 고립시킨 채 오퍼레이션을 정의하도록 만든다 \u003cbr\u003e\u003cbr\u003e◎ 5장: 책임 할당하기\u003cbr\u003e01.\u003cbr\u003e책임 주도 설계를 향해 \u003cbr\u003e___ 데이터보다 행동을 먼저 결정하라 \u003cbr\u003e___ 협력이라는 문맥 안에서 책임을 결정하라 \u003cbr\u003e___ 책임 주도 설계 \u003cbr\u003e02.\u003cbr\u003e책임 할당을 위한 GRASP 패턴 \u003cbr\u003e___ 도메인 개념에서 출발하기 \u003cbr\u003e___ 정보 전문가에게 책임을 할당하라 \u003cbr\u003e___ 높은 응집도와 낮은 결합도 \u003cbr\u003e___ 창조자에게 객체 생성 책임을 할당하라 \u003cbr\u003e03.\u003cbr\u003e구현을 통한 검증 \u003cbr\u003e___ DiscountCondition 개선하기 \u003cbr\u003e___ 타입 분리하기 \u003cbr\u003e___ 다형성을 통해 분리하기 \u003cbr\u003e___변경으로부터 보호하기 \u003cbr\u003e___ Movie 클래스 개선하기 \u003cbr\u003e___ 변경과 유연성 \u003cbr\u003e04.\u003cbr\u003e책임 주도 설계의 대안 \u003cbr\u003e___ 메서드 응집도 \u003cbr\u003e___ 객체를 자율적으로 만들자 \u003cbr\u003e\u003cbr\u003e◎ 6장: 메시지와 인터페이스\u003cbr\u003e01.\u003cbr\u003e협력과 메시지 \u003cbr\u003e___ 클라이언트-서버 모델 \u003cbr\u003e___ 메시지와 메시지 전송 \u003cbr\u003e___ 메시지와 메서드 \u003cbr\u003e___ 퍼블릭 인터페이스와 오퍼레이션 \u003cbr\u003e___ 시그니처 \u003cbr\u003e02.\u003cbr\u003e인터페이스와 설계 품질 \u003cbr\u003e___ 묻지 말고 시켜라 \u003cbr\u003e___ 의도를 드러내는 인터페이스 \u003cbr\u003e___ 함께 모으기 \u003cbr\u003e03.\u003cbr\u003e원칙의 함정 \u003cbr\u003e___ 디미터 법칙은 하나의 도트(.)를 강제하는 규칙이 아니다 \u003cbr\u003e___ 결합도와 응집도의 충돌 \u003cbr\u003e04.\u003cbr\u003e명령-쿼리 분리 원칙 \u003cbr\u003e___ 반복 일정의 명령과 쿼리 분리하기 \u003cbr\u003e___ 명령-쿼리 분리와 참조 투명성 \u003cbr\u003e___ 책임에 초점을 맞춰라 \u003cbr\u003e\u003cbr\u003e◎ 7장: 객체 분해\u003cbr\u003e01.\u003cbr\u003e프로시저 추상화와 데이터 추상화 \u003cbr\u003e02.\u003cbr\u003e프로시저 추상화와 기능 분해 \u003cbr\u003e___ 메인 함수로서의 시스템 \u003cbr\u003e___ 급여 관리 시스템 \u003cbr\u003e___ 급여 관리 시스템 구현 \u003cbr\u003e___ 하향식 기능 분해의 문제점 \u003cbr\u003e___ 언제 하향식 분해가 유용한가? \u003cbr\u003e03.\u003cbr\u003e모듈 \u003cbr\u003e___ 정보 은닉과 모듈 \u003cbr\u003e___ 모듈의 장점과 한계 \u003cbr\u003e04.\u003cbr\u003e데이터 추상화와 추상 데이터 타입 \u003cbr\u003e___ 추상 데이터 타입 \u003cbr\u003e05.\u003cbr\u003e클래스 \u003cbr\u003e___ 클래스는 추상 데이터 타입인가? \u003cbr\u003e___ 추상 데이터 타입에서 클래스로 변경하기 \u003cbr\u003e___ 변경을 기준으로 선택하라 \u003cbr\u003e___ 협력이 중요하다 \u003cbr\u003e\u003cbr\u003e◎ 8장: 의존성 관리하기\u003cbr\u003e01.\u003cbr\u003e의존성 이해하기 \u003cbr\u003e___ 변경과 의존성 \u003cbr\u003e___ 의존성 전이 \u003cbr\u003e___ 런타임 의존성과 컴파일타임 의존성 \u003cbr\u003e___ 컨텍스트 독립성 \u003cbr\u003e___ 의존성 해결하기 \u003cbr\u003e02.\u003cbr\u003e유연한 설계 \u003cbr\u003e___ 의존성과 결합도 \u003cbr\u003e___ 지식이 결합을 낳는다 \u003cbr\u003e___ 추상화에 의존하라 \u003cbr\u003e___ 명시적인 의존성 \u003cbr\u003e___ new는 해롭다 \u003cbr\u003e___ 가끔은 생성해도 무방하다 \u003cbr\u003e___ 표준 클래스에 대한 의존은 해롭지 않다 \u003cbr\u003e___ 컨텍스트 확장하기 \u003cbr\u003e___ 조합 가능한 행동 \u003cbr\u003e\u003cbr\u003e◎ 9장: 유연한 설계\u003cbr\u003e01.\u003cbr\u003e개방-폐쇄 원칙 \u003cbr\u003e___ 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라 \u003cbr\u003e___ 추상화가 핵심이다 \u003cbr\u003e02.\u003cbr\u003e생성 사용 분리 \u003cbr\u003e___ FACTORY 추가하기 \u003cbr\u003e___ 순수한 가공물에게 책임 할당하기 \u003cbr\u003e03.\u003cbr\u003e의존성 주입 \u003cbr\u003e___ 숨겨진 의존성은 나쁘다 \u003cbr\u003e04.\u003cbr\u003e의존성 역전 원칙 \u003cbr\u003e___ 추상화와 의존성 역전 \u003cbr\u003e___ 의존성 역전 원칙과 패키지 \u003cbr\u003e05.\u003cbr\u003e유연성에 대한 조언 \u003cbr\u003e___ 유연한 설계는 유연성이 필요할 때만 옳다 \u003cbr\u003e___ 협력과 책임이 중요하다 \u003cbr\u003e\u003cbr\u003e◎ 10장: 상속과 코드 재사용\u003cbr\u003e01.\u003cbr\u003e상속과 중복 코드 \u003cbr\u003e___ DRY 원칙 \u003cbr\u003e___ 중복과 변경 \u003cbr\u003e___ 상속을 이용해서 중복 코드 제거하기 \u003cbr\u003e___ 강하게 결합된 Phone과 NightlyDiscountPhone \u003cbr\u003e02.\u003cbr\u003e취약한 기반 클래스 문제 \u003cbr\u003e___ 불필요한 인터페이스 상속 문제 \u003cbr\u003e___ 메서드 오버라이딩의 오작용 문제 \u003cbr\u003e___ 부모 클래스와 자식 클래스의 동시 수정 문제 \u003cbr\u003e03.\u003cbr\u003ePhone 다시 살펴보기 \u003cbr\u003e___ 추상화에 의존하자 \u003cbr\u003e___ 차이를 메서드로 추출하라 \u003cbr\u003e___ 중복 코드를 부모 클래스로 올려라 \u003cbr\u003e___ 추상화가 핵심이다 \u003cbr\u003e___ 의도를 드러내는 이름 선택하기 \u003cbr\u003e___ 세금 추가하기 \u003cbr\u003e04.\u003cbr\u003e차이에 의한 프로그래밍 \u003cbr\u003e\u003cbr\u003e◎ 11장: 합성과 유연한 설계\u003cbr\u003e01.\u003cbr\u003e상속을 합성으로 변경하기 \u003cbr\u003e___ 불필요한 인터페이스 상속 문제: java.util.Properties와 java.util.Stack \u003cbr\u003e___ 메서드 오버라이딩의 오작용 문제: InstrumentedHashSet \u003cbr\u003e___ 부모 클래스와 자식 클래스의 동시 수정 문제: PersonalPlaylist \u003cbr\u003e02.\u003cbr\u003e상속으로 인한 조합의 폭발적인 증가 \u003cbr\u003e___ 기본 정책과 부가 정책 조합하기 \u003cbr\u003e___ 상속을 이용해서 기본 정책 구현하기 \u003cbr\u003e___ 기본 정책에 세금 정책 조합하기 \u003cbr\u003e___ 기본 정책에 기본 요금 할인 정책 조합하기 \u003cbr\u003e___ 중복 코드의 덫에 걸리다 \u003cbr\u003e03.\u003cbr\u003e합성 관계로 변경하기 \u003cbr\u003e___ 기본 정책 합성하기 \u003cbr\u003e___ 부가 정책 적용하기 \u003cbr\u003e___ 기본 정책과 부가 정책 합성하기 \u003cbr\u003e___ 새로운 정책 추가하기 \u003cbr\u003e___ 객체 합성이 클래스 상속보다 더 좋은 방법이다 \u003cbr\u003e04.\u003cbr\u003e믹스인 \u003cbr\u003e___ 기본 정책 구현하기 \u003cbr\u003e___ 트레이트로 부가 정책 구현하기 \u003cbr\u003e___ 부가 정책 트레이트 믹스인하기 \u003cbr\u003e___ 쌓을 수 있는 변경 \u003cbr\u003e\u003cbr\u003e◎ 12장: 다형성\u003cbr\u003e01.\u003cbr\u003e다형성 \u003cbr\u003e02.\u003cbr\u003e상속의 양면성 \u003cbr\u003e___ 상속을 사용한 강의 평가 \u003cbr\u003e___ 데이터 관점의 상속 \u003cbr\u003e___ 행동 관점의 상속 \u003cbr\u003e03.\u003cbr\u003e업캐스팅과 동적 바인딩 \u003cbr\u003e___ 같은 메시지, 다른 메서드 \u003cbr\u003e___ 업캐스팅 \u003cbr\u003e___ 동적 바인딩 \u003cbr\u003e04.\u003cbr\u003e동적 메서드 탐색과 다형성 \u003cbr\u003e___ 자동적인 메시지 위임 \u003cbr\u003e___ 동적인 문맥 \u003cbr\u003e___ 이해할 수 없는 메시지 \u003cbr\u003e___ self 대 super \u003cbr\u003e05.\u003cbr\u003e상속 대 위임 \u003cbr\u003e___ 위임과 self 참조 \u003cbr\u003e___ 프로토타입 기반의 객체지향 언어 \u003cbr\u003e\u003cbr\u003e◎ 13장: 서브클래싱과 서브타이핑\u003cbr\u003e01.\u003cbr\u003e타입 \u003cbr\u003e___ 개념 관점의 타입 \u003cbr\u003e___ 프로그래밍 언어 관점의 타입 \u003cbr\u003e___ 객체지향 패러다임 관점의 타입 \u003cbr\u003e02.\u003cbr\u003e타입 계층 \u003cbr\u003e___ 타입 사이의 포함관계 \u003cbr\u003e___ 객체지향 프로그래밍과 타입 계층 \u003cbr\u003e03.\u003cbr\u003e서브클래싱과 서브타이핑 \u003cbr\u003e___ 언제 상속을 사용해야 하는가? \u003cbr\u003e___ is-a 관계 \u003cbr\u003e___ 행동 호환성 \u003cbr\u003e___ 클라이언트의 기대에 따라 계층 분리하기 \u003cbr\u003e___ 서브클래싱과 서브타이핑 \u003cbr\u003e04.\u003cbr\u003e리스코프 치환 원칙 \u003cbr\u003e___ 클라이언트와 대체 가능성 \u003cbr\u003e___ is-a 관계 다시 살펴보기 \u003cbr\u003e___ 리스코프 치환 원칙은 유연한 설계의 기반이다 \u003cbr\u003e___ 타입 계층과 리스코프 치환 원칙 \u003cbr\u003e05.\u003cbr\u003e계약에 의한 설계와 서브타이핑 \u003cbr\u003e___ 서브타입과 계약 \u003cbr\u003e\u003cbr\u003e◎ 14장: 일관성 있는 협력\u003cbr\u003e01.\u003cbr\u003e핸드폰 과금 시스템 변경하기 \u003cbr\u003e___ 기본 정책 확장 \u003cbr\u003e___ 고정요금 방식 구현하기 \u003cbr\u003e___ 시간대별 방식 구현하기 \u003cbr\u003e___ 요일별 방식 구현하기 \u003cbr\u003e___ 구간별 방식 구현하기 \u003cbr\u003e02.\u003cbr\u003e설계에 일관성 부여하기 \u003cbr\u003e___ 조건 로직 대 객체 탐색 \u003cbr\u003e___ 캡슐화 다시 살펴보기 \u003cbr\u003e03.\u003cbr\u003e일관성 있는 기본 정책 구현하기 \u003cbr\u003e___ 변경 분리하기 \u003cbr\u003e___ 변경 캡슐화하기 \u003cbr\u003e___ 협력 패턴 설계하기 \u003cbr\u003e___ 추상화 수준에서 협력 패턴 구현하기 \u003cbr\u003e___ 구체적인 협력 구현하기 \u003cbr\u003e___ 협력 패턴에 맞추기 \u003cbr\u003e___ 패턴을 찾아라 \u003cbr\u003e\u003cbr\u003e◎ 15장: 디자인 패턴과 프레임워크\u003cbr\u003e01.\u003cbr\u003e디자인 패턴과 설계 재사용 \u003cbr\u003e___ 소프트웨어 패턴 \u003cbr\u003e___ 패턴 분류 \u003cbr\u003e___ 패턴과 책임-주도 설계 \u003cbr\u003e___ 캡슐화와 디자인 패턴 \u003cbr\u003e___ 패턴은 출발점이다 \u003cbr\u003e02.\u003cbr\u003e프레임워크와 코드 재사용 \u003cbr\u003e___ 코드 재사용 대 설계 재사용 \u003cbr\u003e___ 상위 정책과 하위 정책으로 패키지 분리하기 \u003cbr\u003e___ 제어 역전 원리 \u003cbr\u003e\u003cbr\u003e◎ 마치며: 나아가기\u003cbr\u003e \u003cbr\u003e◎ 부록A: 계약에 의한 설계\u003cbr\u003e01.\u003cbr\u003e협력과 계약 \u003cbr\u003e___ 부수효과를 명시적으로 \u003cbr\u003e___ 계약 \u003cbr\u003e02.\u003cbr\u003e계약에 의한 설계 \u003cbr\u003e___사전조건 \u003cbr\u003e___ 사후조건 \u003cbr\u003e___ 불변식 \u003cbr\u003e03.\u003cbr\u003e계약에 의한 설계와 서브타이핑 \u003cbr\u003e___ 계약 규칙 \u003cbr\u003e___ 가변성 규칙 \u003cbr\u003e___ 함수 타입과 서브타이핑 \u003cbr\u003e\u003cbr\u003e◎ 부록B: 타입 계층의 구현\u003cbr\u003e___ 클래스를 이용한 타입 계층 구현 \u003cbr\u003e___ 인터페이스를 이용한 타입 계층 구현 \u003cbr\u003e___ 추상 클래스를 이용한 타입 계층 구현 \u003cbr\u003e___ 추상 클래스와 인터페이스?결합하기 \u003cbr\u003e___ 덕 타이핑 사용하기 \u003cbr\u003e___ 믹스인과 타입 계층 \u003cbr\u003e\u003cbr\u003e◎ 부록C: 동적인 협력, 정적인 코드\u003cbr\u003e01.\u003cbr\u003e동적 모델과 정적 모델 \u003cbr\u003e___ 행동이 코드를 결정한다 \u003cbr\u003e___ 변경을 고려하라 \u003cbr\u003e02.\u003cbr\u003e도메인 모델과 구현 \u003cbr\u003e___ 도메인 모델에 관하여 \u003cbr\u003e___ 몬스터 설계하기 \u003cbr\u003e___ 행동과 변경을 고려한 도메인 모델 \u003cbr\u003e___ 분석 모델, 설계 모델, 그리고 구현 모델 \u003cbr\u003e\u003cbr\u003e◎ 부록D: 참고문헌\u003cbr\u003e___ 참고문헌 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e상세 이미지\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e \u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate2333\/MidCate003\/233226355.jpg\" border=\"0\" alt=\"상세 이미지 1\"\u003e \u003c\/div\u003e \u003c\/div\u003e \u003cbr\u003e\u003cdiv\u003e \u003ch5\u003e\u003cb\u003e출판사 리뷰\u003c\/b\u003e\u003c\/h5\u003e \u003c\/div\u003e \u003cdiv\u003e \u003cdiv\u003e  본서에서 다루는 내용은 다음과 같습니다.\u003cbr\u003e\u003cbr\u003e◎ 역할, 책임, 협력에 기반해 객체지향 프로그램을 설계하고 구현하는 방법\u003cbr\u003e◎ 응집도와 결합도를 이용해 설계를 트레이드오프하는 방법\u003cbr\u003e◎ 설계를 유연하게 만드는 다양한 의존성 관리 기법\u003cbr\u003e◎ 타입 계층을 위한 상속과 코드 재사용을 위한 합성의 개념\u003cbr\u003e◎ 다양한 설계 원칙과 디자인 패턴 \u003c\/div\u003e \u003cdiv\u003e\u003c\/div\u003e \u003c\/div\u003e \u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eGOODS SPECIFICS\u003c\/div\u003e\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e발행일 : \u003c\/strong\u003e2019년 06월 17일\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003e쪽수, 무게, 크기 : \u003c\/strong\u003e656쪽 | 188*240*27mm\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13 : \u003c\/strong\u003e9791158391409\u003c\/div\u003e\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN10 : \u003c\/strong\u003e1158391404\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003ccenter\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003cspan\u003e\u003c\/span\u003e\n\u003c\/center\u003e\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893358788650,"sku":"139495","price":46.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/1ee431f28e0204c1f36b1cef544035b2.jpg?v=1765398365","url":"https:\/\/librairie.coreenne.fr\/ko\/products\/139495","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}