Klassen UML Klassendiagramm Modellierungsfrage

Dreamworx

Mitglied
Hallo Ihr,

ich bin grade dabei ein UML-Klassenmodell für mein Projekt zu erstellen. Dabei habe ich folgendes Problem was ich nicht wirklich lösen kann und hoffe jetzt auf eure Hilfe.


Gegeben sind zwei Klassen (z.B. Fahrer/Auto). Ich möchte modellieren, dass eine beliebige Anzahl Fahrer (Teilmenge) aus der Menge aller Fahrer einem Auto zugewiesen werden kann und muss diese Verbindungs-Information anschließend irgendwie verfügbar machen.

Da ich nicht alle Instanzen von Fahrer mit einem Auto-Objekt verbinden möchte macht somit für mich auf Klassenebene eine Assoziation keinen wirklichen Sinn?! Da ich ja im Prinzip nur eine Teilmenge von Fahrern mit diesem Auto verbinde.

Ein Attribut im Auto wie z.B. Besitzer müsste ich dann ja für jeden zugewiesenen Fahrer auch neu anlegen?! Außerdem würde das Teilmengenproblem der Modellierung weiterhin bestehen bleiben.

Vielleicht muss ich dafür auch ein anderes Diagramm wählen als das Klassendiagramm, weil das hier nicht wirklich darstellbar ist?!


Hoffe Ihr habt ein paar Anregungen für mich da ich im Moment nicht richtig weiter komme.



Grüße

Dream
 
N

nillehammer

Gast
Dreamworx hat gesagt.:
Gegeben sind zwei Klassen (z.B. Fahrer/Auto). Ich möchte modellieren, dass eine beliebige Anzahl Fahrer (Teilmenge) aus der Menge aller Fahrer einem Auto zugewiesen werden kann und muss diese Verbindungs-Information anschließend irgendwie verfügbar machen.
Auf Klassenebene modellierst Du dafür tatsächlich die Assoziation von
Code:
Auto 1 -- 0.* Fahrer
.
Das sagt genau das aus, das Du willst. Insofern würde das schon reichen.

Wenn dir das nicht reicht und Du es beispielhaft mit konkreten Instanzen darstellen willst, dann nutze das Objektdiagramm: Objektdiagramm ? Wikipedia

[EDIT]
Oder habe ich das nicht voll verstanden? Und Du meintest, ein Auto kann zwar von im Prinzip jedem Fahrer gefahren werden, aber eben immer nur von einem zur Zeit? Da wäre vielleicht eine neue Klasse Autofahrt ein Ausweg.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
P

Pippl

Gast
Ein Attribut im Auto wie z.B. Besitzer müsste ich dann ja für jeden zugewiesenen Fahrer auch neu anlegen?! Außerdem würde das Teilmengenproblem der Modellierung weiterhin bestehen bleiben.

Naja nur weil eine Auto einen neuen Fahrer hat, hat es nicht gleich einen neuen Besitzer.

Beispiel: Speditionsfirma
Der LKW (das Auto) gehört der Firma bzw. dem Chef der Firma.
Aber es gibt eine Liste von Fahrern (wie nillehammer schon richtig gesagt hat
Code:
Auto 1 -- 0.* Fahrer
) aber der Besitzer ändert sich nicht. Wenn vl grad mal der aktuelle Fahrer (in meinen Augen -> aktueller Fahrer!=Besitzer)

Aber natürlich hängt das auch davon ab, was wirklich erzielt werden will, dass müsstest du konkreter ausdrücken =)
 

Dreamworx

Mitglied
Danke für die schnellen Antworten!


Auf Klassenebene modellierst Du dafür tatsächlich die Assoziation von
Code:
Auto 1 -- 0.* Fahrer
.
Das sagt genau das aus, das Du willst. Insofern würde das schon reichen.

[EDIT]
Oder habe ich das nicht voll verstanden? Und Du meintest, ein Auto kann zwar von im Prinzip jedem Fahrer gefahren werden, aber eben immer nur von einem zur Zeit? Da wäre vielleicht eine neue Klasse Autofahrt ein Ausweg.
[/EDIT]

Ich möchte im Prinzip zwischen einer Teilmenge von Fahrern und einem Auto eine Verbindung herstellen. Das Problem ist ich muss nachher wissen, welche Fahrer genau das Auto nun fahren können (verbunden sind) und welche eben nicht.

Aus meinem Verständnis heraus beschreibt eben
Code:
Auto 1 -- 0.* Fahrer
nicht genau mein Problem.

Im Prinzip müsste ich irgendwie noch beschreiben, dass eben nicht jeder Fahrer aus der Gesamtmenge aller Fahrer eine Verbindung zu dem Auto hat, weil die Klasse Fahrer ja grundsätzlich alle speziellen Fahrer umfasst?!



Naja nur weil eine Auto einen neuen Fahrer hat, hat es nicht gleich einen neuen Besitzer.
Aber natürlich hängt das auch davon ab, was wirklich erzielt werden will, dass müsstest du konkreter ausdrücken =)

Besitzer ist etwas unglücklich gewählt - mir geht es nur darum, welche Fahrer das Auto generell fahren könnten - nicht um zeitliche Aspekte oder Einschränkungen dass nur ein Fahrer o.ä..

Mit Besitzer war gemeint, dass ich ein Attribut einführe, welches im Prinzip vom Typ Fahrer ist und mir sagt, dass das Auto zu einem bestimmten Fahrer eben eine Verbindung hat. Dieses Attribut bräuchte ich dann aber für jeden möglichen Fahrer und damit jede Verbindung.
 
