2016-05-02 6 views
1

Objekt B enthält eine Reihe öffentlicher Ereignisse.Welche UML-Beziehung, wenn ein Objekt Ereignisse auf einem anderen Objekt abonniert?

Objekt A abonniert diese Ereignisse.

Was ist die UML-Beziehung zwischen diesen?

Derzeit habe ich eine gerichtete Zuordnung von Objekt A zu Objekt B. Ist das richtig? Oder sollte die Richtung in die andere Richtung gehen?

+0

Willkommen bei StackOverflow, @ rygo6. Wenn Sie eine Antwort auf Ihre Frage gefunden , beachten Sie bitte [Annahme it] (http://meta.stackexchange.com/q/5234/179419) (von den Häkchen klicken), und betrachtet up-Abstimmung es (durch Klicken auf den Pfeil nach oben). Das Akzeptieren einer Antwort zeigt der breiteren Community an, dass Sie eine Lösung gefunden haben, gibt sich einige Reputationspunkte und gibt der Person, die Ihre Frage beantwortete, einige Reputationspunkte. Wenn Sie keine zufriedenstellende Antwort auf Ihre Frage gefunden haben, geben Sie bitte einen Kommentar ein. –

Antwort

0

Sowohl A als auch B enthalten wahrscheinlich Referenzen zueinander. A möchte sich abmelden, und B muss sicherlich A über Ereignisse benachrichtigen können. Daher würde ich es als eine bidirektionale Beziehung modellieren. Vielleicht möchten Sie sogar, dass B alle abonnierenden Instanzen verfasst. Schauen Sie sich die bekannte Observer Pattern an.

0

Es hängt davon ab, was Sie ausdrücken möchten.

Logischerweise muss der Abonnent A den Herausgeber B kennen und umgekehrt, also haben Sie eine bidirektionale Beziehung.

Technisch gesehen werden die Abonnements oft nicht vom Verleger B verwaltet, sondern von einem Dispatcher D. Der Abonnent A kennt den Dispatcher D und umgekehrt. Aber der Verlag B kennt kein A und, abhängig von der Plattform, die den Übertragungsmechanismus anbietet, vielleicht nicht einmal den Dispatcher D. Wenn Sie also eine bestimmte Plattform im Hinterkopf haben, finden Sie heraus, welche Arten von Objekten Instanzvariablen benötigen, um andere zu referenzieren Objekte, und modelliere die Beziehungen danach.

0

Es sollte eine Abhängigkeitsbeziehung von A nach B bestehen (ein gestrichelter Pfeil, der von A nach B zeigt). Kapitel 7.8.4.1 der UML-Spezifikationsversion 2.5 lautet:

Eine Beziehung ist eine Beziehung, die angibt, dass ein einzelnes Modellelement oder eine Gruppe von Modellelementen andere Modellelemente für ihre Spezifikation oder Implementierung benötigt.

In Ihrem Fall A erfordert B zu existieren, aber B erfordert nicht A zu existieren. Vielleicht benötigt B A, um eine bestimmte Schnittstelle zu implementieren. In diesem Fall hängt B von der Schnittstelle ab, aber nicht von A selbst.

Sie schlagen vor, eine Assoziation von A nach B zu haben. Eine Assoziation ist stärker als eine Abhängigkeit. Das bedeutet, dass A eine Eigenschaft vom Typ B hat (die Definition ist etwas komplexer, siehe Kapitel 11.5.3.1 der UML-Spezifikation). Dies bedeutet, dass A auf B abhängt, wie eine Abhängigkeit, sondern eine Abhängigkeit eine Eigenschaft vom Typ B.

Zusammengefasst hat keine A erforderlich:

  • Der Pfeil von A nach B zeigen soll, nicht von B nach A (es sei denn, Ihre spezielle Implementierung von B hängt von der Existenz einer Klasse namens A ab, was unwahrscheinlich ist).
  • Eine Abhängigkeit ist genug, aber wenn A eine Eigenschaft vom Typ B haben soll, dann können Sie eine Verknüpfung (durchgezogene Linie) anstelle einer Abhängigkeit (gestrichelte Linie) zeichnen.