1 / 62

Composition

Composition. Prasun Dewan. Department of Computer Science University of North Carolina CB 3175 Sitterson Hall Chapel Hill, NC 27599-3175 dewan@cs.unc.edu http:/www.cs.unc.edu/~dewan. Example. Class Decomposition. Model. Semantics State. 5. Controller. Manipulates State.

lucilleb
Télécharger la présentation

Composition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Composition Prasun Dewan Department of Computer Science University of North Carolina CB 3175 Sitterson Hall Chapel Hill, NC 27599-3175 dewan@cs.unc.edu http:/www.cs.unc.edu/~dewan 290-63:Composition

  2. Example 290-63:Composition

  3. Class Decomposition Model SemanticsState 5 Controller Manipulates State BarView Displays state 290-63:Composition

  4. Reuse Model SemanticsState Controller Manipulates State TextView Displays state 290-63:Composition

  5. Inheritance-based Composition Model IS-A Controller BarView 290-63:Composition

  6. Inheritance-based Composition Model Controller TextView 290-63:Composition

  7. Inheritance-based Composition Model TextView Controller 290-63:Composition

  8. Inheritance-based Composition Model TextView MController Menus 290-63:Composition

  9. Delegation & MVC Push Button Draw Bar Has-A Model Observerable/ Listenable increment modelUpdated getVal Editing View State Observer/ Listener Controller BarView Editable TextField 290-63:Composition

  10. Reuse Model & Controller Push Button Draw Text Has-A Model Observerable/ Listenable modelUpdated increment addListener getVal Observer/ Listener Controller TextView 290-63:Composition

  11. Multilevel MVC Model Controller TextView ScreenView Screen Format 290-63:Composition

  12. Multilevel MVC Model Controller TextView PrintView Printer Format 290-63:Composition

  13. Observer but Not View Model Model Replica Spread. Cell Dependent Cell Mouse Controller Lateral Observer “Callback” Higher-Level Observer 290-63:Composition

  14. Delegate but Not Observer addElement Stack Vector push displayInt IntStack displayStack push Delegator Delegate 290-63:Composition

  15. Delegate but Not Observer • Observer received “notification” about state change in Observable • Notification is Observable-Specific not Observer-specific. • Observer does not “depend” on Observable to do its tasks. 290-63:Composition

  16. Delegation Vs Inheritance 290-63:Composition

  17. Inheritance-based Composition Model IS-A Controller BarView 290-63:Composition

  18. Delegation-Based Composition Model Controller BarView 290-63:Composition

  19. Reuse Model & View Model MController TextView 290-63:Composition

  20. Delegation Vs Inheritance • Arbitrary class can be replaced 290-63:Composition

  21. Dynamic View Switching 290-63:Composition

  22. Dynamic View Switching 290-63:Composition

  23. Dynamic Configuration in Delegation addListener(TextView) removeListener(BarView) Model setModel(Model) Controller BarView TextView 290-63:Composition

  24. Compile-time binding in Inheritance Model Controller BarView 290-63:Composition

  25. Delegation Vs Inheritance • Arbitrary class can be replaced • Dynamic component replacement • IS-A compile time • HAS-A runtime 290-63:Composition

  26. Multiple Views 290-63:Composition

  27. Multiple Instantiation in Delegation Model Controller BarView BarView 290-63:Composition

  28. Multiple Subclasses in Inheritance M_Vars M_Vars’ C_Vars’ C_Vars BV_Vars TV_Vars Model Controller BarView TextView 290-63:Composition

  29. Multiple Instantiation in Delegation Model M_Vars Controller BarView BarView TV_Vars C_Vars B_Vars 290-63:Composition

  30. Delegation Vs Inheritance • Arbitrary class can be replaced • Dynamic component replacement • IS-A compile time • HAS-A runtime • Multiple Component Instantiation 290-63:Composition

  31. Distribution in Delegation Model Controller BarView 290-63:Composition

  32. Distribution in Delegation BarView BarView Controller Controller Model 290-63:Composition

  33. Distribution in Inheritance Model Controller BarView 290-63:Composition

  34. Proxies in Delegation Model Controller BarView Model Out In Controller BarView 290-63:Composition

  35. Delegation Vs Inheritance • Arbitrary class can be replaced • Dynamic component replacement • IS-A compile time • HAS-A runtime • Multiple Component Instantiation • Distribution • Proxies 290-63:Composition

  36. Delegation Vs Inheritance • Connections made by component users • Connections specified by component definers • O(n) connections explicitly made (components define an environment) • O(N2) connections explicitly made • Connections not visualized • Links Visualized 290-63:Composition

  37. Delegation Vs Inheritance • Connections remade with dynamic links • No dynamism • Distribution requires more work and objects • No distribution • No proxies • Ditto with Proxies 290-63:Composition

  38. Delegation vs Inheritance • Flexibility of Delegation => Less Automation • Provide incremental path • Some disadvantages not inherent and can be partially overcome 290-63:Composition

  39. Overcoming Delegation Drawbacks • Connections made by component users • Connections specified by component definers • External agent makes connection at instantiation time based on specification 290-63:Composition

  40. External Generic Agent Specific Composer Generic Composer Model Controller BarView TextView 290-63:Composition

  41. Facets addListener() setModel() setModel() Specific Composer Generic Composer Model Controller BarView TextView 290-63:Composition

  42. Registering addListener() setModel() setModel() Specific Composer Generic Composer Model reg(c,m,v) reg(C,M,V) Controller BarView TextView 290-63:Composition

  43. Auto Connection addListener() setModel() setModel() Specific Composer Generic Composer Model reg(c,m,v) AC(c,m,v) Controller BarView TextView 2*n runtime 290-63:Composition

  44. Auto Connection MVC Composer addListener() Model Auto-connect Facets setModel() setModel() Specific Composer Controller TextView Generic Composer reg(C,M,V) AC(new C) n + 1 runtime 290-63:Composition 1 runtime

  45. Dynamic/Explicit Connection 290-63:Composition

  46. Connection Visualization 290-63:Composition

  47. Specifying Facets Facet-Specification API addListener() Registration API setModel() setModel() registerFacet (<FacetName>, <FacetType>, <Method>, arity) registerFacet (listener, Listener, addListener, many) Generic Composer Model Server-API Approach Specific Composer Controller TextView BarView registerFacet (changeable, Changeable, setModel, single) 290-63:Composition

  48. Specifying Facets Facet-Specification API Facet-Specification API addListener() Registration API setModel() setModel() Reflection Protocol registerFacet (listener, Listener, addListener, many) Generic Composer Model Introspection Approach Specific Composer Controller BarView TextView registerFacet (changeable, Changeable, setModel, single) 290-63:Composition

  49. Basic Connection Patterns publicvoid add<FacetName> (<FacetType>) public <FacetType> <FacetName> publicvoid set<FacetName> (<FacetType>) [public <FacetType> get<FacetName> ()] [public Enumeration enumerate<FacetName> ()] public void remove<FacetName> (<FacetType>) 290-63:Composition

  50. Some Advanced Patterns [public Object getReferenceFor<FacetName>()] publicclass Controller implements AutoConnectAll public String[] getAutoConnectFacets() [public String getOpposite<FacetName>()] Argument to set<FacetName> (<FacetType>) 290-63:Composition

More Related