Table of Contents

 <  Free Open Study  >  

   
¢   Table of Contents
Object-Oriented Design Heuristics
By Arthur  J.  Riel
 
Publisher : Addison Wesley
Pub Date : April 30, 1996
ISBN : 0-201-63385-X
Pages : 400
Slots : 1    


              
      Copyright
      Preface
      Acknowledgements
      Chapter  1.   The Motivation for Object-Oriented Programming
        Section 1.1.   Revolutionists, Evolutionists, and the Object-Oriented Paradigm
        Section 1.2.   Accidental Versus Essential Complexity   la Frederick Brooks
        Section 1.3.   The Waterfall Model
        Section 1.4.   The Iterative Model
        Section 1.5.   Same- Versus Different-Language Prototyping
        Section 1.6.   Software Reusability
        Section 1.7.   Corporate Hierarchies of Good Designers
        Glossary of Terms
      Chapter  2.   Classes and Objects: The Building Blocks of the Object-Oriented Paradigm
        Section 2.1.   Introduction to Classes and Objects
        Section 2.2.   Messages and Methods
        Section 2.3.   Class Coupling and Cohesion
        Section 2.4.   Dynamic Semantics
        Section 2.5.   Abstract Classes
        Section 2.6.   Roles Versus Classes
        Glossary of Terms
        Summary of Heuristics
      Chapter  3.   Topologies of Action-Oriented Versus Object-Oriented Applications
        Section 3.1.   Differences in Application Topologies
        Section 3.2.   When the Action-Oriented Paradigm Goes Right
        Section 3.3.   The God Class Problem (Behavioral Form)
        Section 3.4.   Another Example of Poor System Intelligence Distribution
        Section 3.5.   The God Class Problem (Data Form)
        Section 3.6.   The Proliferation of Classes Problem
        Section 3.7.   The Role of Agent Classes
        Section 3.8.   Examining the Use of Separate Entity and Controller Classes
        Glossary of Terms
        Summary of Heuristics
      Chapter  4.   The Relationships Between Classes and Objects
        Section 4.1.   Introduction to Class and Object Relationships
        Section 4.2.   The Uses Relationship
        Section 4.3.   Six Different Ways to Implement the Uses Relationship
        Section 4.4.   Heuristics for the Uses Relationship
        Section 4.5.   Refining the Amount of Collaboration Between Two Classes
        Section 4.6.   The Containment Relationship
        Section 4.7.   Semantic Constraints Between Classes
        Section 4.8.   Attributes Versus Contained Classes
        Section 4.9.   More Containment Heuristics
        Section 4.10.   A Relationship Between Uses and Containment?
        Section 4.11.   Containment by Value Versus Containment by Reference
        Glossary of Terms
        Summary of Heuristics
      Chapter  5.   The Inheritance Relationship
        Section 5.1.   Introduction to the Inheritance Relationship
        Section 5.2.   Overriding Base Class Methods in Derived Classes
        Section 5.3.   The Use of the Protected Section of a Base Class
        Section 5.4.   The Width and Depth of Inheritance Hierarchies
        Section 5.5.   Private, Protected, and Public Inheritance   la C+ +
        Section 5.6.   A Real-World Example of Specialization
        Section 5.7.   Heuristics That Trade Off Design Complexity and Flexibility
        Section 5.8.   A Real-World Example of Generalization
        Section 5.9.   The Mechanism of Polymorphism
        Section 5.10.   A Problem with the Use of Inheritance as a Reusability Mechanism
        Section 5.11.   An Inheritance Solution to an Interrupt-Driven Architecture
        Section 5.12.   Inheritance Hierarchies Versus Attributes
        Section 5.13.   The Confusion of the Need for Inheritance Versus an Object's Dynamic Semantics
        Section 5.14.   Using Inheritance to Hide the Representation of a Class
        Section 5.15.   Mistaking Objects for Derived Classes
        Section 5.16.   Mistaking Object Generalization for the Need to Build Classes at Runtime
        Section 5.17.   The Attempt to NOP a Base Class Method in Its Derived Class(es)
        Section 5.18.   The Implementation of Optional Parts of Objects
        Section 5.19.   A Problem with No Optimal Solution
        Section 5.20.   Reusing Components Versus Reusing Frameworks
        Glossary
        Summary of Heuristics
      Chapter  6.   Multiple Inheritance
        Section 6.1.   Introduction to Multiple Inheritance
        Section 6.2.   The Common Misuse of Multiple Inheritance
        Section 6.3.   A Valid Use of Multiple Inheritance
        Section 6.4.   Accidental Complexity In Languages That Do Not Support Multiple Inheritance
        Section 6.5.   Frameworks That Incorporate Multiple Inheritance
        Section 6.6.   The Use of Multiple Inheritance in the Design of Mixins
        Section 6.7.   DAG Multiple Inheritance
        Section 6.8.   Accidental DAG Multiple Inheritance via Poor Implementation of Optional Containment
        Glossary
        Heuristics Summary
      Chapter  7.   The Association Relationship
        Section 7.1.   Introduction to Association
        Section 7.2.   Associations Implemented Through a Referential Attribute
        Section 7.3.   Association Implemented Through a Third-Party Class
        Section 7.4.   Deciding Between a Containment and an Association Relationship
        Glossary
        Heuristics Summary
      Chapter  8.   Class-Specific Data and Behavior
        Section 8.1.   Introduction to Class-Specific Versus Object-Specific Data and Behavior
        Section 8.2.   Using Metaclasses to Capture Class-Specific Data and Behavior
        Section 8.3.   Using Language-Level Keywords to Implement Class-Versus Object-Specific Data and Behavior
        Section 8.4.   Metaclasses   la C++
        Section 8.5.   A Useful Abstract Class That Is Not a Base Class?
        Glossary
        Heuristics Summary
      Chapter  9.   Physical Object-Oriented Design
        Section 9.1.   The Role of Logical and Physical Object-Oriented Design
        Section 9.2.   The Construction of Object-Oriented Wrappers
        Section 9.3.   Persistence in an Object-Oriented System
        Section 9.4.   Memory Management Issues in an Object-Oriented Application
        Section 9.5.   Minimal Public Interfaces for Reusable Components
        Section 9.6.   Implementing Safe Shallow Copies
        Section 9.7.   Concurrent Object-Oriented Programming
        Section 9.8.   Implementing Object-Oriented Designs in Nonobject-Oriented Languages
        Glossary
        Summary of Heuristics
      Chapter  10.   The Relationship Between Heuristics and Patterns
        Section 10.1.   Heuristics Versus Patterns
        Section 10.2.   Transitivity Among Design Transformation Patterns
        Section 10.3.   The Reflexive Property of Design Transformation Patterns
        Section 10.4.   Other Design Transformation Patterns
        Section 10.5.   Future Research
      Chapter  11.   The Use of Heuristics in Object-Oriented Design
        Section 11.1.   The ATM Problem
        Section 11.2.   Choosing a Methodology
        Section 11.3.   A First Attempt at Producing an Object Model for the ATM
        Section 11.4.   Adding Behavior to Our Object Model
        Section 11.5.   Explicit Case Analysis Due to Accidental Complexity
        Section 11.6.   Messaging Objects in Different Address Spaces
        Section 11.7.   The Processing of the Transaction
        Section 11.8.   Returning to the Domain of the ATM
        Section 11.9.   Other Miscellaneous Issues
        Section 11.10.   Conclusion
      Appendix  A.   Heuristics Summary
        Chapter 2 Classes and Objects: The Building Blocks of the Object-Oriented Paradigm
        Chapter 3 Topologies of Action-Oriented Versus Object-Oriented Applications
        Chapter 4 The Relationships Between Classes and Objects
        Chapter 5 The Inheritance Relationship
        Chapter 6 Multiple Inheritance
        Chapter 7 The Association Relationship
        Chapter 8 Class-Specific Data and Behavior
        Chapter 9 Physical Object-Oriented Design
      Appendix  B.   The Prevention of Memory Leakage
        Leak #1
        Example Code for Leak #1
        Leak #2
        Example Code for Leak #2
        Leak #3
        Example Code for Leak #3
        Leak #4
        Example Code for Leak #4
        Leak #5
        Example Code for Leak #5
        Leak #6
        Example Code for Leak #6
        Leak #7
        Returning a Reference to a Stack Object
        Returning an Internal Static Object Reference
        Returning a Memory Leaking Dynamically Allocated Object
        Correct Method for Leak #7
        Leak #8
        Code Example for Memory Leakage #8
      Appendix  C.   Selected C++ Examples
        Selected C++ Example #2
        Selected C++ Example #4
        Selected C++ Example #5
        Selected C++ Example #9
        Selected C++ Example #10
        Selected C++ Example #15
        Selected C++ Example #17
        Selected C++ Example #18
        Selected C++ Example #19
        Selected C++ Example #20
        Selected C++ Example #21
        The ATM Side of the Application
        The Atm.hpp File
        The Atm.cpp File
        The Bank Side of the Application
        The Bank.hpp File
        The Bank.cpp File
        The Common Classes
        The Trans.hpp File
        The Trans.cpp File
        The Network.hpp File
        The Network.cpp File
      Bibliography
      Other Books Used for Reference in This Text
 <  Free Open Study  >  


Object-Oriented Design Heuristics
Object-Oriented Design Heuristics (paperback)
ISBN: 0321774965
EAN: 2147483647
Year: 1996
Pages: 180

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net