Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektorientierte Datenbanken zBeim vorigen Mal: yUmsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java yKlassen und Instanzen.

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierte Datenbanken zBeim vorigen Mal: yUmsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java yKlassen und Instanzen."—  Präsentation transkript:

1 Objektorientierte Datenbanken zBeim vorigen Mal: yUmsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java yKlassen und Instanzen zHeute: yFortsetzung: Generalisierung, Relationen zLernziele: yJava aus UML-Sicht verstehen yKurzeinführung in OOP am Beispiel Java xIn Übungen noch vertieft Ralf Möller, FH-Wedel

2 Vordefinierte Klassen zBeispiele: yjava.lang.String (Notation (“OODB.") yjava.util.Vector yjava.util.Dictionary zEntsprechende Operationen zum Erzeugen und zum Zugriff auf Elemente bzw. zum Ersetzen von Elementen definiert zVordefinierte Verknüpfungsoperationen

3 java.util.Vector zVector x = new Vector; zx.setElementAt(Integer(42), 0); zx.setElementAt(Integer(43), 1); zx.elementAt(0); zx.length(); zVector y = new Vector(27); zx.addElement(56);

4 Klassen als Attributtypen zpublic class Polyeder { java.util.Vector hülle;... } zpublic class Flaeche {... } zpublic class Kante { Punkt p1; Punkt p2;... } zpublic class Punkt {... }

5 Arrays am Beispiel zint a[] = new int[100]; za[0] = 1; zfor (int i = 1; i < b.length; i++) { a[i] = a[i-1] }

6 Arrays vs. Vektoren zBei Array muß die Maximallänge zur Erzeugungszeit (nicht Übersetzungszeit) bekannt sein zBei Vektoren (Instanzen der Klasse Vector) ist die Länge variabel zLänge kann bei beiden erfragt werden (length)

7 Programme zIn Java ist eine Klasse auch ein Programm, wenn eine sog. Main-Methode definiert ist zClass Test { y... ypublic static void main (String argv[]) {... } }

8 Generalisierung / Spezialisierung zGeneralisierungen/Spezialisierungen modellieren Beziehungen zwischen Klassen (d.h. Mengen von Instanzen) yIn Java Umsetzung durch extends-Konstrukt

9 Umsetzung in Java bietet nur Spezialisierung zVererbung in Java unterstützt (Einfachvererbung) yAttribute können nur von ein einer Oberklasse geerbt werden, Angabe beliebig vieler Interfaces möglich yNamenskollisionen definieren Einschränkungen zBetrachtung von Overlapping und Disjoint machen also nur für Interfaces Sinn (wird aber immer mit Klasse kombiniert, ist also in Java ohne Bedeutung) zUnterscheidung von Generalisierungsarten (mit Namen) auch in Java höchstens für Interfaces sinnvoll (aber nicht unterstützt) zAbstrakte Klassen können in Java markiert werden yKeine Instantiierbarkeit

10 Spezialisierung, Subtypen, Substitutionsprinzip zIn Java nur Spezialisierung, da Quellcode nicht neu übersetzt werden soll zEine Klasse, die eine andere Klasse erweitert, definiert einen Subtypen (dito für Interface) zAnnahme: Im Code steht Methodenaufruf yObjektausdruck. Methodenname ([Ausdruck {, Ausdruck}]) zZulässig nur wenn Objektausdruck ein Objekt liefert, das Instanz eines Subtyps von einer Klasse ist, die eine Methode entsprechenden Typs bereitstellt.

11 Spezialisierung und Vererbung zAttribute yVererbung „nach unten“ ySichtbarkeit steuerbar (public, protected, private) zOperationen yVererbung „nach unten“ yÜberschreiben einer Methode gleichen Typs in Unterklasse yAufruf der überschriebenen Methode m durch super[.m](...) yDynamisches Binden xMethode in der speziellsten Oberklasse (zuerst) anwenden yKontravarianzprinzip bei Behandlung der Methoden- Parametertypen durch den Compiler

12 Beispiel: zEinsatz von Objekten in Rahmenwerken (Frameworks) zSpezielles Framework: Java-Laufzeitumgebung zAnnahme: Objekt soll auf Terminal gedruckt werden zNotwendig: Objektbeschreibung als Zeichenkette zNachricht: toString() zOption: Spezielle Methoden in „eigenen“ Klassen programmieren

13 Interfaces und Typen zBeschreibung einer Menge von Nachrichten, die an ein Objekt gesandt werden können, das das Interface implementiert zKeine Beschreibung der Struktur der Objekte zInterface-Spezifikationen definieren Typen zLeast Commitment Prinzip yDeklaration von Variablen- und Attributtypen durch Verwendung von Interfaces yAuswahl der konkreten Struktur nach pragmatischen Gesichtspunkten zur Erzeugungszeit der Variablen- bzw. Attributwerte durch Instantiierung von Klassen

14 Beispiel zpublic interface... {... } zpublic class... extends... implements...,... {... }

15 Relationen in UML: Graphische Notation z Komposition

16 Beispiel: Uni-Schema

17 Relationen zAssoziationen, Aggregationen und Komposition modellieren auf Klassenebene Beziehungen zwischen Instanzen (der beteiligten Klassen, z.B. K1 und K2) yUmsetzung durch xEinführung neuer Attribute für K1 und K2, xVerwendung von „globalen“ Verzeichnissen (Dictionaries)

18 Umsetzung durch Klassenfelder (Attribute) zGeht bei funktionaler Einschränkung zVerwendung des Rollennamens als Attributname, sonst Attributname aus Relationenname generieren zGültigkeitsbereich durch Typangaben ausdrückbar

19 Umsetzung durch Klassenfelder mit Vectortyp zNotwendig bei nicht vorhandener funktionaler Einschränkung

20 Wechselseitige Referenzierung zNotwendig bei fehlender Navigierbarkeitsangabe zMultiplizitätsüberwachung durch manuell zu erstellenden Code zZugriff auf Elemente einer Relation nur über Objekte zProbleme mit nebenläufigen Kontrollflüssen und temporär nicht vollständig etablierten wechselseitigen Referenzierungen

21 Relationen: detailliertere Beschreibung zMultiplizität gibt an, wieviel Objekte an der Relation beteiligt sind zNavigierbarkeit beschränkt den bidirektionalen Charakter von Relationen zConstraints beschränken den Gültigkeitsbereich von Relationen zRollennamen beschreiben die Endpunkte der Relation

22 Umsetzung durch Verzeichnisse (Dictionaries) zAbstrakte Klassen zur Implementierung von Assoziationen zInstantiierbare Unterklasse: Hashtables

23 Dictionaries zAssoziation von „Elementen“ mit „Schlüsseln“ zvar Dictoriary d; zd=new Hashtable; zd.put(534958345, „Meyer“) zd.get(534958345) zd.remove(534958345)

24 Aggregation, Komposition zIn Java keine besonderen Sprachkonstrukte

25 Assoziationen: Constraints in Java zÜberwachung durch manuell zu erstellen Code

26 Mehrstellige Relationen zUmsetzung durch Einführung einer neuen Klasse mit entsprechenden Attributen, um auf die anderen an der Relation beteiligten Instanzen zu verweisen

27 Lineare Traversierung von Datenstrukturen zIterator yObjekt, das Traversierungszustand speichert zNext-Operation zur Fortschreibung der Traversierung zOperation zur Feststellung, ob Ende erreicht

28 Beispiel: zimport java.util.*; zvar Dictoriary d; zIterator iter = d.iterator(); zWhile (iter.hasNext()) { Object o = iterator.next();.... }

29 Zusammenfassung, Kernpunkte zObjektorientierte Modellierung auf Entwurfsebene umgesetzt in Implementierungsebene am Beispiel von Java zFazit: Umsetzung nicht ganz einfach (teilweise sogar relativ aufwendig)

30 Was kommt beim nächsten Mal? zPersistente Objekte zJava Data Objects (JDO)


Herunterladen ppt "Objektorientierte Datenbanken zBeim vorigen Mal: yUmsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java yKlassen und Instanzen."

Ähnliche Präsentationen


Google-Anzeigen