2016-06-07 16 views
1

Ich habe ein Tutorial über UML-Klassendiagramme gelesen und habe Probleme beim Verständnis von Assoziationsklassen und warum diese MileageCredit Klasse nicht Teil der FrequentFlyer Klasse im folgenden Beispiel ist (aus Abbildung 11 des Tutorials here):Wie erkennt man die geeignete Implementierung von UML-Assoziationsklassen?

enter image description here

Unter der Annahme, dass es eine eins-zu-eins-Beziehung zwischen FrequentFlyer und MileageCredit (wenn eine Person zwei FrequentFlyer Mitgliedschaften gehabt haben sie noch andere frequentFlyerNumber Zahlen haben), dann würde ich gerade auf diese baseMiles und bonusMiles Immobilien die FrequentFlyer Klasse selbst.

Könnte jemand bitte erklären, warum das falsch ist?

+0

Dies hat nichts mit dem Anwendungsfall zu tun. Bitte modifiziere dein Thema entsprechend. – Ister

+0

Danke - hoffe Titel ist jetzt klar – Bendy

+0

Ja, jetzt ist es viel klarer. – Ister

Antwort

2

MileageCredit ist eine AssociationClass, was bedeutet, dass dies gleichzeitig eine Assoziation (Verknüpfung) Flight und FrequentFlyer) und eine Klasse, die diese Assoziation beschreibt. Diese Tatsache wird durch eine gestrichelte Linie dargestellt, die die Klasse und die Assoziation verbindet. Beachten Sie, dass gemäß der UML-Spezifikation diese Klasse und Assoziation zusammen eine Entität erstellen.

In Ihrem Beispiel gibt es Association (das heißt MileageCredit) zwischen FrequentFlyer und einem Flug. Sie können davon ausgehen, dass dies einen von einem FrequentFlyer durchgeführten Flug zeigt. Für diese Vereinigung benötigen Sie zusätzliche Informationen (Anzahl der Prämien- und Bonusmeilen, die dem FrequentFlyer für diesen Flug verliehen werden). Dieser Verband hat diese zusätzliche Klasse, die diese Informationen beschreibt.

Wenn Sie baseMiles und bonusMiles auf FrequentFlyer erstellt haben, die absolut keine Beziehung zum Verband hätten - es wären nur Informationen über die Gesamtpunkte, die dem FrequentFlyer zugeteilt werden.

+0

Beachten Sie auch, dass MileageCredit auf Codeebene wahrscheinlich entweder eine Klasse von FrequentFlyer mit Verbindung zu Flight oder eine separate Klasse mit Verbindungen zu Flight und FrequentFlyer wird. – Ister

+0

Danke - Ich denke, das war meine Verwirrung, es mit einem Datenbankschema zu vermischen – Bendy

+0

Man kann sich eine Assoziationsklasse vorstellen, die zwischen (normalerweise) zwei Klassen sitzt und sie mit 1-m * n-1 Beziehung verbindet (das * ist das assozi -Klasse). –