Published on

Object-oriented analysis and design(OOAD) and Design Pattern Slides UML Slides. for more slides refer

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. Design Patterns
  2. 2. Main Objective <ul><li>Motivation </li></ul><ul><li>Design patterns </li></ul><ul><li>Classification </li></ul><ul><li>Selected Patterns </li></ul><ul><li>Selecting and Using Design Patterns </li></ul>
  3. 3. Motivation REUSE To develop reusable software To reduce the depth of Class hierarchy To develop high cohesive classes
  4. 4. Patterns Background <ul><li>What is a Pattern ? </li></ul><ul><ul><li>A pattern is an abstract concrete form which keeps recurring in specific contexts </li></ul></ul><ul><ul><li>“ Patterns = Problem/solution pairs in a context” </li></ul></ul><ul><ul><li>Patterns capture the static and dynamic structure and collaboration among key participants in software designs </li></ul></ul><ul><ul><li>Patterns facilitate reuse of successful software architectures and designs </li></ul></ul>
  5. 5. Qualities of Software Pattern <ul><li>Encapsulation and Abstraction </li></ul><ul><li>Inheritance & composability </li></ul>
  6. 6. Reuse Types <ul><li>Source code </li></ul><ul><li>Executables </li></ul><ul><li>Object code </li></ul><ul><li>Personnel </li></ul><ul><li>Design </li></ul>
  7. 7. Approaches of Reusability <ul><li>Library routines </li></ul><ul><li>Overloading </li></ul><ul><li>Generic code / structures </li></ul><ul><li>Black box reuse ( composition ) </li></ul><ul><li>White box reuse ( inheritance ) </li></ul><ul><li>Toolkits: architecture independence </li></ul><ul><li>Frameworks: rigid architecture </li></ul><ul><li>Patterns: Problem, context & solution </li></ul>
  8. 8. Toolkits <ul><li>Often an application will incorporate classes from one or more libraries of predefined classes called toolkits. </li></ul><ul><li>Set of related and reusable classes,Designed to provide useful general purpose functionality </li></ul><ul><ul><li>E.g.: Set of classes for Lists, associative tables, stacks. </li></ul></ul>
  9. 9. Framework <ul><li>Frameworks provide domain specific functionality- e.g. business application, telecommunication application, window system, distributed applications etc. </li></ul><ul><li>It is semi-complete applications </li></ul><ul><li>// complete applications are developed by inheriting form and instantiating parameterized framework components </li></ul><ul><li>Set of co-operating classes that make up a reusable design for a specific class of software systems </li></ul><ul><ul><li>Graphical editors for Multimedia domains like artistic drawing , music composition and CAD </li></ul></ul><ul><ul><li>Compilers for different programming language and target machines </li></ul></ul>
  10. 10. Framework <ul><li>Dictates architecture </li></ul><ul><li>Captures design decisions common to application domain </li></ul><ul><li>Emphasizes design reuse over code reuse </li></ul>
  11. 11. OO Frameworks
  12. 12. Frameworks v/s Design Patterns <ul><li>Design patterns are more abstract than frameworks. </li></ul><ul><li>- frameworks can be embodied in code but example s of patterns can be embodied in code </li></ul><ul><li>  </li></ul><ul><li>Design patterns are smaller architectural elements than frameworks. </li></ul><ul><li>- a typical framework contains several design patterns, but the reverse is never true </li></ul><ul><li>Design patterns are less specialized than frameworks. – patterns are independent of application </li></ul>
  13. 14. Design Patterns Description <ul><li>Description of communicating objects and classes, their roles and collaborations, and the distribution of responsibilities. </li></ul><ul><li>customized to solve a general design problem in a particular context </li></ul><ul><li>names, abstracts and identifies key aspects of a common design structure </li></ul><ul><ul><li>useful for creating reusable object oriented design </li></ul></ul><ul><li>Focuses on a particular object oriented design problem or issue </li></ul>
  14. 15. Essential Element <ul><li>Name </li></ul><ul><li>Problem </li></ul><ul><li>Solution </li></ul><ul><li>Consequences </li></ul><ul><li>Documentation & illustration Purpose </li></ul><ul><ul><li>Intent </li></ul></ul><ul><ul><li>Motivation </li></ul></ul><ul><ul><li>applicability </li></ul></ul><ul><ul><li>structure </li></ul></ul><ul><ul><li>Consequences </li></ul></ul><ul><ul><li>Sample Code </li></ul></ul>
  15. 16. Classification <ul><li>Purpose </li></ul><ul><ul><li>Creational - concern process of object creation </li></ul></ul><ul><ul><li>Structural - deal with composition of classes or object </li></ul></ul><ul><ul><li>Behavioral - characterize ways in which classes or objects interact and distribute responsibility </li></ul></ul><ul><li>Scope </li></ul><ul><ul><li>class </li></ul></ul><ul><ul><li>object </li></ul></ul>
  16. 17. Design Pattern space
  17. 18. Session No Name Type Session 1 Factory Method Creational Session 2 Strategy Behavioral Session 3 Decorator Structural Session 4 Composite Structural Session 5 Iterator Behavioral Session 6 Template Method Behavioral Session 7 Abstract Factory Creational
  18. 19. Session No Name Type Session 8 Builder Creational Session 9 Singleton Creational Session 10 Proxy Structural Session 11 Adapter Structural Session 12 Bridge Structural Session 13 Mediator Behavioral Session 14 Observer Behavioral
  19. 20. Session No Name Type Session 15 Chain of Responsibility Behavioral Session 16 Memento Behavioral Session 17 Command Behavioral Session 18 Prototype Creational Session 19 State Behavioral Session 20 Visitor Behavioral Session 21 Facade Structural Session 22 Flyweight Structural
  20. 21. Patterns concluding I am top of the world!!
  21. 24. Selecting a Design Patterns <ul><li>Consider how design patterns solve design problem </li></ul><ul><li>Scan intent section </li></ul><ul><li>Study how patterns interrelate </li></ul><ul><li>Study patterns of like purpose </li></ul><ul><li>Consider what should be variable in your design </li></ul><ul><li>Examine a case of Redesign </li></ul>
  22. 25. Summary <ul><li>Reusable elements in a design </li></ul><ul><li>Recurring similarity </li></ul><ul><li>Increase representational power </li></ul><ul><li>Favour object composition over class inheritance </li></ul><ul><li>Delegation of an underlying principle </li></ul><ul><li>Use Design Patterns whenever possible </li></ul>