• Keine Ergebnisse gefunden

Objektorientierte Modellierung auf Implementierungsebene am Beispiel Java

N/A
N/A
Protected

Academic year: 2022

Aktie "Objektorientierte Modellierung auf Implementierungsebene am Beispiel Java"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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

(2)

Wiederholung UML

 Klassen und Instanzen

 Attribute

 Operationen

 Klassenbeziehungen

 Generalisierung, Spezialisierung

 Auf Klassenebene beschriebene Instanzenbeziehungen

 Relationen: Assoziationen, Komposition, Aggregation,

(3)

Sichtbarkeit, Namensraumverwaltung

 In UML Moduln in Java Packages genannt

 Import-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

(4)

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;

(5)

Basis-Datentypen: sog. Werte in Java

 Beschreibung immutabler einfacher Objekte

 Beschreibung 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 (==, ...)

(6)

Klassen und Typen

 Jede Klasse definiert auch einen Typ

(mit gleichem Namen)

 public class Rechnung { int preis;

public void drucken () { ...

} public void stornieren() { ...

}}

(7)

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

(8)

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 Programmiersprache

mit 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

(9)

Java-Anweisungen im Methodenrumpf

 Zuweisungen: i = 42;

 Fallunterscheidungen:

 if (i == 42) { ...

} else { ...

}

 Schleife:

 while (i < 42) { ... }

(10)

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

(11)

Objekterzeugung

 Syntax: new Klassenname

 Beispiel

 Rechnung r1 = new Rechnung;

(12)

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

(13)

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

(14)

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

} ...

 }

(15)

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;

(16)

Operationsaufruf

 Statisch

 Angabe der Klasse und des Methodennamens

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

 Objektspezifisch

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

 Metapher des Sendens von Nachrichten

(17)

Zugriff auf Methoden: Beispiel

 r1.drucken()

 Der Preis beträgt: 116

 r2.drucken()

 Der Preis beträgt: 232

(18)

Zusammenfassung, Kernpunkte

 Objektorientierte Modellierung auf Entwurfsebene umgesetzt in

Implementierungsebene am Beispiel von Java

 Klassen, Attribute, Methoden, Instanzen, new,

Initialisierungsprozeduren

(19)

Was kommt beim nächsten Mal?

 Fortsetzung der Umsetzung von UML durch

Java

Referenzen

ÄHNLICHE DOKUMENTE

Um eine abweichende Kopf- oder Fußzeile für einen Dokumentteil zu erstellen, muss das Dokument zunächst in Abschnitte unterteilt werden. - Klicken Sie auf den Abschnitt, für

Solange wir diese aber nicht haben, ist ein Test wie der Ipazym-Test eine gute Ergänzung unserer diagnostischen Möglichkei- ten, um Patienten mit Beschwerden und Verdacht auf

 Viele wichtige Verwaltungstätigkeiten einer Universität werden über die Studienabteilung abgewickelt. Studenten können hier immatrikulieren und inskribieren, sowie sich aber

 Festlegung der Attribute und Operatoren nicht für genau ein Objekt, sondern für eine Menge von Objekten gleicher Art.  Eine solche Menge von Objekten gleicher Art heißt

 Umsetzung durch Einführung einer neuen Klasse mit entsprechenden Attributen, um auf die. anderen an der Relation beteiligten Instanzen zu

Ein Problem ist algorithmisch lösbar, wenn ein Algorithmus existiert der für beliebige Eingaben die korrekte Ausgabe in endlicher Zeit liefert, vorausgesetzt man gibt dem Algorithmus

Alle  A&#34;ribute  erhalten  einen  Zugriffsmodifikator  und  einen

• ModeratorIn: sorgt für die Einhaltung der Zeit, für die Fokussierung auf das Anliegen des/der FallbringerIn, mobilisiert die BeraterInnen, achtet auf Relevanz. Es sollte