assoziationen (beziehungen) 1 : n

22
Assoziationen (Beziehungen) 1 : n

Upload: tamera

Post on 09-Jan-2016

39 views

Category:

Documents


2 download

DESCRIPTION

Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto. In UML wird dies wie folgt dargestellt. Beziehungspfeil; Navigation unidirektional; also nur in eine Richtung: vom Auto zum Fahrer. 1. 2. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Assoziationen (Beziehungen) 1 : n

Assoziationen (Beziehungen)

1 : n

Page 2: Assoziationen (Beziehungen) 1 : n

Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.

Page 3: Assoziationen (Beziehungen) 1 : n

In UML wird dies wie folgt dargestellt

Page 4: Assoziationen (Beziehungen) 1 : n

Auto Fahrer 1 2

Beziehungspfeil;Navigation unidirektional; also nur in eine Richtung:vom Auto zum Fahrer

Kardinalitäten (zu einem Auto gibt es 2 Fahrer und zu diesen 2 Fahrern gibt es genau dieses eine Auto)

Page 5: Assoziationen (Beziehungen) 1 : n

Wie kann dies in Java umgesetzt werden?

Page 6: Assoziationen (Beziehungen) 1 : n

Bemerkung:Zwecks übersichtlicher Darstellung werden nicht benutzte get- und set- Methoden weggelassen.

Page 7: Assoziationen (Beziehungen) 1 : n

class Auto{ public String kfzZ; public Fahrer[] seineFahrer; public void setKfzZeichen( String pKfzZ){ kfzZ = pKfzZ; }}

Mit diesem Attribut kommt man vom Auto zu seinen

Fahrern

Kfz-Zeichen

Die Fahrer des Autos

Page 8: Assoziationen (Beziehungen) 1 : n

class Fahrer{ public String name;

public void setName( String pName){ name = pName; }}

Da man vom Fahrer nicht zum Auto kommen muss, braucht man auch kein Attribut, mit dem man zum Auto des Fahrers kommt.

Name des Fahrers

Page 9: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie erstellt man ein Array der Länge 2?

Page 10: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie erstellt man das 1. Element des Arrays?

dieFahrer[0]=new Fahrer();

Page 11: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie erstellt man das 2.Element des Arrays?

dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();

Page 12: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie gibt man dem 1. Fahrer den Namen Maier

dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");

Page 13: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie gibt man dem 2. Fahrer den Namen Müller

dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");dieFahrer[1].setName("Müller");

Page 14: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie erstellt man ein Auto?

dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");dieFahrer[1].setName("Müller");Auto myCar = new Auto();

Page 15: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie gibt man dem Auto das Kfz-Kenzeichen B-KI 11?

dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");dieFahrer[1].setName("Müller");Auto myCar = new Auto();myCar.setKfzZeichen("B-KI 11");

Page 16: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];

Wie verlinkt man das Auto mit den Fahrern?

dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");dieFahrer[1].setName("Müller");Auto myCar = new Auto();myCar.setKfzZeichen("B-KI 11");myCar.seineFahrer = dieFahrer;

Page 17: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");dieFahrer[1].setName("Müller");Auto myCar = new Auto();myCar.setKfzZeichen("B-KI 11");myCar.seineFahrer = dieFahrer;System.out.println("1. Fahrer = " +myCar.seineFahrer[0].name);

Wie gibt man (vom Auto ausgehend) den Namen des 1. Fahrers auf dem Bildschirm aus?

Page 18: Assoziationen (Beziehungen) 1 : n

public class MainAssoziationUNI_1zuN_1 { public static void main(String[] args){

Fahrer[] dieFahrer = new Fahrer[2];dieFahrer[0]=new Fahrer();dieFahrer[1]=new Fahrer();dieFahrer[0].setName("Maier");dieFahrer[1].setName("Müller");Auto myCar = new Auto();myCar.setKfzZeichen("B-KI 11");myCar.seineFahrer = dieFahrer;System.out.println("1. Fahrer = " +myCar.seineFahrer[0].name);

Wie gibt man (vom Auto ausgehend) den Namen des 2. Fahrers auf dem Bildschirm aus?

System.out.println("2. Fahrer = " +myCar.seineFahrer[1].name);

Page 19: Assoziationen (Beziehungen) 1 : n

BidirektionalitätWarum braucht man eine Navigation in zwei Richtungen ? Es reicht doch, wenn man von einem Ausgangspunkt überall hin kommt.

Page 20: Assoziationen (Beziehungen) 1 : n

Beispiel:Wenn man wissen will, welche Autos zu einem bestimmten Fahrer F gehören, dann müsste man alle Autos durchgehen und prüfen, ob dazu der Fahrer F gehört.Das kann zu einem schlechten Laufzeitverhalten führen,Deswegen benutzt man die Bidirektionalität.

Page 21: Assoziationen (Beziehungen) 1 : n

Diese Bidirektionalität hat aber auch Kosten:Das ist der Aufwand, um die Daten konsistent (widerspruchsfrei) zu halten. Bei Änderungen (z.B. wechselt ein Fahrer sein Auto) müssen 2 Objekte geändert werden, um sicherzustellen dass die Daten konsistent sind.Unidirektionale Assoziationen sind dagegen viel einfacher zu warten.

Page 22: Assoziationen (Beziehungen) 1 : n

Damit wurde nun eine Möglichkeit der Verlinkung gezeigt.Lösen Sie bitte die entsprechenden Übungsaufgaben dazu.