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

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Einführung in die Programmierung Zusammenfassung
Kritische Betrachtung
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
Objektorientierte Programmierung
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Entwurfs- und Implementationsdiagramme
Objektorientiertes Programmieren
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
ObjektOrientiertes Programmieren
1.3 Klassen und Beziehungen
1.3 Klassen und Beziehungen
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Objektorientierte Modellierung mit UML
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vererbung Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
SS 2014 – IBB4C Datenmanagement Do 17:00 – 18:30 R Vorlesung #3 ER Modellierung.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Sichtbarkeit einschränken
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
Objektorientierte Datenbanken
Objektorientierte Datenbanken
Java Programme nur ein bisschen objektorientiert.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

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

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

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);

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

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

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)

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[]) {... } }

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

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

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.

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

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

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

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

Relationen in UML: Graphische Notation z Komposition

Beispiel: Uni-Schema

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)

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

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

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

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

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

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

Aggregation, Komposition zIn Java keine besonderen Sprachkonstrukte

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

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

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

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

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

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