Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene...
-
Upload
thomas-berger -
Category
Documents
-
view
213 -
download
0
Transcript of Objektorientierte Datenbanken zBeim vorigen Mal: yObjektorientierte Modellierung auf Entwurfsebene...
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
Wiederholung UML
Klassen und Instanzen Attribute Operationen
Klassenbeziehungen Generalisierung, Spezialisierung
Auf Klassenebene beschriebene Instanzenbeziehungen Relationen: Assoziationen, Komposition, Aggregation,
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
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;
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 (==, ...)
Klassen und Typen
Jede Klasse definiert auch einen Typ (mit gleichem Namen)
public class Rechnung { int preis; public void drucken () { ... } public void stornieren() { ... }}
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
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
Java-Anweisungen im Methodenrumpf
Zuweisungen: i = 42;Fallunterscheidungen:
if (i == 42) { ... } else { ...}
Schleife: while (i < 42) { ... }
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
Objekterzeugung
Syntax: new KlassennameBeispiel
Rechnung r1 = new Rechnung;
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).
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
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)); } ...
}
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;
Operationsaufruf
Statisch Angabe der Klasse und des Methodennamens Klassenname . Methodenname ([Ausdruck {,
Ausdruck}])Objektspezifisch
Ausdruck . Methodenname ([Ausdruck {, Ausdruck}])
Metapher des Sendens von Nachrichten
Zugriff auf Methoden: Beispiel
r1.drucken() Der Preis beträgt: 116
r2.drucken() Der Preis beträgt: 232
Zusammenfassung, Kernpunkte
Objektorientierte Modellierung auf Entwurfsebene umgesetzt in Implementierungsebene am Beispiel von Java
Klassen, Attribute, Methoden, Instanzen, new, Initialisierungsprozeduren
Was kommt beim nächsten Mal?
Fortsetzung der Umsetzung von UML durch Java