Zum Inhalt springen

UML 2.0 Klassendiagramm Verwandschaftsbeziehungen


H4xmoneY

Empfohlene Beiträge

Hallo,

ich hoffe das mir jemand helfen Kann. Wie kann ich Verwandschaftsbeziehungen in einem Klassendiagram darstelln. Ich kann mir hierbei nur vorstellen, das es eine Klasse Personen gibt die wierum Rollen hat (Kind hat Vater).

Wäre super wenn mir jemand helfen Kann. Gern auch über Skype.

Bitte Melden :confused:

Gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt in der UML aus Rollen die die Assoziation auch Beschreiben. Aber das ist nicht das Problem. Das man diese zu sich selbst zurückführen kann ist mir auch bekannt.

Jedoch wie sieht es aus, wenn ich einen kompletten Stammbaum habe mit vielen Personen Gernerationen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

das mit den Rollen habe ich noch nicht so richtig verstanden.

Ich würde aus einer Basisklasse "Einträge" zwei Klassen "Personen" und "Paare" machen.

Person A und B erzeugen (aggregatieren) das Paar C. Von Paar C erben die Kinder D..H.H bildet mit I das Paar K, das wieder Kinder M...O hat.usw.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann reden wir bei den Rollen wenigstens vom selben, das war mir anhand Deines Posts nicht klar.

Wo liegt denn Dein Problem genau? Du weißt, dass du eine rekursive Assoziation haben kannst, und diese kann eine Eltern-Kind-Beziehung sein? Was willst Du denn mehr? Oder anders: zeig mal Deinen Ansatz und sag, was Dir an dem nicht gefällt?

Ich würde es ganz einfach machen: Klasse Person mit einer bidirektionalen Beziehung zu sich selbst (Eltern kennen ihre Kinder, Kinder ihre Eltern). Fertig.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde es ganz einfach machen: Klasse Person mit einer bidirektionalen Beziehung zu sich selbst (Eltern kennen ihre Kinder, Kinder ihre Eltern). Fertig.

Was mir nicht klar ist, warum arbeitest innerhalb Deiner Datenstruktur Person, gleichzeitig mit der Datenstruktur "Baum". Ich würde das trennen, Du hast eine Klasse "Person" und eine Klasse "Graph". Du meiner Ansicht einen gerichteten, teilvernetzten Graphen, mit der Bedingung, dass jeder Vertex genau zwei Parents hat. Eine Wurzel gibt es nur symbolisch, da es sonst gegen die Vorgage verstößt. Gerichtet muss der Graph sein, damit Du später beim Auslesen keine Probleme bekommst und ggf in Schleifen rennst.

Wenn Du noch zwingend die Verbindung vom Kindknoten zu den Vaterknoten benötigst, dann entspricht dann musst Du innerhalb einer verketteten Liste einfach die rückwirkende Verbindung mitführen.

Das kann ich fast exakt so in UML Modellieren und vor allem ich kann es generisch lösen, so dass ich unabhängig von Deiner Personenklasse bin

PHil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich hätte noch einen anderen Vorschlag.

Die Klasse Stammbaum enthält eine Liste der Objekte "Generationen".

Das Objekt "Generation" enthält eine Liste von Objekten "Person" und von Objekten "Paare".

Personen der n. Generation(Kinder) kennen ihre Eltern in der n-1. Generation.

Kinder gleicher Eltern sind Geschwister.

Link zu diesem Kommentar
Auf anderen Seiten teilen

In meinen Augen ist eine direkte rekursive Beziehung innerhalb der Person exakt die fachliche Forderung. Wenn wir in die echte Welt schauen, gibt es ja dort auch keinen Graphen, an dem meine Verwandtschaftsbeziehungen hängen. Ich habe Eltern und Kinder. Und so bilde ich das erst mal ab. Technische Belange gehören sehr viel später in den Entwurfsprozess (aber das würde zu weit in das Thema OOAD) führen. Hier ist es wohl im Endeffekt Jacke wie Hose, ob Du die rekursive Beziehung in eine extra Klasse auslagerst oder in der Person behältst.

Aufgrund von H4xmoneYs letzter Frage steht er / sie sowieso noch viel weiter vorn im Designprozess. Ein Objekt kann Objekte enthalten (und ich meine hier Objekte, nicht Klassen). So kann ein Motor Bauteile enthalten, ein Kugelschreiber eine Mine und vieles andere mehr. In der Objektorientierung handelt es sich dabei um eine Assoziation (@erfahrene Entwickler / Modellierer / ...: ja, ich weiß, um eine bestimmte Assoziation, aber überfahrt ihn erst mal nicht).

Kugelschreiber -> Mine

Ich würde Dir allerdings ein Einsteigertutorial für UML und Objektorientierung empfehlen, da es bei Dir nach massiven Lücken in den Grundlagen aussieht.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

In meinen Augen ist eine direkte rekursive Beziehung innerhalb der Person exakt die fachliche Forderung. Wenn wir in die echte Welt schauen, gibt es ja dort auch keinen Graphen, an dem meine Verwandtschaftsbeziehungen hängen.

