Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene...

19
Objektorientierte Datenbanken Beim vorigen Mal: Objektorientierte Modellierung auf Entwurfsebene am Beispiel UML Heute: Umsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java Lernziele: Java aus UML-Sicht verstehen Kurzeinführung in OOP am Beispiel Java In Übungen noch vertieft Ralf Möller, FH-Wedel

Transcript of Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene...

Page 1: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Objektorientierte Datenbanken

Beim vorigen Mal: Objektorientierte Modellierung auf

Entwurfsebene am Beispiel UMLHeute:

Umsetzung in objektorientierte Modellierung auf Implementierungsebene am Beispiel Java

Lernziele: Java aus UML-Sicht verstehen Kurzeinführung in OOP am Beispiel Java

In Übungen noch vertieft

Ralf Möller, FH-Wedel

Page 2: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Wiederholung UML

Klassen und Instanzen Attribute Operationen

Klassenbeziehungen Generalisierung, Spezialisierung

Auf Klassenebene beschriebene Instanzenbeziehungen Relationen: Assoziationen, Komposition, Aggregation,

Page 3: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Sichtbarkeit, Namensraumverwaltung

In UML Moduln in Java Packages genanntImport-Mechanismus in Java:

import java.util.*;Export-Mechanismus in Java:

Kennzeichnung des Exports von Namen in einem speziellen Package durch Sichtbarkeitsattribute bei den Namen

public protected private

Beispiele siehe unten

Page 4: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Variablen und Typen

Variablen in Programmen speichern Werte und Objektreferenzen

Wertebereich durch Angabe von Typen eingeschränkt

Initialisierung möglich (optional)Beispiele:

int port; int port = 1234;

Page 5: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Basis-Datentypen: sog. Werte in Java

Beschreibung immutabler einfacher ObjekteBeschreibung des Wertebereichs

von Attributen, Variablen usw. Zahlen: int, float, ...

Vordefinierte Verknüpfungsoperationen (==, +, -, ...) Wahrheitswerte: boolean

Vordefinierte Verknüpfungsoperationen (==, and, or, not, ...) Zeichen (Unicode): char

Vordefinierte Verknüpfungsoperationen (==, ...)

Page 6: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Klassen und Typen

Jede Klasse definiert auch einen Typ (mit gleichem Namen)

public class Rechnung { int preis; public void drucken () { ... } public void stornieren() { ... }}

Page 7: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Attribute (Felder, Instanzvariablen)

In Java Objektspezifische Attribute zusätzlich: sog. statische Attribute

Durch static markiert Beispiel (Erweiterung der vorher definierten Klasse um mwst):

public class Rechnung { public static int mwst = 16; pubic int preis; ...}

Statische Attribute sind der Klasse zugeordnet Wertebereich von Attributen durch Typangabe

beschrieben

Page 8: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Operationen (in Java Methoden genannt)

Statische vs. objektspezifische Methoden Methodenarten: Prozeduren vs. Funktionen Methodenkopf und Methodenrumpf Methodenrumpf besteht aus Java-Programmcode

Java ist eine klassische Programmiersprachemit entsprechenden Kontrollstrukturen, Anweisungen und Ausdrücken

Direkter Zugriff auf Attribute der Klasse (zu der die Methode gehört) nur im Rumpf einer objektspezifischen Methode Attributreferenzen wie Variablenreferenzen notiert

Page 9: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Java-Anweisungen im Methodenrumpf

Zuweisungen: i = 42;Fallunterscheidungen:

if (i == 42) { ... } else { ...}

Schleife: while (i < 42) { ... }

Page 10: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Methoden

[Sichtbarkeit] [static] [Ergebnistyp] Name ([Typ Name {, Typ Name}])

Prozeduren Ergebnistyp: void Prozedurenaufrufe (s.u.) nur als Anweisungen

Funktionen Ergebnis bestimmt mit:

return Ausdruck im Rumpf einer Methode

Funktionsaufrufe (s.u.) nur in Ausdrücken verwendbar

Page 11: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Objekterzeugung

Syntax: new KlassennameBeispiel

Rechnung r1 = new Rechnung;

Page 12: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Initialisierungsprozeduren (Creators)

Methodenname = Klassenname Klassenname([Typ Parameter {, Typ Parameter}]) Zugriff auf Attribute der neuen Instanz im Rumpf

Aufruf: new Klassenname([Audruck {, Ausdruck}]) Erzeugung einer Instanz einer Klasse unter Verwendung einer

neuer OID Ausführung der „passenden“ Initialisierungsprozedur

In Java keine Destruktoren notwendig, da automatische Speicherrückgewinnung bzgl. nicht mehr referenzierter Objekte in Java-Laufzeitsystem integriert (garbage collector).

Page 13: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Beispiel

public class Rechnung { public static int mwst = 16; pubic int preis; public Rechnung (int init) { preis = init } ...}

Rechnung r1 = new Rechnung(100); Rechnung r2 = new Rechnung(200); Erzeugung zweier Rechnungsinstanzen mit jeweils

unterschiedlichem Wert für das Attribut preis Die Rechnungsinstanzen sind hier an Variablen r1 und

r2 gebunden

Page 14: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Rumpf der Methoden für Rechnungen

public class Rechnung { public static int mwst = 16; pubic int preis; public Rechnung (int init) { preis = init } public void drucken () { System.out.println(“Der Preis beträgt:“);

System.out.println(preis * (1 + mwst/100)); } ...

}

Page 15: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Zugriff auf Attribute

Im Rumpf von Methoden der definierenden Klasse direkt über Namen: Beispiel: preis = 88;

Im Rumpf von Methoden außerhalb der definierenden Klasse: Instanzenspezifische Attribute: r1.preis = 333; Statische Attribute: Rechnung.mwst = 17;

Page 16: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Operationsaufruf

Statisch Angabe der Klasse und des Methodennamens Klassenname . Methodenname ([Ausdruck {,

Ausdruck}])Objektspezifisch

Ausdruck . Methodenname ([Ausdruck {, Ausdruck}])

Metapher des Sendens von Nachrichten

Page 17: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Zugriff auf Methoden: Beispiel

r1.drucken() Der Preis beträgt: 116

r2.drucken() Der Preis beträgt: 232

Page 18: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Zusammenfassung, Kernpunkte

Objektorientierte Modellierung auf Entwurfsebene umgesetzt in Implementierungsebene am Beispiel von Java

Klassen, Attribute, Methoden, Instanzen, new, Initialisierungsprozeduren

Page 19: Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene am Beispiel UML zHeute: yUmsetzung in objektorientierte.

Was kommt beim nächsten Mal?

Fortsetzung der Umsetzung von UML durch Java