recall |
---|
header |
Die Überführung von UML Modellierungselemente in zielsprachenkonforme Entwurfskonzepte
Technische Klassen sind solche, die zur Realisierung von komplexen Datenstrukturen und Algorithmen beim Feinentwurf eingeführt wurden
(Fein-)Entwurf
fachliche Klassen
Schnittstellenklassen
syntaktische Fehler kann die Oberfläche selbst zurückweisen (z.B. ungültiges Datum), fachliche Kontrollen finden in den Kontrollklassen statt
Hierarchisch aufgebautes Menü am oberen Fensterrand
An beliebiger Stelle aufrufbares, kontextabhängiges Menü, das nach Auswahl eines Menüpunkts oder Klick außerhalb wieder verschwindet
Menü und Fenster-übergreifend einheitliche Möglichkeiten zur Selektion von Einträgen mit Maus und Tastatur
- orientiert an vorgegebenen Strukturen / zeitlichen Abläufen
- wichtige Menüpunkte weiter oben
- häufig verwendete Menüpunkte ganz oben oder unten im Menü
- alphabetisch (wenn nichts anderes funktioniert)
7
Spezielle Klassen zur Darstellung und Bearbeitung von Attributen von Entitätsobjekten
- Hinzufügen von Operationen zu Kontrollklassen um der externen Schnittstelle (AAS-Klassen) Zugriff auf Entitätsklassen zu ermöglichen und fachliche Logik zu implementieren
- Hinzufügen von Operationen zu Entitätsklassen für klassenlokale fachliche Logik
- Navigation der Assoziation (einseitig / bidirektional)
- Multiplizität beschränkt, exakt oder unbeschränkt
Assoziation A -> B, A enthält Attribut mit Referenz auf B
Assoziation A <-> B, A enthält Attribut mit Referenz auf B, B enthält Attribut mit Referenz auf A.
Konsistenz muss durch verbinde()
und löse()
Operationen sichergestellt werden
- A -> B1, B2, ... Bn:
- kleines n: A enthält mehrere Attribute mit Referenzen auf Bs.
- großes n: A enthält Array mit Referenzen auf Bs.
- A <- B1, B2, ... Bn: Jedes B erhält Referenz auf A
- A <- B1, B2, ... Bn: Jedes B erhält Referenz auf A
- A -> B1, B2, ... Bn: A enthält Containerklasse mit Referenzen auf B
Aufspalten in zwei einseitig navigierbare Assoziationen, diese transformieren
- Jedes Objekt hält einen Container (Menge) der mit ihm verknüpften Elemente
- Singleton Klasse, die Paare für jede 1:1 Assoziation hält, gibt Iteratoren für alle assoziierten Objekte eines Objekts zurück, kann Existenz von Verbindungen checken und neue Paare erzeugen und halten. Vorteil: Auch Assoziationsklasse des Entwurfs problemlos abbildbar
Genau wie gewöhnliche Assoziationen, aber die Standardoperationen müssen das geforderte Verhalten zum Zerstören implementieren
Genau wie n:m wird eine Relation-Klasse eingeführt, die ein oder mehrere Paare verwaltet. Nur über diese werden auch die Verbindungen erstellt.
eine Klasse, auf deren Objekte nicht zwingend ein anderes Objekt eine Referenz hält, die also dann garbage collected werden würden.
Singleton Ordner-Klasse, die alle Instanzen der Echte-Ganzes-Klasse hält.
Basis-AAS hält Referenz auf erweiternde AAS und ruft entsprechende Operationen im Basisanwendungsfall auf
- Basis-AAS hält Referenz auf erweiternde AAS und ruft entsprechende Operationen im Basisanwendungsfall auf, wenn die Erweiterungsbedingung erfüllt ist
- Beobachter-Muster
Design Pattern: State, ggf. kombiniert mit Flyweight
- Redundanzfreiheit
- Integrierte Datenhaltung, Nutzung aus verschiedenen Anwendungssystemen
- Zuverlässigkeit (Konsistenz und Integritätschecks, Recovery)
- Komplexe Abfragen
- Zugriffsrechte-Verwaltung
- Mehrbenutzerbetrieb
interne liegen im Hauptspeicher, externe in der Datenbank
Ein Zugriff auf die Datenbank bzw. ein darin enthaltenes Objekt stellt sich genauso dar wie der Zugriff auf ein internes Objekt (ggf. mit etwas mehr Wartezeit fürs Laden)
Jedes Objekt einer Klasse erhält ein Tupel in einer Tabelle, die Attribute der Klasse sind die Spalten der Tabelle
Attribut ID (z.B. UUID Universally Unique Identifier), wird sinnvollerweise von Proxy Klasse für das persistente Objekt gehalten
Entweder als Relationship-Relation oder mit Attribut das auf Primary Key einer anderen Relation verweist (Foreign Key)
Jede Klasse der Hierarchie bekommt eine Tabelle mit "ihren" Attributen. Die ID der Zeilen ist die des Objekts, aber die Attribute sind über mehrere Tabellen verteilt. Zusätliche ist die konkrete Klasse des Objekts gespeichert.
Design Pattern: Proxy
- Geringe Anpassung der Entitätsklassen, um sie persistent zu machen
- Framework hat Kontrolle über persistente Objekte, lädt und speichert selbstständig
- Unterstützung der meisten Datentypen einer Programmiersprache für Attribute
- automatische Unterstützung von mehrwertige Attributen (Arrays etc, sofern Collection Interface implementiert)
- automatische Erstellung von Proxy-Klassen, wenn eine Entitätsklasse durch Implementierung eines Interface als persistent markiert ist
Kopplung des Anwendungssystems an die Middleware relativ stark, an Systemsoftware möglichst schwach für einfachen Austausch
- Middleware: Halbfabrikate wie GUI und Persistenz Frameworks, Module für verteilte Anwendungssysteme
- Systemsoftware: Betriebssystem, Fenstersystem, Netzwerksoftware / -protokolle, DBMS