Z

Zeigefinger

Gast
Auto 1 -- 0.* Fahrer

sagt doch aber genau das aus. Ein Auto kann * viele Fahrer haben. Das heißt in diesem Fall nicht, dass das alle Fahrer sind, die es gibt...

Was spricht gegen eine Liste von Fahrern als Attribut im Auto?
 
P

Pippl

Gast
Ich möchte im Prinzip zwischen einer Teilmenge von Fahrern und einem Auto eine Verbindung herstellen. Das Problem ist ich muss nachher wissen, welche Fahrer genau das Auto nun fahren können (verbunden sind) und welche eben nicht.
...
Im Prinzip müsste ich irgendwie noch beschreiben, dass eben nicht jeder Fahrer aus der Gesamtmenge aller Fahrer eine Verbindung zu dem Auto hat, weil die Klasse Fahrer ja grundsätzlich alle speziellen Fahrer umfasst?!

Einfach ein Kommentar dazu das nicht jeder Fahrer für jedes Auto qualifiziert ist, ansonsten geht das mit einem Klassendiagramm eher nicht. Da es ja nur beschreibt das ein Auto keinen oder mehrere mögliche Fahren haben kann (ob der Fahrer nun grün, blau, zu intelligent oder zu dumm dafür ist hier noch uninteressant).

Vl würde es gehen mit Interfaces (für jede Führerscheinklasse - B, C, ... - eines) und wenn ein Auto nun die Unterklassen LKW und PKW hat dann kann ein PKW nur von jenen Fahrern gefahren werden welche das Interface für die Führerscheinklasse B implementieren. So könnte man es vl im Klassendiagramm darstellen die Implementierung is dann aber wieder komplizierter

Auto 1 -- 0.* Fahrer

sagt doch aber genau das aus. Ein Auto kann * viele Fahrer haben. Das heißt in diesem Fall nicht, dass das alle Fahrer sind, die es gibt...

Was spricht gegen eine Liste von Fahrern als Attribut im Auto?

Er will es ja eben schon im Klassendiagramm genauer spezifizieren das es nicht alle Fahrer sein können. Aber das geht ja nicht s.o.
 
Zuletzt bearbeitet von einem Moderator:

Dreamworx

Mitglied
Gibts es denn noch eine Möglichkeit zu dokumentieren, welcher Fahrer eine Verbindung zu dem Auto hat, außer über ein Attribut vom Typ Fahrer in der Klasse Auto, welches dann auch die multiplizität * hat?
 
N

nillehammer

Gast
Gibts es denn noch eine Möglichkeit zu dokumentieren, welcher Fahrer eine Verbindung zu dem Auto hat, außer über ein Attribut vom Typ Fahrer in der Klasse Auto, welches dann auch die multiplizität * hat?
Du musst hier gedanklich wirklich streng zwischen Klassen und Instanzen trennen. Auf Klassenebene sagst Du ein Auto hat * Fahrer. Genau für die Darstellung dieser Beziehung ist das Klassendiagramm da.

welcher Fahrer ... zu dem Auto
Hier redest Du von konkreten Instanzen. Dafür ist das Klassendiagramm nicht geeignet, sondern das Objektdiagramm. Aber nochmal, ich glaube, Du brauchst das auch nicht. Stell Dir die Implementierung der im Klassendiagramm dargestellten Beziehung in Java vor:
Java:
public class Auto {
  private Set<Fahrer> fahrer;
  ...
}
Auch hier noch reine Beschreibung auf Klassenebene. Erst zur Laufzeit des Programmes hast Du die Instanz von Auto, in der ein Set von Instanzen von Fahrern drinnen ist. Erst dann kannst Du Deine Frage beantworten "welcher Fahrer eine Verbindung zu dem Auto" hat.
 

Dreamworx

Mitglied
Du musst hier gedanklich wirklich streng zwischen Klassen und Instanzen trennen. Auf Klassenebene sagst Du ein Auto hat * Fahrer. Genau für die Darstellung dieser Beziehung ist das Klassendiagramm da.


Hier redest Du von konkreten Instanzen. Dafür ist das Klassendiagramm nicht geeignet, sondern das Objektdiagramm. Aber nochmal, ich glaube, Du brauchst das auch nicht. Stell Dir die Implementierung der im Klassendiagramm dargestellten Beziehung in Java vor:
Java:
public class Auto {
  private Set<Fahrer> fahrer;
  ...
}
Auch hier noch reine Beschreibung auf Klassenebene. Erst zur Laufzeit des Programmes hast Du die Instanz von Auto, in der ein Set von Instanzen von Fahrern drinnen ist. Erst dann kannst Du Deine Frage beantworten "welcher Fahrer eine Verbindung zu dem Auto" hat.


Alles klar - so war auch mein Verständnis im Groben.

Das Problem ist eben, dass ich nachher genau mit den bestimmten Fahrern arbeiten muss - was ja erstmal aus dem Klassendiagramm nicht hervorgeht (außer das Grobe Verständnis mit Kommentaren o.ä.) und ich deswegen nach einer Möglichkeit gesucht habe, das direkt im Diagramm zu modellieren. Deswegen auch meine Frage nach anderen Modellen - ich werd mir das Objektdiagramm auf jeden Fall mal anschauen.
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben