Flashcards in L6 - Object Design Deck (28):
Connects incompatible components (wrapper: bank COBOL) + inheritance followed by delegation
Object Model Restructuring
improve understandability and extensibility
Black Box Reuse
Composition & Aggregation: New class offers aggregated functionality of existing classes.
Object Design focuses on ...
reuse and specification.
Characteristics of Structural Patterns and Examples
Reduce Coupling & Extensibility & Encapsulation: Adapter/Bridge/Composite/Façade/Proxy
superclass discovered first
Commercial-Off-The-Shelf Development fills design gap with ...
standard components ('buy')
Object-Oriented Software Engineering: System Design + Object Design + Implementation
Subclassing from implemented class that nearly has the same functionality (Stack/List: super bad). Reuse implemented functionality of superclass. PRO: Easy BUT: Bad Change Management / No Information Hiding
Types of Frameworks
infrastructure & middleware & whitebox & blackbox frameworks
Delay design decision until runtime & provide multiple implementations under same interface & Bridge between Abstraction and Implementation: Delegation followed by inheritance
Subclass can only add new methods and cannot override (keyword: final) = much better
subclass discovered first (biology; leads to model transformation)
Characteristics of Behavioral Patterns and Examples
Choice between Algorithms & Model Complex Control Flows: Observer/Strategy
Add algo w/o disturbing the application/other algo's: Policy decides stragegy.
Structured Analysis/Structured Design: Preliminary Design + Detailed Design
Method Overriding with empty bodies (violates Liskov's Substitution Principle = bad)
Implementation in subclass overrides function in superclass (same signature)
partial application that can be specialized to produce custom applications (reusability & extensibility)
models 1-to-Many Dependency between objects: 'publish & subscribe'
Object Model Optimization
improve performance (response time & memory utilization & ...)
Catching operation and sending it to another object where it is already implemented. Reuse functionality of existing class. PRO: flexible & replaceable BUT: Encapsulation (inefficient)
Component-Based Software Engineering fills design gap with ...
available components ('build')
Subclassing from specification. Reuse of specified functionality of the superclass.
system that has evolved over decades and is considered irreplaceable
White Box Reuse
Inheritance/Subclassing: New Class reuses functionality of superclass + new functionality (use: specify interface + describe taxonomies)
Identification of existing solutions (inheritance & off-the-shelf & design patterns)