160 likes | 315 Views
Brief Introduction to Object-Oriented Frameworks. Kurt Stirewalt. Overview of talk. OO Frameworks: Definitions and characteristics Example: Java AWT Issues in framework design: Usability Extensibility, efficiency, and maintenance Frameworks and code generation. Object-Oriented Frameworks.
E N D
Brief Introduction to Object-Oriented Frameworks Kurt Stirewalt
Overview of talk • OO Frameworks: • Definitions and characteristics • Example: Java AWT • Issues in framework design: • Usability • Extensibility, efficiency, and maintenance • Frameworks and code generation
Object-Oriented Frameworks • A.k.a: Object-oriented abstract design: • Salient features: • Corpus of (partially implemented) classes • Framework classes expect to collaborate with others • Instantiated by subclassing framework classes and providing or over-riding polymorphic operations • Many well-known examples: • Modern UI toolkits (e.g., Java AWT, subArctic, MFC). • Distributed computing toolkits (e.g., ACE).
Brief example (and notation) Button ActionListener addActionListener(…) actionPerformed(…) MyApplicationClass actionPerformed(…)
Frameworks programming model • Often: • User-defined methods invoked by framework code. • Framework plays the role of ``main program''. • This inversion of control allows frameworks to serve as extensible code skeletons. • User-supplied methods tailor generic framework algorithms for a specific application.
Example instantiation: Online orders … Applet Button TextBox Panel OrderEntryApplet StoreFrontDisplay
Overview of talk • OO Frameworks: • Definitions and characteristics • Example: Java AWT • Issues in framework design: • Usability • Extensibility, efficiency, and maintenance • Frameworks and code generation
Issues in framework design • Usability: • Some frameworks require more implementation knowledge to use than others • White- vs. black-box distinction • Extensibility/maintenance: • Successful frameworks get large and bulky • Monolithic vs. collaboration-stratified frameworks
Framework usability “The AWT[1.0] event model is the son of Satan!” -- Ian Smith, subArctic developer • White-box: • Override to customize • Internal structure of classes exposed • Black-box: • Configure to customize • Only interfaces exposed
Example: AWT event handling • White box (version 1.02) • Every UI component had handleEvent method • To catch events, define subclass and override method • Black box (version 1.1) • UI components “fire” events to interested listeners • Objects that implement a listener interface can register for event notification from a UI component • Instantiation in 1.1 uses knowledge of an abstract protocol, not UI-component implementation
Black-box evolution of AWT • Observe: Can take a long time to migrate a white-box to a black-box framework AWT v1.1 JFC/Swing AWT v1.0 Black-box White-box
Why is black-box better? • Possible answers: • Maturity of product • Separation of concerns • Better conceptual abstractions • Better understanding of key collaborations • Observe: All of these features are important for code generation
Maintenance & Evolution • Problem: Framework classes can get bulky • Function of dependencies among the classes • Also backward compatibilty in presence of new features. • But, not all classes communicate with all others! • Rather, classes involved in smaller collaborations. • Classes play roles in a collaboration • Role often involves only subset of class’ operations • Solution: GenVoca style layering/composition useful for organizing frameworks
Overview of talk • OO Frameworks: • Definitions and characteristics • Example: Java AWT • Issues in framework design: • Usability • Extensibility, efficiency, and maintenance • Frameworks and code generation
Frameworks and code generation Easier to build tool to specialize well-defined classes than to build a general-purpose code generator • [Johnson & Foote’88]. • Frameworks provide: • (partial) specification for new components and • template for implementing them • UML class/state diagrams good at representing framework classes and behaviors • Meridian: Can we automatically instantiate framework classes from UML-model specifications