bidirektionale und unidirektionale Assoziationen UML

8

Obwohl ich glaube, dass ich aggregation und composition verstehe, habe ich Schwierigkeiten, bi-directional und uni-directional association zu verstehen. Ich habe gelesen, dass mit bi-directional association beide Klassen wissen einander und mit uni-directional association ist nur einer der Klassen bekannt der Beziehung. Diese Erklärung scheint mir jedoch zu abstrakt zu sein Ich möchte wissen, was das für meinen Code und für das Programm, das ich schreibe, bedeutet. Es wäre sehr nett, wenn Sie, zusammen mit der Erklärung, ein einfaches Beispiel geben könnten wie diese beiden in Code übersetzen (ich bevorzuge C ++, aber es kann alles einschließlich Pseudocode sein)

    
jcxz 18.03.2013, 21:34
quelle

2 Antworten

21

Bidirektionale Assoziationen sind von beiden Seiten aus navigierbar. Zum Beispiel, angesichts der folgenden Klassen (der Einfachheit halber angenommen, dass die Assoziation an beiden Enden 0..1 ist)

%Vor%

Sie können von einem Parent zu seinem Kind wechseln und umgekehrt: Der Elternteil weiß um seinen Sohn, das Kind weiß um seinen Elternteil und (falls this.parent!=null ) this.parent.child==this (anders wäre es nicht) die gleiche Verbindung).

%Vor%

Wenn jedoch kein Zeiger auf Parent in Child :

vorhanden war %Vor%

es wäre eine unidirektionale Assoziation: Sie können von einem Elternteil zum anderen wechseln, aber Sie können nicht von einem Kind zum Elternteil zurückkehren.

%Vor%     
Javier 18.03.2013, 22:10
quelle
1

Leider definiert die UML-Spezifikation kein Konzept der "bidirektionalen Assoziation", sondern erwähnt nur "bidirektionale Navigation", wo "navigability" (angezeigt durch einen Pfeil in einem Klassendiagramm) nicht vorhanden ist eine gut definierte Berechnungsbedeutung, wie sie z. B. durch Referenzeigenschaften oder durch Abfragen bereitgestellt werden kann. Die effizienteste Form der "Navigationsfähigkeit", die durch Referenzeigenschaften bereitgestellt wird, wird mit dem UML-Konzept von Assoziationsendbesitz modelliert (angezeigt durch einen Punkt in einem Klassendiagramm) / p>

Bidirektionale Zuordnungen können genau als ein Paar von gegenseitig umgekehrten Referenzeigenschaften definiert werden . Diese Definition beinhaltet zwei Bedingungen:

  1. für this referenziert ein Kind, this.parent.child == this , wie in der etwas unvollständigen Antwort von Javier erklärt, aber dazu auch

  2. für this , das auf ein übergeordnetes Element verweist, this.child.parent == this .

Sie können mehr darüber lesen und finden viele Klassendiagramme, die Beispiele für bidirektionale Assoziationen in den Lernprogrammen beschreiben. Verwalten bidirektionaler Zuordnungen in Java EE und Verwalten bidirektionaler Zuordnungen in JavaScript .

    
Gerd Wagner 06.09.2017 13:24
quelle

Tags und Links