Graphische Darstellung der Elemente
- GUI für UML-Editor:
- Gesamtansicht
- Zeichenbereich mit UML-Diagramm
- oben Leiste mit Buttons für Funktionen ("Toolbar"):
- Laden, Speichern
- neue Class, Interface, Object
- neuer Pfeil (vertikal, horizontal)
- Editieren eines Objekts
- Löschen eines Objekts
- Anklicken bei "neuer Pfeil"/"Editieren"/"Löschen"
- Cursor verändert sich
- danach entsprechendes Objekt (oder zwei für Pfeil)
anklicken
- leerer Platz auf Zeichenfläche angeklickt →
Funktion abgebrochen
- Editieren
- Fenster mit Maske für entsprechendes Objekt geht
auf
- enthält Buttons "Abbrechen" und "Übernehmen"
- Pattern Model-View-Controller:
- Pattern-Typ Architectural
- Problem
- Anforderungen an Benutzer-Interfaces und graphische
Darstellungen ändern sich häufig
- mehrere Darstellungs- oder Kontrollmöglichkeiten
für ein Objekt
- Lösung
- Aufteilung eines Objekttyps in drei Klassen
- Model: enthält Kerndaten
und -funktionen, aber keine UI-Anteile
- View: zuständig für
graphische Darstellung
- Controller: zuständig
für Benutzereingaben zur Änderung des Objekts
- Views (ggf. auch Controller) erhalten Änderungs-Meldungen
vom Model über Observer-Pattern
- Konsequenzen
- graphische Darstellung und Kontrollen leicht änderbar
(+)
- mehrere verschiedene Views gleichzeitig möglich
(+)
- Views immer konsistent (da auf das Model-Objekt bezogen)
(+)
- View und Controller sehr eng verknüpft (-)
- View und Controller stark an Model gekoppelt (-)
- u.U. verschlechterte Performance (viele Updates) (-)
- Variante Document-View
- Document
Model
- View
View + Controller
- beide Richtungen der Oberfläche (Darstellung und
Interaktion) in einem Element
- Standard-Pattern bei Swing-Komponenten
- Anwendung des MVC-Patterns beim UML-Editor:
- Model (Fachklassen)
- Top-Level-Elemente (Class,
Interface, Object)
- auch Part-Objekte Field, Method
- keine Änderungen für GUI nötig
- View
- enthält bzw. berechnet Infos wie Position und
Größe
- enthält Referenz auf das Model
- enthält Methoden zum Zeichnen oder Verschieben
- Views auch für Part-Elemente
- Zeichnen der Unterkomponenten von ClassView
an diese delegiert
- verschiedene graphische Darstellungen mit mehreren
FieldView's
- z.B. FieldView mit Zeilenumbruch
- Controller
- enthält Referenz auf das Model
- eigenes Fenster = Editor
- View und Controller hier kaum gekoppelt
- Erläuterungen zur Implementierung:
- View
- enthält einfache, allen gemeinsame Methoden
- stellt benötigte Fonts bereit (lazy initialisiert)
- ClassView
- implementiert die draw-Routine
→ Darstellung gemäß UML-Standard
- verwendet draw der Part-Elemente
(Felder und Methoden)
- berechnet Größe des Darstellungsrechtecks
aus String-Größen
- Breite = Maximum aller Stringbreiten (gemäß
Font) + Rand
- ähnlich InterfaceView,
ObjectView, MethodView,
FieldView
- UmlGui
- kann als Applet oder Applikation laufen (aber als Applet
nicht laden/speichern!)
- enthält Liste aller Views
- erzeugt Iconleiste als JToolBar
- fügt Icons hinzu als JButtons,
incl. Tooltip-Text und Listenern bei Anklicken
- bereitet für load/save
JFileChooser (Datei-Auswahlbox) vor
- enthält Zeichenfläche als Unterklasse DisplayPanel
- implementiert Verschieben der Views über Maus-Listener