2017-02-07 2 views
1

Kann jemand ein Codebeispiel einer Assoziations-UML-Beziehung (Einwegpfeil ->) geben, das weder eine Aggregation noch eine Zusammensetzung ist?UML-Assoziation, die keine Aggregation oder Zusammensetzung ist?

Ich verstehe, dass Aggregation und Zusammensetzung sind Arten von Assoziationen, aber ich kann nicht denken, eine Assoziationsbeziehung, die keine Aggregation oder eine Zusammensetzung ist.

Kann der folgende Code nur eine Assoziationsbeziehung von A-> B sein, aber nicht Aggregation oder Zusammensetzung unter bestimmten Bedingungen?

import B; 
public class A { 
    private B b; 
} 

Antwort

1

Laut Robert Martin:

Eine Vereinigung die Fähigkeit einer Instanz stellt eine Nachricht an eine andere Instanz zu senden. Dies wird normalerweise mit einer Pointer- oder Referenzinstanzvariablen implementiert, obwohl es möglicherweise auch als Methodenargument oder die Erstellung einer lokalen Variablen implementiert ist.

der Code:

public class A { 
    private B b; 
} 

kann entweder Assoziation, Aggregation oder Zusammensetzung darstellen. Es stellt eine bloße Assoziation dar, solange A keine "HAS-A" -Beziehung mit B hat. Zum Beispiel könnte das Folgende eine Assoziation sein, aber keine Aggregations- oder Zusammensetzungsbeziehung.

public class Vehicle { 
    private Person owner; 
} 
+0

Der Besitz eines Fahrzeugs impliziert eine Aggregation, weshalb ich "Laufwerke" in meiner prägnanten Antwort verwendet habe. –

1

Sicher, nur durch Ändern, was Ihre Symbole repräsentieren, eine Person (A) Laufwerke (b) ein Auto (B), ohne sie zu komponieren oder aggregieren.

-2

Hier ist, was die UML 2.5 Spezifikation sagt über die Aggregation (S. 110).:

  • keine: Zeigt an, dass die Unterkunft über keine Aggregation Semantik hat.
  • freigegeben: Gibt an, dass die Eigenschaft Aggregations-Semantik freigegeben hat. Die genaue Semantik der gemeinsamen Aggregation variiert je nach Anwendungsbereich und Modellierer.
  • Composite: Zeigt an, dass die Eigenschaft zusammengefügt ist, d. H. Das zusammengesetzte Objekt hat die Verantwortung für das Vorhandensein und die Speicherung der zusammengesetzten Objekte (siehe die Definition der Teile in 11.2.3).

Wie Sie sehen können, ist die semantische Ebene sehr niedrig. Für shared ist es sogar fast nichts. Eine Komposition aus meinem POV ist nur zum Ausdrücken von Speichermanagement/Fremdschlüsseleinschränkungen nützlich. Also sollte man grundsätzlich mit einfachen Assoziationen gehen.

+0

Ich nehme an, dass das, was die Spezifikationen sagt, nicht sehr geschätzt xD ist –

Verwandte Themen