assoziationen (beziehungen) 1 : n
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 PresentationTRANSCRIPT
![Page 1: Assoziationen (Beziehungen) 1 : n](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/1.jpg)
Assoziationen (Beziehungen)
1 : n
![Page 2: Assoziationen (Beziehungen) 1 : n](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/2.jpg)
Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
![Page 3: Assoziationen (Beziehungen) 1 : n](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/3.jpg)
In UML wird dies wie folgt dargestellt
![Page 4: Assoziationen (Beziehungen) 1 : n](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/5.jpg)
Wie kann dies in Java umgesetzt werden?
![Page 6: Assoziationen (Beziehungen) 1 : n](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/6.jpg)
Bemerkung:Zwecks übersichtlicher Darstellung werden nicht benutzte get- und set- Methoden weggelassen.
![Page 7: Assoziationen (Beziehungen) 1 : n](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022062408/56814073550346895dabf249/html5/thumbnails/22.jpg)
Damit wurde nun eine Möglichkeit der Verlinkung gezeigt.Lösen Sie bitte die entsprechenden Übungsaufgaben dazu.