Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb...

32
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

Transcript of Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb...

Page 1: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 2: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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)

Page 3: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

„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.

Page 4: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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]

Page 5: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 6: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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)

Page 7: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 8: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 9: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Statische Strukturdiagramme (1)

Page 10: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Basis-Datentypen

Beschreibung des Wertebereich von Attributen Integer, short, ... Real String ...

Page 11: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 12: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Statische Strukturdiagramme (2)

Page 13: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Relationen: Graphische Notation

Komposition

Vgl. Relationships in ERM

Page 14: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Relationen: Beispiel für Komposition

Page 15: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 16: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 17: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Relationen: Multiplizitäten

Page 18: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Klassen und Objektdiagramme (Beispiel)

Erbringt

Erbringt

Kostet

Page 19: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 20: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 21: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 22: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 23: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

+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

Page 24: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Mehrstellige Relationen

Page 25: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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 (!)

Page 26: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Generalisierung (Beispiel)

Page 27: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Abstrakte Klassen

Dienen auf Modellierungsebene zur Beschreibung gemeinsamer Eigenschaften (Attribute und Operationen)

Werden nicht instantiiert

Page 28: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Generalisierung: Constraints

overlapping, disjointcomplete, incomplete

Page 29: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 30: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Assoziationen: Constraints

Subset...

Page 31: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

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

Page 32: Objektorientierte Datenbanken zBeim vorigen Mal: yAnfragesprachen: SQL (kurz) yMehrbenutzerbetrieb und Sperren yTransaktionen yAnbindung an Programmiersprachen.

Was kommt beim nächsten Mal?

Objektorientierte Modellierung, Teil 2Umsetzung in Implementierungsmodell: Java