Institutsverwaltung
Objekttypen Eigenschaften
Personen Name (bestehend aus Vor- und Nachname)
Adresse (bestehend aus PLZ, Ort, Straße und Hausnummer Hobbies (bestehend aus einer Menge von Hobbies)
Geburtsdatum
Studenten wie Personen - zusätzlich noch Matrikelnummer
Studienfach
Mutter und Vater des Studenten (die wiederum Personen sind)
Zeugnis (bestehend aus einer Menge von Zweitupeln: Fach und Note) Angestellte wie Personen - zusätzlich noch
Arbeitsstelle (bestehend aus dem Namen des Instituts und der Adresse) Gehalt
Vorgesetzter (der wiederum ein Angestellter ist) Hilfsassis-
tenten
wie Studenten und Angestellte - zusätzlich noch betreuter Kurs
Bücher ISBN
Titel
Menge von Autoren
Menge von Versionen (bestehend aus Zweitupeln: Auflage und Jahr) Stichworte (bestehend aus einer Menge von einzelnen Stichworten) Verlag (weiterer Objekttyp)
Zeitschriften- bände
Zeitschrift (weiterer Objekttyp) Bandnummer
Jahr
Menge von Heften (jedes Heft besteht aus einem Zweitupel:
Institutsverwaltung
Objekttypen Eigenschaften
... Heftnummer, Artikel
... Artikel ist eine Menge von Einzelartikeln
... jeder Einzelartikel besteht aus Titel, einer Menge von Autoren, einer Seitenangabe (von, bis) und einer Menge von Stichworten)
Ausleihob- jekte
sind Bücher oder Zeitschriftenbände, zusätzlich Inventarnummer
Inentarisierungsdatum
Entlei-hungen Entleiher (ein Angesteller oder ein Student) Ausleihobjekt
Ausleihdatum
Geräte Beschreibung des Gerätes Haushalts-
positionen
Geräte oder Angestellte - zusätzlich Etat pro Jahr (Geldbetrag, der für eine bestimmte Haushaltsposition verfügbar ist)
Verlage Name
Adresse (bestehend aus PLZ, Ort, Straße und Hausnummer) Zeitschriften ISSN
Titel
Menge von Herausgebern Verlag
Zeitschriftenbände Eintrag Zeitschrift Bände Hefte
BandNr Jahr HeftNr Artikel
Titel Autoren Seiten Stichworte
Autor von bis Stichwort
Nachname Vorname
BüL 77 1999 3 Zur Versorgung der
Weltbevölkerung mit Nahrungsenergie vom Ackerland
Köppen Detloff 333 344 Hunger
Bevölkerungszuwachs Modellrechnung Umweltradioaktivität
und die Land- und Ernährungswirtschaft
Wichen Arnold 345 374 Radionuklide
... ... ... ... ... ...
Die neue
Insolvenzordnung
Bodmer Ulrich 410 431 Insolvenz
Bilanzanalyse Sicherheiten
... ... ... ... ... ...
Evaluation der Studienrichtung
"Naturschutz und Landschaftsökologie"
im Studiengang Agrarwissenschaften der Universität Bonn
Burghard Gertrud 440 457 Befragung
Studierende Ausbildung
Schmidt Ute Praktikum
Schmitt Thomas Berufsfeld
Weis Jürgen Beschäftigung
... ... ... ... ... ...
4 Die EU-Getreide- und Ölsaatenpolitik in den 90er Jahren
Willer Horst 501 569 ...
78 2000 1 ... ... ... ... ... ...
Betriebs- berater
... ... ... ... ... ... ... ... ...
Unzulänglichkeit von relationalen Systemen
Flache Struktur (Tupel) mit homogenen Sammlungen (Relation)
Darstellung der Objektstruktur nur über Fremdschlüssel möglich (keine Unterscheidungsmöglichkeiten für Generalisierung und Aggregation)
Keine globalen Operatoren für komplexes Objekt
Keine benutzerdefinierbaren Operatoren
Bei nicht mengenorientierten Operationen
procedure call von AP zum DBMS für jeden Zugriff und Speicherung
da Objektstruktur durch Fremdschlüssel ausgedrückt, mindestens eine Adressenübersetzung pro Tupel.
"Impedance mismatch" zwischen relationaler Sprache und OO-Programmiersprache.
Beispiele für reale Objekte, mögliche Operationen und ihre Darstellung im Programm Reales Objekt manuelle Operation Objektdarstellung im Programm
Text Schreiben
Ändern Wegwerfen
STRING oder eine Liste von STRINGs
Angestellter Einstellen Gehaltzahlen Entlassen
Record besteht aus Angestelltennummer Nachname
Vorname PLZ
...
Kugel Verschieben
Vergrößern Verkleinern
Record besteht aus Mittelpunkt
Radius
Imperative Programmierung
TYPE Kugel = RECORD
X,Y,Z: INTEGER;
Radius: REAL;
END;
Sollen mehrere Objekte vom Typ Kugel im Programm verwendet werden:
VAR K1, K2: Kugel;
Alle Daten zu Objekten vom Typ Kugel sind in der Record-Struktur "eingekapselt".
Zugriff erfolgt über die festgelegte Schnittstelle [Namen des Objekts (=Variable) und Namen der Komponenten]
Schwächen dieser Kapselung:
1) Man kann auf alle Daten eines Objekts zugreifen
2) Das Verhalten des Objekts kann nicht eingekapselt werden (Objekte können lokal für eine Prozedur sein; meist sollen aber bei gleichen Objekten mehrere Operationen durchgeführt werden)
Prozedur 1 Prozedur 2
Objekte Sicht der imperativen
Programmierung
TYPE Kugel = OBJECT
X,Y,Z: INTEGER;
Radius: REAL;
PROCEDURE Vergroessere (Faktor: REAL);
PROCEDURE Verschiebe (Vek1, Vek2, Vek3: INTEGER);
END;
Sicht der objektorientierten Programmierung
Objekt1 (z.B. K1) Objekt2 (z.B. K2)
Prozeduren
Zusammenhang von Objekten und Prozeduren
1. In imperativen Programmiersprachen agieren Prozeduren mit passiven Objekten.
In OOPLs agieren die Objekte selbst.
Beispiel: Objekte K1 und K2 um den Faktor 3 bzw. 0,3 vergroessern:
K1.Vergroessere(3);
K2.Vergroessere(0,3);
2. In (rein) objektorientierten Sprachen werden alle Manipulationen an Objekten über Methoden ausgeführt.
Beispiel: Initialisierung einer Kugel
a) in imperativen Sprachen: direkter Zugriff auf die Komponenten (Variablen), z.B. durch K1.X=2; K1.Y=4;...
b) in objektorientierten Sprachen: extra definierte Methode (z.B. eine Initialisierungsroutine Init definieren):
K1.Init(2, 4, 5, 7.35)
3. In objektorientierten Sprachen können Funktions- und Prozedurnamen überladen werden
Beispiel: Neben Objekttyp Kugel gibt es auch einen Objekttyp Zylinder TYPE Kugel = OBJECT
...
PROCEDURE Vergroessere(Faktor:REAL);
END;
TYPE Zylinder = OBJECT ...
PROCEDURE Vergroessere(Faktor:REAL);
END;
Für die beiden Fälle kann die Prozedur Vergroessere unterschiedlich definiert sein.
Vererbung von Eigenschaften I
In objektorientierten Sprachen können Eigenschaften und Methoden zwischen Objekttypen vererbt werden. (Die Objekttypen werden dazu in Hierarchien angeordnet: Allgemeinere Objekttypen
vererben ihre Eigenschaften auf speziellere).
Vererbungshierarchie für Graphikobjekte
3D_Objekt
Kugel Zylinder Quader
Würfel
erben
vererben
Vererbung von Eigenschaften II
TYPE 3D_Objekt = OBJECT
X, Y, Z: INTEGER;
END;
TYPE Kugel = OBJECT(3D_Objekt) Radius:REAL;
END;
TYPE Zylinder = OBJECT(3D_Objekt) Laenge, Radius: REAL;
END;
(Durch die Angabe OBJECT erbt Kugel die Eigenschaften von 3D_Objekt und besitzt damit neben der explizit definierten Eigenschaft Radius auch die vererbte Eigenschaft der Koordinaten des Mittelpunkts;
Hierarchie ist noch nicht vollständig verfeinert: Noch einführen: 3D_Objekt_mit_Radius unterhalb von 3D_Objekt und oberhalb von Kugel und Zylinder).
Vererbung von Methoden
In objektorientierten Sprachen können Methoden zwischen Objekttypen vererbt werden.
Beispiel: Wird für das 3D_Objekt eine Methode zum Verschieben bezüglich der X-, Y- und Z-Achse definiert, kann diese Methode auch für Kugel- oder Zylinderobjekte angewendet werden.
TYPE 3D_Objekt = OBJECT
X, Y, Z: INTEGER;
PROCEDURE VerschiebeX (L: INTEGER);
PROCEDURE VerschiebeY (L: INTEGER);
PROCEDURE VerschiebeZ (L: INTEGER);
END;
...
K1.VerschiebeY(11); K1.X:=5;
Z1.VerschiebeY(2) ...
Mehrfachvererbung
TYPE Hilfsassistent = OBJECT(Angestellte, Studenten) ...
END;
Personen
Hilfsassistenten
Angestellte Studenten
Zusammenfassung OOPLs
Im Gegensatz zu imperativen Sprachen werden in OOPLs
neben Eigenschaften von Objekten auch die mit ihnen durchzuführenden Operationen, die Methoden, im Objekttyp definiert oder "eingekapselt".
Objekte als aktive Elemente angesehen, die die Methoden selbst aufrufen und nicht von Prozeduren und Funktionen manipuliert werden.
Alle Manipulationen an Objekten über Methoden ausführen (sollen).
Eigenschaften und Methoden zwischen Objekttypen vererben können, indem diese in einer Vererbungshierarchie angeordnet werden.
Ererbte Eigenschaften und Methoden redefinieren können (Overriding)
Das dynamische Binden (evtl. neben dem statischen) unterstützen.
Einführung in objektorientierte Datenbanksysteme
In objektorientierten Datenbanksystemen sind nicht nur Standard-Datentypen für Eigenschaften von Objekten erlaubt, sondern auch die wiederholte Anwendung von Typkonstruktoren.
Beispiel: Personen (Vorname, Nachname, PLZ, Ort, Straße, Hausnummer, Geburtsdatum, Hobbies)
Wie kann das "Hobby-Problem" gelöst werden ?
Lösung mittels relationaler Datenbank I Möglichkeit 1
Personendaten
Vorname Nachname GebDatum PLZ Ort Strasse HausNr
Personenhobbies
Vorname Nachname GebDatum PLZ Hobby Probleme, wenn z.B.
a) 2 Personen mit gleichem Vor- und Nachnamen am gleichen Tag geboren sind und unter der gleichen PLZ wohnen.
b) 2 Personen mit gleichem Vor- und Nachnamen am gleichen Tag geboren sind und zwar ursprünglich an unterschiedlicher PLZ wohnen und dann aber umziehen - und zwar Pers1 an PLZ2 und Pers2 an PLZ1 -> dann Zuordnung der falschen Hobbies.
Lösung mittels relationaler Datenbank II
Möglichkeit 2
Personendaten
PersID Vorname Nachname GebDatum PLZ Ort Strasse HausNr
Hobbies
HobbyID Hobbybezeichnung
Personenhobbies
lfdnr PersID HobbyID
(künstliche Schlüssel simulieren Objektidentität)
Lösung mittels OODBMS
CLASS Personen
TYPE TUPLE(Name: TUPLE(Vorname: STRING, Nachname:STRING), Adresse: TUPLE(PLZ:INTEGER,
Ort: STRING, Straße: STRING,
Hausnummer: INTEGER), Hobbies: SET(Hobby:STRING),
Geburtsdatum: DATE)
Objektorientierte Datenbanksysteme wahren die Objektidentität. Objekte existieren unabhängig von den Werten ihrer Eigenschaften. Während sich die Werte der Eigenschaften ändern können, bleibt die Identität des Objekts unveränderlich.
Beispiel für Lösung mittels OODBMS
i0:
TUPLE(Name: TUPLE(Vorname: 'James', Nachname: 'Bond'), Adresse: TUPLE(PLZ:4711,
Ort: Penzance,
Straße: Upper Road, Hausnummer: 7), Hobbies: SET('Fußball', 'Boxen'), Geburtsdatum: 21.10.1957)
i1:
TUPLE(Name: TUPLE(Vorname: 'James', Nachname: 'Bond'), Adresse: TUPLE(PLZ:4712,
Ort: Mousehole, Straße: Sea View, Hausnummer: 99),
Hobbies: SET('Klavierspielen', 'Theater'),
Geburtsdatum: 21.10.1957)
Einordnung von Objekttypen in eine Hierarchie
CLASS Studenten INHERITS Personen
TYPE TUPLE (Matrikelnummer: INTEGER, Studienfach: STRING,
Vater: Personen, Mutter: Personen,
Zeugnis: SET(TUPLE (Fach: STRING, Note: REAL)))
Mittels INHERITS-Klausel werden die in Personen definierten Eigenschaften zum neuen Objekttyp vererbt.
Andere Objekte, die als Eigenschaft von Studenten vorkommen (Vater, Mutter) werden direkt als Komponentenobjekte definiert.
In objektorientierten Datenbanksystemen kann man neben den Eigenschaften von Objekttypen auch die mit ihnen durchführbaren Methoden in die Objekttyp-Definition einkapseln und vererben
(Beispiel: Berechnung des Alters aus dem Geburtsdatum und dem Tagesdatum)
Objektorientierter Entwurf (OOD)
a) Identifiziere die Objekte der Anwendung b) Beschreibe die Objekte der Anwendung
c) Identifiziere Beziehungen und Gemeinsamkeiten zwischen Objekten d) Fasse Objekte mit gemeinsamen Eigenschaften zu Klassen zusammen e) Identifiziere Beziehungen zwischen Klassen
f) Bilde die Klassenhierarchie
g) Implementiere die Funktionen der einzelnen Klassen h) Entwickle Programme aus Objektbeschreibungen
OOD-Prinzipien:
1) Objekte mit gemeinsamen Eigenschaften durch einen abstrakten Datentyp beschreiben 2) Den abstrakten Datentyp durch Klassen implementieren
3) Zwei Arten von Beziehungen ermitteln (Klasse-Komponentenklasse; Klasse-Unterklasse) Beschreibung von Objekten und Klassen: nicht sofort mit konkreten Datenstrukturen, sondern
zunächst nur abstrakte Datentypen (sie beschreiben nicht eine Implementierung, sondern die Menge der verfügbaren Operationen und ihre Eigenschaften)
Beziehungen zwischen Klassen:
a) Beziehung Klasse - Komponentenklasse (z.B. Ausleihobjkete und Entleiher sind Komponentenklassen von Entleihungen
b) Beziehung Klasse - Unterklasse (z.B. Zeitschriftenbände und Bücher sind Unterklassen von Ausleihobjekten; für jedes Buch sind dann die in Bücher definierten Attribute und Operationen, aber auch die von Ausleihobjekte ererbten Attribute und Operationen zuständig.
Beispiel für Beziehungen zwischen Klassen
Entleihungen
Entleiher Ausleihobjekte
Zeitschriften-
bände Bücher
Verlage ISBN
Klasse-Komponentenklasse- Beziehung
Klasse-Unterklasse- Beziehung