Object-Oriented Design Heuristics(Hardcover)
暫譯: 物件導向設計啟發式 (精裝版)
Arthur J. Riel
- 出版商: Addison Wesley
- 出版日期: 1996-05-10
- 售價: $2,570
- 貴賓價: 9.5 折 $2,442
- 語言: 英文
- 頁數: 400
- 裝訂: Hardcover
- ISBN: 020163385X
- ISBN-13: 9780201633856
-
相關分類:
Object-oriented
已絕版
買這商品的人也買了...
-
$2,740$2,603 -
$580$458 -
$680$537 -
$680$537 -
$1,100$1,045 -
$700Framework Process Patterns: Lessons Learned Developing Application Frameworks
-
$880$695 -
$2,640$2,508 -
$350$277 -
$280$218 -
$2,580$2,451 -
$650$514 -
$590$466 -
$690$538 -
$720$569 -
$2,800$2,660 -
$520$411 -
$680$537 -
$750$638 -
$560$476 -
$880$695 -
$420$328 -
$2,185Design Patterns Explained: A New Perspective on Object-Oriented Design, 2/e (Paperback)
-
$2,580$2,451 -
$790$624
相關主題
商品描述
Table of Contents
Preface.
Acknowledgments.
1. The Motivation for Object-Oriented Programming.
Accidental Versus Essential Complexity à la Frederick Brooks.
The Waterfall Model.
The Iterative Model.
Same- Versus Different-Language Prototyping.
Software Reusability.
Corporate Hierarchies of Good Designers.
2. Classes and Objects: The Building Blocks of the Object-Oriented Paradigm.
Messages and Methods.
Class Coupling and Cohesion.
Dynamic Semantics.
Abstract Classes.
Roles Versus Classes.
3. Topologies of Action-Oriented Versus Object-Oriented Applications.
When the Action-Oriented Paradigm Goes Right.
The God Class Problem (Behavioral Form).
Another Example of Poor System Intelligence Distribution.
The God Class Problem (Data Form).
The Proliferation of Classes Problem.
The Role of Agent Classes.
Examining the Use of Separate Entity and Controller Classes.
4. The Relationships Between Classes and Objects.
The Uses Relationship.
Six Different Ways to Implement the Uses Relationship.
Heuristics for the Uses Relationship.
Refining the Amount of Collaboration Between Two Classes.
The Containment Relationship.
Semantic Constraints Between Classes.
Attributes Versus Contained Classes.
More Containment Heuristics.
A Relationship Between Uses and Containment?
Containment by Value Versus Containment by Reference.
5. The Inheritance Relationship.
Overriding Base Class Methods in Derived Classes.
The Use of the Protected Section of a Base Class.
The Width and Depth of Inheritance Hierarchies.
Private, Protected, and Public Inheritance à la C++.
A Real-World Example of Specialization.
Heuristics That Trade Off Design Complexity and Flexibility.
A Real-World Example of Generalization.
The Mechanism of Polymorphism.
A Problem with the Use of Inheritance as a Reusability Mechanism.
An Inheritance Solution to an Interrupt-Driven Architecture.
Inheritance Hierarchies Versus Attributes.
The Confusion of the Need for Inheritance Versus an Object's Dynamic Semantics.
Using Inheritance to Hide the Representation of a Class.
Mistaking Objects for Derived Classes.
Mistaking Object Generalization for the Need to Build Classes at Runtime.
The Attempt to NOP a Base Class Method in Its DerivedClass(es).
The Implementation of Optional Parts of Objects.
A Problem with No Optimal Solution.
Reusing Components Versus Reusing Frameworks.
6. Multiple Inheritance.
The Common Misuse of Multiple Inheritance.
A Valid Use of Multiple Inheritance.
Accidental Complexity In Languages That Do Not Support Multiple Inheritance.
Frameworks That Incorporate Multiple Inheritance.
The Use of Multiple Inheritance in the Design of Mixins.
DAG Multiple Inheritance.
Accidental DAG Multiple Inheritance via Poor Implementation of Optional Containment.
7. The Association Relationship.
Associations Implemented Through a Referential Attribute.
Associations Implemented Through a Third-Party Class.
Deciding Between a Containment and an Association Relationship.
8. Class-Specific Data and Behavior.
Using Metaclasses to Capture Class-Specific Data and Behavior.
Using Language-Level Keywords to Implement Class- Versus Object-Specific Data and Behavior.
Metaclasses à la C++.
A Useful Abstract Class That Is Not a Base Class?
9. Physical Object-Oriented Design.
The Construction of Object-Oriented Wrappers.
Persistence in an Object-Oriented System.
Memory Management Issues in an Object-Oriented Application.
Minimal Public Interfaces for Reusable Components.
Implementing Safe Shallow Copies.
Concurrent Object-Oriented Programming.
Implementing Object-Oriented Designs in Nonobject-Oriented Languages.
10. The Relationship Between Heuristics and Patterns.
Transitivity Among Design Transformation Patterns.
The Reflexive Property of Design Transformation Patterns.
Other Design Transformation Patterns.
Future Research.
11. The Use of Heuristics in Object-O
商品描述(中文翻譯)
目錄
前言
致謝
1. 物件導向程式設計的動機
革命者、演化者與物件導向範式
意外複雜性與本質複雜性(Frederick Brooks)
瀑布模型
迭代模型
同語言與異語言原型設計
軟體重用性
優秀設計師的企業階層
2. 類別與物件:物件導向範式的基本構件
類別與物件介紹
訊息與方法
類別耦合與內聚
動態語意學
抽象類別
角色與類別
3. 行動導向應用程式與物件導向應用程式的拓撲
應用程式拓撲的差異
當行動導向範式運作良好時
神類問題(行為形式)
另一個系統智慧分配不良的例子
神類問題(資料形式)
類別繁殖問題
代理類別的角色
檢視獨立實體與控制器類別的使用
4. 類別與物件之間的關係
類別與物件關係介紹
使用關係
實現使用關係的六種不同方式
使用關係的啟發式
精煉兩個類別之間的合作量
包含關係
類別之間的語意約束
屬性與包含類別
更多的包含啟發式
使用與包含之間的關係?
值的包含與參考的包含
5. 繼承關係
繼承關係介紹
在衍生類別中覆寫基類方法
使用基類的保護區域
繼承階層的寬度與深度
C++ 的私有、保護與公共繼承
專業化的實際例子
在設計複雜性與靈活性之間的權衡啟發式
一個通用化的實際例子
多型的機制
將繼承用作重用機制的問題
中斷驅動架構的繼承解決方案
繼承階層與屬性
繼承需求與物件動態語意學的混淆
使用繼承隱藏類別的表示
將物件誤認為衍生類別
將物件通用化誤認為在執行時建立類別的需求
嘗試在其衍生類別中 NOP 基類方法
實現物件的可選部分
沒有最佳解的問題
重用元件與重用框架
6. 多重繼承
多重繼承介紹
多重繼承的常見誤用
多重繼承的有效使用
不支援多重繼承的語言中的意外複雜性
包含多重繼承的框架
在 Mixins 設計中使用多重繼承
DAG 多重繼承
由於可選包含的實現不良而導致的意外 DAG 多重繼承
7. 關聯關係
關聯介紹
通過參考屬性實現的關聯
通過第三方類別實現的關聯
決定包含關係與關聯關係之間的選擇
8. 類別特定的資料與行為
類別特定與物件特定的資料與行為介紹
使用元類別捕捉類別特定的資料與行為
使用語言層級關鍵字實現類別與物件特定的資料與行為
C++ 的元類別
一個有用的抽象類別但不是基類?
9. 實體物件導向設計
邏輯與實體物件導向設計的角色
物件導向包裝的構建
物件導向系統中的持久性
物件導向應用程式中的記憶體管理問題
可重用元件的最小公共介面
實現安全的淺層複製
並行物件導向程式設計
在非物件導向語言中實現物件導向設計
10. 啟發式與模式之間的關係
啟發式與模式
設計轉換模式之間的傳遞性
設計轉換模式的反身性
其他設計轉換模式
未來研究
11. 在物件導向中的啟發式使用