Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao...
-
Upload
gervais-ward -
Category
Documents
-
view
215 -
download
0
Transcript of Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao...
![Page 1: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/1.jpg)
Advanced Object-Oriented Design Patterns and Architectures
Part One
COEN396A
John Xiao
![Page 2: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/2.jpg)
Motivations
• It’s difficult to write good software
• It’s really difficult to write good, reusable software
• Where has OO failed to deliver?– where are the big success stories?
![Page 3: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/3.jpg)
Course Home Page
Information available at www.cse.scu.edu/~jxiao1/
• Course description
• Schedule
• Homeworks
• Handouts
• Patterns Project
![Page 4: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/4.jpg)
Course Description
• Three primary topics:– design patterns– frameworks– component-based software engineering
• Advanced OO reuse constructs– Design– Implementation
• References at www.cse.scu.edu/~jxiao1
![Page 5: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/5.jpg)
Prerequisites
• Object-oriented analysis and design (Booch, Rumbaugh, Jacobson, UML)
• Object-oriented programming (C++, Java)
![Page 6: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/6.jpg)
Patterns Project
• Team-oriented
• Pick pattern(s)
• Implementation in Java (Beans)
![Page 7: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/7.jpg)
Patterns Project• 30 minute class presentation
– demo the pattern/discuss issues
• Prepare homework assignment– concrete design/implementation– reflective component
• Web page – summary, details, links to info
• Review– review other teams
![Page 8: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/8.jpg)
Possible Groupings• observer,mediator• abstract factory,building,factory method• prototype,singleton,flyweight• adapter,bridge,decorator• façade,interpreter• state,strategy,template method• composite,iterator,visitor• command,interpreter
OR• memento, serialization• visitor critiques
![Page 9: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/9.jpg)
Deliverables
• Presentation
• Assignment
• Assignment Solution
• Web page
• Review
![Page 10: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/10.jpg)
Deadlines
• See Syllabus
![Page 11: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/11.jpg)
Patterns of Learning
• Successful solutions to human endeavors are often rooted in patterns
• Example: becoming a chess master– first learn the rules and physical requirements (pieces, legal
moves, board layout, etc)– then learn principles (relative value of pieces, value of
center squares, etc)– to become master: study games of other masters
• memorize their playing patterns
– there are hundreds/thousands of patterns
![Page 12: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/12.jpg)
Becoming a software design master
• first learn the rules (algorithms, data structures, languages)
• then learn principles (structured programming, object-oriented programming, functional programming)
• to become master: study designs of other masters• memorize their designing patterns, apply them repeatedly
• there are hundreds/thousands of patterns
![Page 13: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/13.jpg)
OOA Review• OOA
– Requirement Analysis– Use Cases/Use Case Diagrams
• High-level vs. expanded• Essential vs. real
– Conceptual Model/Class Diagrams• Concepts/Classes• Attributes• Associations/Associative Type• Aggregation(Composite/Shared)• Generalization
– System Sequence Diagrams– Contracts
![Page 14: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/14.jpg)
OOD Review
• OOD– Interaction Diagrams (e.g. Collaboration Diagrams)
(from real use cases)• Design patterns• Visibility (attribute/parameter/local/global)
– Design Class Diagrams• …• Interfaces• Methods• Navigability• Attributes type info
![Page 15: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/15.jpg)
Design level reuse szyperski
• Sharing consistency: programming languages• Sharing concrete solution fragments: libraries• Sharing individual contracts: interfaces• Sharing individual interaction architectures:
patterns• Sharing architectures: frameworks• Sharing overall structure: system architectures• Systems of subsystems: framework hierarchies
![Page 16: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/16.jpg)
Patterns vs Frameworks vs Components
• patterns support reuse of software architecture and design
• capture static and dynamic structure and collaborations of successful solutions to common problems
• frameworks/components support reuse of detailed design and code
• an integrated set of software constructs that collaborate to provide a reusable architecture for a family of related applications
![Page 17: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/17.jpg)
Design Patterns
• Gamma, Helm, Johnson, Vlissides (GOF)• Studied “super programmers”• Catalogued patterns• Design patterns solve problems that are:
– in every single program you will ever write
• Generic problem/Generic solution• Specific problem/customization of generic
solution
![Page 18: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/18.jpg)
What is a pattern?
• Description of a problem/solution pair in a certain context
• Originate from architecture– Christopher Alexander 1977– Explicit design expertise and experience
• Designing a house versus designing a program
• Building a house versus building a program
![Page 19: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/19.jpg)
Pattern Format• Format
– Name– Context– Problem– Solution– ….
• Kinds– architectural (overall description)– design patterns (design problems)– idioms (language specific)
![Page 20: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/20.jpg)
Example: Singleton
• See book
![Page 21: Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com.](https://reader035.fdocuments.in/reader035/viewer/2022070413/5697bfd51a28abf838cad30f/html5/thumbnails/21.jpg)
Patterns Review• Expert• Creator• Controller• Low Coupling• High Cohesion• Polymorphism• Pure Fabrication• Indirection• Law of Demeter