Date post: | 06-Apr-2016 |
Category: |
Documents |
Upload: | bjoern-sachs |
View: | 214 times |
Download: | 0 times |
Objektorientierte Datenbanken
Beim vorigen Mal: Anfragesprachen: SQL (kurz) Mehrbenutzerbetrieb und Sperren Transaktionen Anbindung an Programmiersprachen Probleme der relationalen Datenbanktechnologie
Heute: Objektorientierte Modellierung
Ralf Möller, FH-Wedel
Probleme relationaler Datenbanktechnologie
Zwar methodisch saubere aber schwierig zu lernende manuelle Umsetzung des Entwurfsmodells (ERM) in das Implementierungsmodell
Zersplitterung von „zusammengehörigen Daten“ durch Normalisierung
Joins bei navigierendem Zugriff sehr aufwendig Probleme bei Änderung des Datenmodells wegen
fehlender Kapselung Impedance Mismatch Sprache für Integritätsbedingungen meist schwach
(hier nicht vertieft)
„Zersplitterung“: Pointierte Darstellung
Relationale Modellierung bedingt folgende Sicht:
Bevor ein Auto in der Garage abgestellt werden kann, muß es in seine tausend Einzelteile zerlegt und in den dafür vorgesehenen Fächern ablegt werden. Bevor es wieder benutzt werden kann, ist ein komplizierter Zusammenbau erforderlich.
Impedance MismatchDatenmodellierungsform in
Programmiersprachen paßt nicht zu Form in Datenbanken
Programmiersprachen: Record/Tupelorientiert Mit hoher Frequenz einfache
Operationen durchführenDatenbanksysteme: Mengenorientiert
Mit niedriger Frequenz komplexe Operationendurchführen
[F. Matthes, J.W. Schmidt]
Objektorientierte Modellierung (1)
Was ist ein Objekt? Zusammensetzung von Daten und Operationen Teile der Zusammensetzung sind durch Attribute
gekennzeichnet Objekte haben einen Zustand Zugriff nur über wohldefinierte Schnittstellen (Kapselung) Objektspezifische Operatoren
Objekte bekommen automatisch eine Identifikation (OID)
Orthogonalitätsprinzip Zusammengesetzte Daten wie Elementardaten behandeln
soweit sinnvoll Teile (Attributwerte) können wieder Objekte sein
Objektorientierte Modellierung (2)
Setze- und Erfragefunktionen für Attributwerte als Spezialfall objektspezifischer Operationen
Aktivierung von Operationen durch Nachrichten Software-Engineering-Prinzipien
Kapselungsprinzip: Wer darf welche Attribute wo sehen/ändern? Wer darf welche Nachricht an wen senden?
Interne Sicht (Attribute) vs. Externe Sicht (Nachrichten) Externe Sicht bedingt höheren Ressourcenverbrauch
Festlegung der Attribute und Operatoren nicht für genau ein Objekt, sondern für eine Menge von Objekten gleicher Art
Eine solche Menge von Objekten gleicher Art heißt Klasse(vgl. Entity in ERM)
Unified Modeling Language (UML)
Der UML-Teil dieser Vorlesung enthält Material von Eckhardt Holz, Humboldt-Universität Berlin
Als detaillierterReferenz sei auch„The Unified ModelingLanguage – ReferenceManual“ empfohlen
UML Konzepte
Objekte / Instanzen einer Klasse Klassen beschreiben die statische Struktur von
Objekten / Instanzen Klassen sind gekennzeichnet durch:
Name (aus dem Vokabular der Problemdomäne gewählt) Attribute (beschreiben die Struktur der Instanzen einer
Klasse) Operationen
(beschreiben das Verhalten der Instanzen einer Klasse) Objekte erzeugen: Instantiieren
Automatische Vergabe einer OID
Statische Strukturdiagramme (1)
Basis-Datentypen
Beschreibung des Wertebereich von Attributen Integer, short, ... Real String ...
Funktionalität ohne Struktur: Interfaces
Nur Beschreibung der Nachrichten die an Objekte gesandt werden können, die das Interface implementieren (d.h. des Protokolls, das die Objekte unterstützen)
Keine Beschreibung der Struktur der ObjekteAuswahl der konkreten Struktur nach
pragmatischen Gesichtspunkten zur Erzeugungszeit einer Instanz
Statische Strukturdiagramme (2)
Relationen: Graphische Notation
Komposition
Vgl. Relationships in ERM
Relationen: Beispiel für Komposition
Relationen in Strukturdiagrammen: Bedeutung
Assoziationen, Aggregationen und Komposition modellieren auf Klassenebene Beziehungen zwischen Instanzen (der beteiligten Klassen)
Generalisierungen modellieren Beziehungen zwischen Klassen (d.h. Mengen von Instanzen)
Abhängigkeiten haben keine wohldefinierte Semantik
Relationen: detailliertere Beschreibung
Multiplizität gibt an, wieviel Objekte an der Relation beteiligt sind
Navigierbarkeit beschränkt den bidirektionalen Charakter von Relationen
Constraints beschränken den Gültigkeitsbereich von Relationen
Rollennamen beschreiben die Endpunkte der Relation
Relationen: Multiplizitäten
Klassen und Objektdiagramme (Beispiel)
Erbringt
Erbringt
Kostet
Multiplizität
Jedes Element von Klasse A steht mit mindestens i Elementen der Klasse B in Beziehung
... und mit maximal j vielen Klasse-B-Elementen
Analoges gilt für das Intervall k..l
Multiplizitätsangabe ist analog zur Funktionalitätsangabe im ER-Modell Nicht zur (min,max)-Angabe: Vorsicht!
+op()
+Att1+Att2
KlasseA
1 1..*
Assoziation
i..jk..l+op()
+Att1+Att2
KlasseB
Klassen und Assoziationen
+Notenschnitt() : float+SummeWochenstunden() : short
+MatrNr : int+Name : String+Semester : int
Studenten
+AnzHörer() : int+DurchfallQuote() : float
+VorlNr : int+Titel : String
+SWS : int
Vorlesungen
+Hörer
1..*
*
+Nachfolger *
*hören
voraussetzen
Aggregation
+Notenschnitt() : float+SummeWochenstunden() : short
+MatrNr : int+Name : String+Semester : int
Studenten
+verschieben()
+Note : Decimal+Datum : Date
Prüfungen+Prüfling
1 *
+Prüfungsstoff 1
*
*
+Prüfer
1... ...
absolviert
Begrenzungsflächenmodellierung von Polyedern
+Gewicht() : float+Volumen() : float
+skalieren()+verschieben()
+rotieren()
+PolyID : int+...
Polyeder
+Umfang() : float+Volumen() : float
+FlächenID : int+...
Flächen
+Länge() : float
+KantenID : int+...
Kanten
+rotieren()+verschieben()
+skalieren()
+X : float+Y : float+Z : float
Punkte
1 1..* * * * *
Hülle Begrenzung StartEnde
4..* 2 3..* 3..* 21
+Notenschnitt() : float+SummeWochenstunden() : short
+MatrNr : int+Name : String+Semester : int
Studenten
+AnzHörer() : int+DurchfallQuote() : float
+VorlNr : int+Titel : String+SWS : int
Vorlesungen
+Hörer
1..*
*
+verschieben()
+Note : Decimal+Datum : Date
Prüfungen
+Prüfling1
*
+Prüfungsstoff1*
+Notenschnitt() : float+Gehalt() : short
+Lehrstundenzahl() : short
+Rang : StringProfessoren
* +Prüfer1
*
+Dozent
1
+Gehalt() : short+Fachgebiet : String
Assistenten
*
+Boss
1
+Gehalt() : short
+PersNr : int+Name : String
Angestellte
+Nachfolger *
*hören
voraussetzen
gelesenVon
arbeitenFür
Mehrstellige Relationen
Generalisierung
Generalisierung ist eine Relation zwischen einer Superklasse und ihren Subklassen.
Zwei Mechanismen: Generalisierung Spezialisierung
Gemeinsame Attribute, Operationen und Relationen werden auf dem höchsten anwendbaren Hierarchieniveau gezeigt
Generalisierungen können Namen haben (!)
Generalisierung (Beispiel)
Abstrakte Klassen
Dienen auf Modellierungsebene zur Beschreibung gemeinsamer Eigenschaften (Attribute und Operationen)
Werden nicht instantiiert
Generalisierung: Constraints
overlapping, disjointcomplete, incomplete
Generalisierung und Vererbung
Attribute Vererbung „nach unten“ Sichtbarkeit steuerbar (public, protected, private)
Operationen Vererbung „nach unten“ Dynamisches Binden bei Operationen mit gleichem
Namen in Unterklasssen speziellste Operation (zuerst) anwenden
Assoziationen: Constraints
Subset...
Zusammenfassung, Kernpunkte
UML-Objektbegriff, statische StrukturObjektorientierte Modellierung auf
Entwurfsebene Klassen und Instanzen
Attribute (inkl. Sichtbarkeit) Methoden
Klassenbeziehungen Generalisierung, Zerlegung
Auf Klassenebene beschriebene Instanzenbeziehungen
Relationen: Komposition, Aggregate, Assoziationen
Was kommt beim nächsten Mal?
Objektorientierte Modellierung, Teil 2Umsetzung in Implementierungsmodell: Java