UML Klassendiagramm

Schnitzelsemmel

Cadet 4th Year
Registriert
Sep. 2023
Beiträge
87
Hallo, kennt sich hier jemand etwas mit UML aus? Wie würdet ihr das System zur Verwaltung von Zugverbindungen gestalten? Es gibt Züge, es gibt Bahnhöfe und es gibt Zugverbindungen. Die Zugverbindung wird von genau einem Zug bedient, und verbindet mindestens zwei Bahnhöfe miteinander. Die Reihenfolge der Bahnhöfe ist wichtig.

Eine Klasse Zug, eine Klasse Bahnhof und von der Beziehung zwischen Bahnhof und Zug eine Assoziationsklasse weggehend? Weil ohne einen Bahnhof macht eine Zugverbindung genauso wenig Sinn wie ohne Zug. Also müsste Zugverbindung doch eine Assoziationsklasse sein oder?

Edit zum vorher gelöschten Ursprungspost:

Das ist keine Hausaufgabe. Sowas gibt es an der Uni nicht. Da gehts um didaktische Bildung, ich möchte ein Beispiel nachvollziehen können und keine Hausaufgaben vorgerechnet bekommen.
 
Meine Meinung:
UML wird überschätzt :p

Und du sagst es doch selbst:
Schnitzelsemmel schrieb:
Es gibt Züge, es gibt Bahnhöfe und es gibt Zugverbindungen.
Also drei Klassen. Und da Zugverbindungen die Beziehung zwischen Zug und Bahnhöfen herstellt, ist es eine assoziative Klasse, auch wenn ich diesen Ausdruck noch nie benutzt habe und solche Betrachtung auf Datenbank-Sicht wichtiger ist.
 
  • Gefällt mir
Reaktionen: Schnitzelsemmel
Hi,
  1. Klasse Zug als Idee:
    • Diese Klasse repräsentiert Züge. Sie könnte Eigenschaften wie "Zugnummer", "Fahrplan" und "Kapazität" haben. Dürfte machbar sein.
  2. Klasse sind die Bahnhöfe:
    • Diese Klasse repräsentiert Bahnhöfe. Hier könnten Eigenschaften wie Name und Ort, Gleise etc. sein.
  3. Klasse Zugverbindung:
    • Zugverbindung zwischen zwei oder mehr Bahnhöfen
    • "Startbahnhof" und "Zielbahnhof"
  • Klasse Zug: Zugnummer="Z123"
  • Klasse Bahnhof: Bahnhofsname="Bahnhof A" und Bahnhofsname="Bahnhof B"
  • Klasse Zugverbindung: Startbahnhof="Bahnhof A", Zielbahnhof="Bahnhof B", Assoziation zu Zug="Z1234567"
Sowas in der Art?
 
  • Gefällt mir
Reaktionen: Schnitzelsemmel und Dimensionday
Im Grunde ist es kaum was anderes als das UML hier...
https://de.wikipedia.org/wiki/Assoziationsklasse

Inwiefern die Reihenfolge der Bahnhöfe im UML mit repräsentiert werden kann, weiß ich nicht. Auf Typ-Ebene kann man das durch den entsprechenden Typ machen (z.B. List).

Wenn die Verbindung jeweils Start und Ende enthalten, ist es auch möglich, die Zugverbindungen auf diese Weise erneut zu sortieren.

Wenn allerdings mit Zugverbindung die gesamte Strecke von München nach Berlin gemeint ist, dann muss die Zugverbindung alle Bahnhöfe sortiert enthalten. Da dort aber auch weitere Meta-Informationen nötig sind, würde ich wohl eine Klasse nehmen, die den Zielbahnhof und die Meta-Informationen (wie die Dauer usw) enthält. Und vermutlich auch den Start. Aber Zugverbindung würde ich das wohl nicht nennen, eher Streckenabschnitt oder so.

Da es durchaus Sinn ergibt, alle Streckenabschnitte von München nach Berlin zusammenzufassen zu einer "Zugverbindung", würde ich wohl schon auf mindestens vier Klassen kommen. Und eigentlich muss die Zugverbindung dann die Bahnhöfe gar nicht direkt kennen. Man kann allerdings Start- und Zielbahnhof dort reinmodellieren, auch wenn es eigentlich redundant ist.

Ergänzung ()

duAffentier schrieb:
Klasse Zugverbindung:
  • Zugverbindung zwischen zwei oder mehr Bahnhöfen
  • "Startbahnhof" und "Zielbahnhof"
Bei dir offensichtlich eine Verbindung mit genau zwei Bahnhöfen?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Schnitzelsemmel
Ich denke ich werd UML auch niemals mehr brauchen, für die Prüfung aber schon, deswegen kämpfe ich mich gerade durch, und das ist eben ein Beispiel 😅 ChatGPT hab ich auch schon befragt, als textbasierte KI tut die sich allerdings schwer, Diagramme auszugeben.

Die 3 Klassen sind mir soweit klar, ich frage mich nur wie die Assoziationen dazu aussehen. Es gibt ja normale Assoziationen (unidirektional, bidirektional), die einfach beschreiben, dass die eine Klasse die andere kennt. Dann gibts noch Aggregationen (Ganzes und ein Teil von) und Kompositionen, als strengere Form der Aggregation (wenn das Ganze weg ist, existiert auch der Teil vom Ganzen nichtmehr).

