UML Assoziation



  • Hallo zusammen,

    ich beschäftige mich gerade mit der Modellierungssprache UML und versuche mir gerade die Begriffe der "Assoziation" und der "Aggregation" näher zu bringen.

    Zur Assoziation: Eine Assoziation stellt eine Verbindung zweier Klassen dar. Dabei kann man über die Navigität steuern, in welche Richtung Informationsfluss erlaubt ist. Ähnlich wie bei ER - Diagrammen (Datenbanken) kann ich durch die Multiplizität eine Komplexität der Beziehung festlegen.

    1.) Stimmt meine Vorstellung einer Assoziation?

    2.) Mir ist nicht ganz so klar, wie die Komplexität einer Beziehung implementiert wird. Eine Assoziation bedeutet, dass beispielsweise in Klasse A ein Objekt der Klasse B definiert und damit gearbeitet wird. Wird überhautp bei der Programmierung darauf geachtet, das z.B maximal 1 Objekt deklariert werden darf?

    3.) Ist eine Aggregation dasselbe wie eine "hat - Beziehung"? Google verrät es mir nicht :). Eine Aggregation (hat-Beziehung) ist aber auch eine Assoziation, aber eine Assoziation nicht unbedingt eine Aggregation (hat-Beziehung). Eine Aggregation wird durch eine Route an einer Klasse gekennzeichnet. Bedeutet das, dass bei einer Aggregation eine Klasse ein Objekt in einer anderen hat und nicht umgekehrt? Oder was ist Unterschied zur Assoziation?

    Vielen Dank
    lg, freakC++



  • Hallo freakC++,

    Zur Assoziation: Eine Assoziation stellt eine Verbindung zweier Klassen dar. Dabei kann man über die Navigität steuern, in welche Richtung Informationsfluss erlaubt ist.

    Ich denke das hast du genau richtig verstanden. Wobei streng genommen die Verbindung zwischen genau zwei Klassen ein Spezialfall der Assoziation ist. Es sind auch mehrere Klassen erlaubt, allerdings kann man das vernachlässigen.

    Mir ist nicht ganz so klar, wie die Komplexität einer Beziehung implementiert wird. Eine Assoziation bedeutet, dass beispielsweise in Klasse A ein Objekt der Klasse B definiert und damit gearbeitet wird. Wird überhautp bei der Programmierung darauf geachtet, das z.B maximal 1 Objekt deklariert werden darf?

    Die Multiplizitäten lassen sich so implementieren, wie du es bereits beschrieben hast. Wenn die UML-Notation sagt, dass Objekt A nur ein Objekt B kennen darf, dann gibt es in A eine Referenz auf eine Instanz von B. Sind mehrere Bs erlaubt, dann ist eine Datenstruktur (z.B. Array) nötig.

    Ist eine Aggregation dasselbe wie eine "hat - Beziehung"? Google verrät es mir nicht :). Eine Aggregation (hat-Beziehung) ist aber auch eine Assoziation, aber eine Assoziation nicht unbedingt eine Aggregation (hat-Beziehung). Eine Aggregation wird durch eine Route an einer Klasse gekennzeichnet. Bedeutet das, dass bei einer Aggregation eine Klasse ein Objekt in einer anderen hat und nicht umgekehrt? Oder was ist Unterschied zur Assoziation?

    Eine Aggregation ist (wie auch die Komposition) ein Spezialfall einer Assoziation, richtig. Bei der Aggregation wird die Raute leer und bei der Komposition gefüllt dargestellt. Ich würde die Aggregation mit "Besteht-aus" verstehen. Die Umsetzung kann wie bei einer Assoziation aussehen. Bei der Komposition muss zusätzlich die Lebensdauer-Verwaltung der Teile berücksichtigt werden.

    Viele Grüße,
    MaBa



  • Vielen Dank. Ich habe auf irgendwelchen Seite noch Informationen bekommen und die stimmen mit deiner Erklärung überein. Super!

    lg, freakC++


Anmelden zum Antworten