Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Design Principles and Patterns. © 2005, James R. Vallino2 How Do You Design? What principles guide you when you create a design? What.

Similar presentations


Presentation on theme: "Object-Oriented Design Principles and Patterns. © 2005, James R. Vallino2 How Do You Design? What principles guide you when you create a design? What."— Presentation transcript:

1 Object-Oriented Design Principles and Patterns

2 © 2005, James R. Vallino2 How Do You Design? What principles guide you when you create a design? What considerations are important? When have you done enough design and can begin implementation? Take a piece of paper and write down two principles that guide you - considerations that are important or indicators that you have a good design.

3 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino3 What Have You Heard About Design? First principles of OOP  Find the nouns  objects/state  Find the verbs  behaviors; methods/functions  Encapsulation, inheritance  Programming Object Interactions  Static  collaboration diagrams  Dynamic  sequence diagrams

4 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino4 What is the Next Level of Design? How do you decide on the class collaborations?  Simple: Follow principles of design But there are problems here!  What if the principles conflict with each other? –A good class decomposition may have too many connections between classes –Strong encapsulation may lead to performance penalties  Does each new design start from first principles? –Abstraction has been our friend –It can help again  How can we reliably follow the principles? –Learn from previous designers –Stand on each others' shoulders, not each others' toes.

5 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino5 Key Design Concepts General  Cohesion  Coupling  Information hiding –Encapsulation –Creation  Binding time OO Specific  Behaviors follow data  Class vs. Interface Inheritance –Class = implementation –Interface = type  Inheritance / composition / delegation

6 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino6 Principles of Successful Design Increase cohesion where possible  Separation of concerns  Focused experts Decrease coupling where possible  Simplify interfaces  Reduce connections in number and volume Employ and support reuse  Reuse existing designs and code where possible  Increase reusability where possible  Design for portability

7 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino7 Principles of Successful Design – 2 Design for Flexibility  Orthogonal evolution in many dimensions  Anticipate obsolescence Design for testability Use priorities and objectives to decide among alternatives

8 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino8 Principles of Successful OO Design Prefer type (interface) inheritance over class (implementation) inheritance. Program to the interface, not the implementation. Prefer composition to inheritance:  Deferred binding  Cost: Performance Use delegation to “simulate” runtime inheritance.

9 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino9 What Are Patterns? Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Christopher Alexander A pattern is a general solution to a problem in a context general -- outline of approach only problem -- a recurring issue context -- consider the expected design evolution

10 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino10 Do You Reinvent the Wheel Each Time? Consider coding idioms! How do you walk through an array in Java? for (i = 0; i < array.length; i++) { // use the array element }

11 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino11 What Are Design Patterns About? Standard patterns of interactions between classes  Design patterns How to apply them to your application  Deal with subsystems at the higher level of abstraction provided by the patterns What to do when it does not fit exactly  Evaluate options and analyze the trade-offs

12 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino12 Level for Design Patterns Higher than what you've done before  Not specific data structures  Not algorithmic approaches Lower than whole architectures or frameworks  Not financial systems  Not air-traffic control  Not J2EE Interactions of 3-10 classes in solution domain, i.e., the small subsystem

13 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino13 Why Patterns? Design for re-use is difficult Experienced designers:  Rarely start from first principles  Apply a working "handbook" of approaches Patterns make this ephemeral knowledge available to all Support evaluation of alternatives at higher level of abstraction

14 Object-Oriented Design Principles and Patterns © 2005, James R. Vallino14 Design Activity Quick design activity This class  Individually create a design for the stated problem  Collaborate with others, if desired Next class  Submit individual design at start of class  Groups of students create a consensus design  Designs will be presented  Designs will be compared and contrasted


Download ppt "Object-Oriented Design Principles and Patterns. © 2005, James R. Vallino2 How Do You Design? What principles guide you when you create a design? What."

Similar presentations


Ads by Google