Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Größe: px
Ab Seite anzeigen:

Download "Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7"

Transkript

1 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7

2 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2

3 Das Klassendiagramm Zweck der Darstellung Logischen Aufbau des Systems Statischen Aspekte Zusammenhänge und Beziehungen zwischen den Komponenten 3

4 Klassen in UML Klassen sind die Baupläne für Objekte (Instanzen) Darstellung in UML Klassenname Beispiel einer Klasse in UML PKW oder Klassenname Attribute Methoden Farbe Leistung Geschwindigkeit... Beschleunigen() Bremsen() Lenken()... Klasse W59777: PKW Rot 50km Objekte (Instanzen) 4

5 Elemente Klassendiagramm I Klassen Klassenname Beziehungen (Paths/Associations): für die Übermittlung von Nachrichten (Messages = Aufruf von Methoden) Klasse A spricht mit Klasse B Richtung der Beziehungen (Navigability): Nachrichten können nur in diese Richtung gehen Klasse A spricht mit Klasse B 5

6 Elemente Klassendiagramm II Kardinalitäten (Multiplicity): Anzahl der möglichen Instanzen Klasse A 1 spricht mit 0..* Klasse B Aggregation (Aggregation/Composition): Besteht-aus Beziehung Auto besteht aus 1 * Einzelteile Generalisierung (Generalization): is-a Beziehung -> Vererbung in Java Einzelteil Motor Karosserie... 6

7 Elemente Klassendiagramm III Abhängigkeiten (Dependencies) Klasse A benötigt Klasse B Anmerkungen oder Einschränkung PKW ist nur fahrttüchtig mit: Räder, Karosserie,... PKW 7

8 Beispiel: Klassendiagramm PKW ist nur fahrttüchtig mit: Räder, Karosserie,... PKW 0..* verwendet 1 besteht aus 1 * Motor Einzelteil Karosserieteil... Fahrzeughalter 1 besteht aus 4 Zylinder 8

9 Umsetzung von Generalisierung Einzelteil Motor Karosserie... Vererbung abstract class Einzelteil { // muss nicht unbedingt abstract sein!... class Motor extends Einzelteil {... 9

10 Umsetzung von Komposition I PKW class Rad {... besteht aus 1 4 Rad class PKW { Rad livorad, revorad, lihirad, rehirad; //Instanznamen PKW() { /* Erzeugung der Instanzen der Räder */ livorad = new Rad(); revorad = new Rad(); lihirad = new Rad(); rehirad = new Rad(); 10

11 Umsetzung von Komposition II PKW 1 class Einzelteil {... class PKW { final int ANZAHL=100; // besteht aus 100 Teilen Einzelteil[] dieeinzelteile; /* Implementierung als Array von Instanznamen (auch als Container moeglich) */ besteht aus PKW() { dieeinzelteile = new Einzelteil[ANZAHL]; /* Array erzeugen */ for(int i=0;i<anzahl; i++) { dieeinzelteile[i] = new Einzelteil(); /* Erzeugung der Instanzen der Einzelteile */ * Einzelteil 11

12 Umsetzung einer Assoziation class PKW {... class Fahrzeughalter { PKW meinpkw; // nur Instanzname PKW... 1 void PKWkaufen(PKW einpkw) { verwendet meinpkw=einpkw; // Referenz auf die Inst. setzen 1 class Michael { Fahrzeughalter public static void main(string[] args) { PKW PKW1 = new PKW(); // PKW erzeugen Fahrzeughalter michael = new Fahrzeughalter(); michael.pwkkaufen(pkw1); // PKW an den Farzeughalter uebergeben 12

13 Umsetzung von komplexeren Assoziationen Assoziationen mit höherer (>1) Kardinalität Es muss ein Container (z.b. Array, Liste) verwendet werden. Assoziationen mit Navigierbarkeit in beide Richtungen: Jede Seite muss eine Referenz der anderen Seite haben. Achtung: Problem mit Inkonsistenz! 13

14 Übung Implementieren Sie das gesamte Klassendiagramm. Überlegen Sie sich sinnvolle Attribute und Methoden sowie Einzelteile (mindestens 4). PKW 0..* verwendet 1 besteht aus 1 * Motor Einzelteil Karosserie... Fahrzeughalter 1 besteht aus 4 Zylinder 14

15 Nach dieser Einheit sollten Sie wissen,... wie Beziehungen in UML-Klassendiagrammen dargestellt werden welche Arten von Beziehungen es gibt wie diese Beziehungen in Java umgesetzt werden können. 15