assoziationen (beziehungen) 1 : n

Post on 09-Jan-2016

39 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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

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

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)

Wie kann dies in Java umgesetzt werden?

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

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

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

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?

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

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

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

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

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

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

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;

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?

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

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

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.

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.

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

top related