This document discusses key concepts in class and method design including coupling, cohesion, encapsulation, inheritance, polymorphism, and design criteria such as coupling and cohesion. It describes activities for object design such as specifying additional details, identifying reuse opportunities, and restructuring designs. It also covers defining constraints and contracts, and creating method specifications in structured English or pseudocode.
2. Objectives Become familiar with coupling, cohesion, and connascence. Be able to specify, restructure, and optimize object designs. Be able to identify the reuse of predefined classes, libraries, frameworks, and components. Be able to specify constraints and contracts. Be able to create a method specification.
5. Encapsulation & Info Hiding Hiding the content of the object from outside view Communication only through object¡¯s methods Key to reusability
6. Polymorphism & Dynamic Binding Same message triggers different methods in different objects Dynamic binding means specific method is selected at run time Implementation of dynamic binding is language specific Need to be very careful about run time errors Need to ensure semantic consistency
8. Inheritance Single inheritance -- one parent class Multiple inheritance -- multiple parent classes Redefinition and inheritance conflict Most inheritance conflicts are due to poor classification
9. Rumbaugh¡¯s Rules Query operations should not be redefined Methods that redefine inherited ones should only restrict the semantics of the inherited ones The underlying semantics of the inherited method should never be changed The signature (argument list) of the inherited method should never be changed
12. Law of Demeter Messages should be sent only by an object: to itself to objects contained in attributes of itself or a superclass to an object that is passed as a parameter to the method to an object that is created by the method to an object that is stored in a global variable
17. Connascence Creating the need to change another module as a result of changing one Minimize overall connascence Minimize across encapsulation boundaries Maximize within encapsulation boundary
20. Additional Specification First review the current set of models Sufficient but only necessary classes to solve problem No missing attributes or methods No extraneous attributes or methods Examine visibility
21. Signatures for each method Name of the method Parameters or arguments to pass Type of value the method will return to the calling method
24. Restructure the Design Factoring Map design to current language Normalization Assure all inheritance relationships support only generalization/specialization semantics
25. Optimizing the Design Review access paths Review attributes of each class Review direct and indirect fan-out Consider execution order of statements in often-used methods Avoid re-computation by creating derived attributes and triggers
27. Types of Constraints Precondition Must be true before the method executes Post-condition Must be true after the method finishes Invariant Must always be true
29. Contracts Contracts document message passing between object A contract is created for each method that is publicly visible in a class Should contain enough information for the programmer to understand what the method is supposed to do