Example - Universität Paderborn

Transcription

Example - Universität Paderborn
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Example
Design of a WYSIWYG Editor
Lexi
Design Aspects (Design for
Change):
1. Document structure
2. Text formatting, search for
regular expressions, line breaking,
spell checking
3. “Global state” system root,
selection, zooming, ...
4. Embellishing User Interface
5. Different Look-And-Feels
6. Different Window systems
7. Undo/Redo, Macros, ...
Modellbasierte Softwareentwicklung
1
Wilhelm Schäfer
Universität Paderborn
AG Softwaretechnik
Coarse Grain Design
Software Architecture (MVC Pattern)
Modellbasierte Softwareentwicklung
2
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Internal Representation
Modellbasierte Softwareentwicklung
3
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Tree Structure of What
Modellbasierte Softwareentwicklung
4
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Concept of A Glyph
Use basic OO:
• Use subtyping (not
inheritance) to
handle each
specific glyph in a
uniform manner
• Use shared
aggregation or
composition to
describe
composition
structure
Modellbasierte Softwareentwicklung
5
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Text Formatting, Searching, Line Breaking, Spell
Checking, …
<<creates>>
<<creates>>
<<creates>>
<<creates>>
<<creates>>
Modellbasierte Softwareentwicklung
6
Wilhelm Schäfer
Universität Paderborn
AG Softwaretechnik
Manage Aspect using different Tools for Line
Breaking, …
Modellbasierte Softwareentwicklung
7
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Manage GUI Elements
Modellbasierte Softwareentwicklung
8
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Support Multiple Window Systems
Modellbasierte Softwareentwicklung
9
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Support Undo/Redo
Modellbasierte Softwareentwicklung
10
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Creational Pattern
Motivation:
• abstract from instantiation
process
• Make system independent of
object creation
Basic Themes:
• Encapsulate knowledge about
concrete classes
• Hide how objects are created
and composed
Details: What class? Who creates?
How? When?
Patterns:
• Singleton
• Factory Method
• Abstract Factory
• Prototype
Problems:
• Class creation spread over the
code (no single point of change)
Modellbasierte Softwareentwicklung
11
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Design Pattern Singleton
Lexi system root:
• Exactly one root
object
• Reachable from
everywhere
• Support for
dynamic
subtyping
Modellbasierte Softwareentwicklung
12
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Singleton Implementation
-----file RootWindow.java-------l l l
exactly one instance
constructor encapsulated
public class RootWindow extends ... {
private static RootWindow mySingleton;
public static RootWindow get () {
if (mySingleton == null) {
mySingleton = new RootWindow();
}
return ( mySingleton);
} // get
RootWindow
l l l
Singleton
private RootWindow () {
...
} // RootWindow
...
}
Modellbasierte Softwareentwicklung
13
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Factory Method Pattern
Intent:
Dynamic choice of the
underlying class when
creating the object
Problem:
Direct object creation via x = new C () creates exactly one object of fixed type C
(no flexible choice supported)
Solution:
• Encapsulate object creation in method
• Redefine method in subclasses
• Distinguish cases using parameters, options, environment
Related Patterns:
• Often realized using the Prototype Pattern; see also Abstract Factory Pattern
Modellbasierte Softwareentwicklung
14
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Example: Document Creation
Modellbasierte Softwareentwicklung
15
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Abstract Factory Pattern
Intent:
Groups factory
methods and
structures creation of
related objects
Problem:
How to manage the creation
of families of related or
dependent objects
Solution:
• Encapsulate their object creation within one class
• Redefine in subclasses as required
Related Patterns:
• Often realized using the Factory Methods Pattern
• Often a concrete Factory is also a Singleton
Modellbasierte Softwareentwicklung
16
Universität Paderborn
AG Softwaretechnik
Wilhelm Schäfer
Example: GUI Factory
Abstract Factory with Factory
Methods ensures type secure
programs
Modellbasierte Softwareentwicklung
17