Oh doch, denn Du bist definitiv nach Deinen Eltern geboren, somit ergibt sich ein gerichteter Graph

Ich habe Eltern und Kinder. Und so bilde ich das erst mal ab. Technische Belange gehören sehr viel später in den Entwurfsprozess (aber das würde zu weit in das Thema OOAD) führen. Hier ist es wohl im Endeffekt Jacke wie Hose, ob Du die rekursive Beziehung in eine extra Klasse auslagerst oder in der Person behältst.

Das kommt ganz darauf an, was ich damit erreichen will. Denn je nachdem kann ich das Design entsprechend wählen

Ein Objekt kann Objekte enthalten (und ich meine hier Objekte, nicht Klassen).

Ja, aber es geht um das Design und Objekte kann ich nicht designen, sondern nur Klassen. Denn wie willst Du z.B. in einer Fabrik 1000 Objekte vom Typ Auto auf Dein Konzeptpapier bekommen?

Ich würde Dir allerdings ein Einsteigertutorial für UML und Objektorientierung empfehlen, da es bei Dir nach massiven Lücken in den Grundlagen aussieht.

Auf wen bezieht sich diese Aussage?

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie kann ich Verwandschaftsbeziehungen in einem Klassendiagram darstellen. Ich kann mir hierbei nur vorstellen, das es eine Klasse Personen gibt die wierum Rollen hat (Kind hat Vater).

Bitte präzisiere mal, in welchem fachlichen Kontext du von Verwandschaft bzw. Kind/Vater sprichst. Je nachdem, ob du einen Familienstammbaum, das Erbrecht oder das ESt-Gesetz (wenn ja, bitte PM :uli) modellieren willst, ergeben sich andere Anforderungen an dein Modell.

Gruß Martin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh doch, denn Du bist definitiv nach Deinen Eltern geboren, somit ergibt sich ein gerichteter Graph

Hier hast Du mich falsch verstanden. Es gibt keinen als eigenes Konstrukt definierten Graph, an dem meine Verwandten und ich dranhängen. Wir verwalten unsere Beziehungen jeweils in uns selbst.

Ja, aber es geht um das Design und Objekte kann ich nicht designen, sondern nur Klassen. Denn wie willst Du z.B. in einer Fabrik 1000 Objekte vom Typ Auto auf Dein Konzeptpapier bekommen?

Doch, auch Objekte werden entworfen. Sie haben einen anderen Zweck als Klassen, aber auch im Entwurf verwende ich Objekte wenn ich

- eine Momentaufnahme im System abbilden will (-> Sequenzdiagramm nur als prominentestes Beispiel, oder verwendest Du das nicht im Entwurf? :) )

- mit einem Kunden spreche, dem der abstrakte Begriff der Klasse für den Einstieg zu hoch ist (das ist im Entwurf selten, kommt aber vor).

Auf wen bezieht sich diese Aussage?

Nicht auf Dich, keine Angst. :) Ich erkenne durchaus Deine Fähigkeiten in der UML an.

Um die Diskussion nicht abgleiten zu lassen und diesen Nebenschauplatz mal zu verlassen: es ist für diesen Fall völlig uninteressant, ob das Problem auf Deine oder meine Art gelöst wird. Meine halte ich für einen in der UML nicht geübten Modellierer für natürlicher und leichter nachvollziehbar.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier hast Du mich falsch verstanden. Es gibt keinen als eigenes Konstrukt definierten Graph, an dem meine Verwandten und ich dranhängen. Wir verwalten unsere Beziehungen jeweils in uns selbst.

Okay, ich habe gedanklich eine Trennung von der Person und deren "Vernetzung".

- eine Momentaufnahme im System abbilden will (-> Sequenzdiagramm nur als prominentestes Beispiel, oder verwendest Du das nicht im Entwurf? :) )

Natürlich, aber es ging ja hier um ein Darstellung in UML, also würde ich dort nicht von Objekten sprechen, sondern von Klassen

- mit einem Kunden spreche, dem der abstrakte Begriff der Klasse für den Einstieg zu hoch ist (das ist im Entwurf selten, kommt aber vor).

*g* da kann ich nur beipflichten

Um die Diskussion nicht abgleiten zu lassen und diesen Nebenschauplatz mal zu verlassen: es ist für diesen Fall völlig uninteressant, ob das Problem auf Deine oder meine Art gelöst wird. Meine halte ich für einen in der UML nicht geübten Modellierer für natürlicher und leichter nachvollziehbar.

Hier gebe ich Dir völlig recht. Ich denke, man müsst das gesamte Problem kennen, um einen sinnvollen Modellierungsaspekt hin zu bekommen. Da das Problem eben noch nicht genau formuliert ist, war eben mein Ansatz eher theoretischer Natur. Es sollen in irgendeiner Form Beziehungen zwischen Personen designed werden, was ja letztendlich ein entsprechend gearteter Graph ist. Um dort möglich flexibel zu bleiben, würde ich die Netzstruktur generisch eigenständig modellieren und dann eben den Content (Personen) einfach hineingeben

Ist aber letztendlich die Frage nach dem Aufwand-Nutzen-Verhältnis

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...