2016-06-03 21 views
0

Ich bin neu in objektorientierten Entwurfsmustern. Ich habe eine Grundidee des Domain-Modells. Ich stehe jedoch bei dem folgenden Problem fest. Das Problem ist, dass ich ein System habe, das Ereignisse und Kunden enthält (beide 1 .... *). Darüber hinaus enthalten die Ereignisse Pakete. Der Benutzer darf Veranstaltungen buchen. Er muss dies jedoch tun, indem er ein Paket bucht, das in einer Veranstaltung enthalten ist. Was sollte das richtige Domänenmodell der gegebenen Situation sein? Ich habe viel über ähnliche Fragen geforscht, konnte aber keine passende Antwort finden.Was ist das korrekte Domänenmodell?

Meine Vermutungen: 1)

In diesem Bild können die Kunden Veranstaltungen buchen, aber ich bin nicht sicher, weil Kunden innerhalb Veranstaltungen buchen enthaltenen Pakete. Sollte ich dieses Domänenmodell für das gegebene System auswählen? Es ist intuitiv, weil es Kunden ermöglicht, Ereignisse zu buchen.

2) enter image description here

In diesem Bild bedeutet das Domänenmodell der Struktur des Systems. Kunden sollten die Pakete jedoch nur über Ereignisse erreichen. Daher bin ich mir bei diesem Domänenmodell nicht sicher. Wie kann ein Kunde ein Paket buchen, wenn es in einer Veranstaltung enthalten ist?

Bitte geben Sie an, welches Domänenmodell korrekt ist. Ich bin ein Anfänger, also bitte geben Sie eine gute Erklärung. Danke, dass du mir geholfen hast!

+0

Bitte geben Sie eine Antwort auf diese Frage. Ich kann nicht ohne eine Antwort auf diese Frage fortfahren. Vielen Dank! –

+0

Ein paar Bemerkungen über Ihr Modell 1. Nicht Verband Namen in Rechteck setzen, da es nicht UML-Spezifikation konform ist und verwirrend 2. Klassennamen in Singularform sein sollte, anstatt mehrere Beachten Sie auch, dass dies eine ist Community-Run-Seite. Sie können eine Antwort in 5 Minuten oder in 5 Wochen erhalten und es ist immer noch großartig, hier eine Antwort zu erhalten. Bitte vermeiden Sie, aufdringlich zu sein. – Ister

Antwort

2

Vor allem - es gibt keine endgültige Antwort. Normalerweise können Sie auf verschiedene Arten erstellen und gute Ergebnisse erzielen.

Zweitens - beide enthalten Beziehungen sollten Aggregationen meiner Meinung nach sein. Ereignisse zu System ist (wahrscheinlich) eine zusammengesetzte Aggregation, während Paket zu Ereignis entweder zusammengesetzt sein kann (wenn ein bestimmtes Paket nur für ein Ereignis spezifisch ist) oder geteilt (wenn dasselbe Paket über verschiedene Ereignisse verfügbar ist).

Nun zur Hauptfrage. Wenn die Beziehung zwischen Ereignis und Paket eine Zusammensetzung (zusammengesetzte Aggregation) ist, können Sie die Buchbeziehung als eine Verknüpfung zwischen Kunde und Paket modellieren. Dann ist das Event eindeutig erkennbar. Sie können auch Ihr Modell erweitern, indem Sie eine Beziehung zu dem Ereignis hinzufügen, das abgeleitet ist (aus Buch). Hier

ist ein Beispiel (beachten Sie das/Zeichen zeigt dies ist eine abgeleitete Vereinigung): derived association

Andere Option, die sowohl für Composite und gemeinsame Aggregation zwischen Ereignisse und Paket ist zu modellieren Buch Beziehung zwischen dem Kunden gültig ist, und Event aber modelliere es als eine Assoziationsklasse. Dann haben Sie eine Klasse (Buch), die die Assoziation beschreibt, und diese Klasse kann eine Beziehung zu Package gewählt haben. In diesem Fall Ihr Modell wird wie folgt aussehen: association class

Ich wette, dass Sie auch Ihr Problem finden können auch andere Methoden der Modellierung, die noch gültig sind und zeigen alle Informationen, die Sie bisher zur Verfügung gestellt.

+0

Sie könnten das Diagramm verbessern, indem Sie eine Leserichtung für die Verbinderbeschriftungen hinzufügen. Klicken Sie in EA mit der rechten Maustaste auf den Namen (z. B. "Gehe zu"), und wählen Sie Richtung/An (ggf.). –

+0

@ThomasKilian Ich weiß das, aber ich habe das nicht absichtlich getan. Die Wahrheit ist, dass ich die genaue Navigationsfähigkeit der Beziehungen im Diagramm nicht kenne. Übrigens kann ich Dinge wie abgeleitete Assoziation einstellen. Glauben Sie mir, ich kann auch die Navigationsfähigkeit in EA modellieren ;-) Aber wenn Sie eine Idee haben, wie kann ich die gestrichelte Linie, die von der Assoziation zur Assoziationsklasse führt, besser positionieren ;-) – Ister

+0

Die gestrichelte Linie verbindet sich mit dem nächsten Segment der verbundenen Assoziation. Sie können es nicht manipulieren. Du sagst mir nicht, dass es "Kunde geht zum Event" und nicht umgekehrt? –