Haben die Forumsteilnehmer kein Beispiel zur Hand ???



  • bisschen offtopic, aber wofür gibt´s in Java Referenzen @Optimizer? 🙂



  • Was für ein Zufall, dass ich heute Marcus's Buch bekommen habe.

    Da war ein Beispiel mit Flugzeug und Triebwerk als Assoziation und Gepäckstück und Laderaum als Aggregation. (Oder umgekehrt 🤡 )

    Jedenfalls läuft es darauf hinaus, dass bei einem die Objekte unabhängig voneinander existieren können (Triebwerk und Flugzeug) und beim anderen halt nicht.
    Aber wie gesagt (von volkard), UML-Diagramme sind sowieso für die Katz.



  • Docster schrieb:

    bisschen offtopic, aber wofür gibt´s in Java Referenzen @Optimizer? 🙂

    Ich verstehe deine Frage nicht. Mit den Referenzen kannst du die Lebenszeiten von zwei Objekten nicht koppeln. In Java musst du diese enge Bindung mit deiner Programmlogik alleine durchsetzen.



  • Argh, ich kapier nichts, also wie was das jetzt?

    Aggregation bedeutet, dass das eine das andere irgendwie verwendet?
    Komposition bedeutet, dass das eine vom anderen ein Teil ist.
    Assoziation bedeutet, dass eine Verbindung vorliegt, aber was heißt das denn???

    Wenn das eine das andere verwendet, so IST es eine Verbindung, wenn der Motor am Auto dran ist, dann IST er verbunden.
    Ich finde, dass das nicht eindeutig ist, das überdeckt sich doch oft. 😞



  • Ach, wenn du die Lebenszeit zweier Objekte in Java koppeln willst, is das ganz einfach:
    public class bla {
    private:
    b myB;
    };

    Wenn du jetzt mit new ein bla-Objekt anlegst, dann erzeugst du auch automatisch ein b-Objekt.
    Und wenn sich der Garbage-Collector bla schnappt, wir auch das b-objekt myB mit abgeräumt.



  • @Docster:
    Das ist mir schon bekannt - eine andere Möglichkeit gibt es in Java ja gar nicht. Ich glaube ehrlich gesagt, dass dir die Unterschiede zwischen den Beziehung nicht ganz klar ist. 🙂

    Objekt A verwaltet B
    Objekt B ist Teil von A

    Das kann man in Java nicht unterschiedlich darstellen. Ich kann jetzt ne zweite Referenz auf myB haben, dann wird vielleicht mein bla-Objekt gelöscht, aber das myB nicht, weil es kein Teil von bla ist. In Java muss die Programmlogik sicherstellen, dass das richtig abläuft.
    Das ist ja nichts schlimmes, das lässt sich ja machen - aber es ist eben der Unterschied, weil dir die Sprache dabei nicht hilft.

    Wenn du jetzt mit new ein bla-Objekt anlegst, dann erzeugst du auch automatisch ein b-Objekt.

    Stimmt übrigens nicht. myBla bleibt solange eine null-Referenz, bis du es zuweist.



  • Mis2com schrieb:

    Assoziation bedeutet, dass eine Verbindung vorliegt, aber was heißt das denn???

    Assoziation heisst:

    A <----- B

    Klasse B nutzt Dienste der Klasse A. z.B. könnte A eine Methode bereitstellen, um die Wurzel zu berechnen und Klasse B nutzt diese.



  • Nagut, ein Objekt, das ein Teil von einem anderen ist, kann von dem auch verwaltet werden.
    Aber gut, man sieht schon...

    Komposition bedeutet: Teil sein
    Aggregation bedeutet: Verwendung

    Und Assoziation ist ein Überbegriff dafür, nämlich Verbindungen, da kann es vieles geben, ich finde es nicht gut, dass die nach den speziellen Begriffen jetzt so einen allgemeinen aufführen, wahrscheinlich ist der nur da, damit Leute, die noch was Anderes darstellen wollen, die Möglichkeit dazu haben.

    MfG MAV



  • Neinneinnein. 😃

    Assoziation: Klasse A braucht Klasse B, weil sie bestimmte Dienste nutzt. Können z.B. auch statische Methoden sein, A muss nicht mal eine Referenz auf ein B-Objekt haben.
    Aggregation: Klasse B ist abhängig von A, weil ein B-Objekt von A verwaltet wird. Aber wenn B stirbt, könnte z.B. C es weiterverwalten.
    Komposition bedeutet, ein Teil von etwas anderem sein, ja.



  • Überdeckt sich trotzdem manchmal, weil man ja statische Methoden relativ selten aufruft und daher eine Instanz der anderen Klasse haben wird.
    Nagut, das muss nicht sein, aber wenn eine Komposition oder Aggregation herrscht, dann wird doch wohl auch eine Assoziation da sein, oder nicht?



  • Solange die Sprache grundsätzlich die Modelierung unterschiedlich starker Koppelungen unterstützt, ist es völlig unerheblich, ob das durch irgendwelche Sprachautomatismen oder durch selbst zu entwickelnde Programmlogik geschieht.

    Die Aussage, daß man in Java die Lebensdauer von 2 Objekten nicht koppeln kann, is jedenfalls grober Unfug.



  • Das hab ich auch nicht gesagt. Ich habe gesagt, dass Java einen dabei nicht unterstützt, dass man das durch seine Programmlogik alleinie sicherstellen muss.



  • Nagut, das muss nicht sein, aber wenn eine Komposition oder Aggregation herrscht, dann wird doch wohl auch eine Assoziation da sein, oder nicht?

    Darüber hab ich noch gar nicht nachgedacht. IMO impliziert eine stärkere Bindung automatisch auch die schwächere. Könnt mich jetzt aber auch täuschen.



  • Objekt A verwaltet B
    Objekt B ist Teil von A
    Das kann man in Java nicht unterschiedlich darstellen.

    Ach, nicht? 🙂



  • Verrat mir doch wie, sonst muss ich noch dumm sterben. 😋
    Nur damit wir uns richtig verstehen, wir reden schon von Sprachmitteln, nicht vom Design der Programmlogik, gelle? Denn dass das mit der Programmlogik geht, steht ja außer Frage, das hab ich ja im selben Post noch gesagt. 😉



  • Hi,

    habe auf Humes Seite was Gutes zum Thema gefunden:
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=Programming

    MfG MAV


Anmelden zum Antworten