Aber wie modelliert man beispielsweise, dass eine Zugverbindung aus mindestens zwei Bahnhöfen besteht und die Reihenfolge der Bahnhöfe wichtig ist. Ersteres ja einfach mit der Multiplizität [2...*]. Aber wie macht man das mit der Reihenfolge? Irgendeine Einschränkung neben die Assoziationslinie schreiben im Sinne von {Reihenfolge wichtig} ?
 
  • Gefällt mir
Reaktionen: tollertyp
Reihenfolge: https://www.uml-diagrams.org/multiplicity.html
Dort mal nach "ordered" suchen.
Wird wohl mit "{ordered}" angegeben. Aber habe ich noch nie gesehen :-)

Und in welche Richtungen du die Assoziationen machen willst, kannst du dir ja selbst überlegen:
Also eine Zugverbindung sollte die Bahnhöfe kennen. Aber ist es wichtig, dass jeder Bahnhof weiß, wessen Startbahnhof/Zielbahnhof/Durchgangsbahnhof er ist? Hier gibt es kaum ein "richtig" oder "falsch", es ist Geschmackssache. Zumindest geht es aus meiner SIcht nicht aus der Frage hervor.

Der Zug sollte seine Verbindungen kennen, und die Verbindungen wohl auch den Zug.
 
Schnitzelsemmel schrieb:
Das ist keine Hausaufgabe. Sowas gibt es an der Uni nicht. Da gehts um didaktische Bildung, ich möchte ein Beispiel nachvollziehen können und keine Hausaufgaben vorgerechnet bekommen.

Ich möchte mich auch hierzu mal offtopic äußern, weil es mir auch ein persönliches Anliegen ist und ich selbst Erfahrungen damit hatte.
Bei meinen letzten Fragen wurde ich auch immer mit dem Generalverdacht konfrontiert, dass ich mir hier Lösungen für Hausaufgaben erschleichen wollen würde.
Ich mag diese Generalunterstellungen wirklich überhaupt nicht, weil sie nicht nur nicht der Wahrheit entspricht, sondern das Forum hier keinen "Lehr- oder Bildungsauftrag" hat.
Und überhaupt muss die Sinnhaftigkeit angezweifelt werden, ob sich beim Programmieren nur dann ein Verständnis einstellst, wenn die Lösung selbsterdacht wurde. Denn gerade in diesem Zweig wird sehr viel mit Copy-pasta gerarbeitet und viel Verständnis aus bereits vorhandenen Lösung durch reines lesen generiert.

Daher meine herzliche Bitte an die sonst sehr hilfreiche und eifrige Community, dass man wenigstens diesen Generalverdacht endlich sein lassen könnte und einfach direkt zur Fragestellung übergeht. Es ist wirklich nicht schön, dies jedesmal aufs neue aus der Welt schaffen zu müssen oder sich zu rechtfertigen, warum man fragt.
 
  • Gefällt mir
Reaktionen: Schnitzelsemmel und tollertyp
Meiner Meinung nach: So lange ja keine explizite Lösung erfragt wird, sondern eine Diskussion stattfindet, und das auch auf Basis eigener Ideen (also des TEs) halte ich das Abwürgen solcher Threads auch für übertrieben. Und ich bin selbst jemand, der allergisch auf Faulheit und die "Macht-Mal"-Haltung reagiert und Hilfe bei solchen offensichtlichen Hausaufgaben-Threads energisch ablehnt.
Ergänzung ()

Schnitzelsemmel schrieb:
Irgendeine Einschränkung neben die Assoziationslinie schreiben im Sinne von {Reihenfolge wichtig} ?
Ach ja, genau, nur halt "{ordered}"
 
  • Gefällt mir
Reaktionen: Schnitzelsemmel
Anscheinend kann man sowas kompliziert klingendes, wie dass die Reihenfolge der Bahnhöfe bei einer Zugverbindung wichtig ist einfach damit abbilden, dass man bei der Assoziation zwischen Zugverbindung und Bahnhof die Einschränkung {Reihenfolge ist wichtig} angibt.

Wie das dann konkret umgesetzt werden soll wird ja dann ohnehin erst für den Entwickler bei der Implementierung interessant
 
Es ist halt auch nru ein Klassendiagramm. Ich wüsste nicht mal, ob ich in einem Klassendiagramm solche Informationen angeben würde.

Bei "einfachen" Dingen wie dem Beispiel mit den Zügen, bei einer Bibliothek mit verliehenen Büchern, bei Lehrveranstaltungen/Teilnehmern/Prüfungen usw, da mag vieles aus dem Kontext erschließbar sein. Und dann ist aus dem Kontext mitunter auch klar, dass Dinge eben geordnet sein müssen, manche Sachen einmalig sind, dass es auch keinen Sinn ergeben würde, wenn man die Zugverbindung als mehrere Teilstrecken modelliert, dass Teilstecke 3 bei Bahnhof Nürnberg endet, Teilstecke 4 dann in Augsburg beginnt.
 
Zurück
Oben