genauigkeit bei komposition und aggregation



  • hallo

    kann mir bitte jemand -ein letztes mal- meine gedanken auseinanderreissen zum thema.

    -assoziation
    -aggregation
    -komposition

    habe es so verstanden:

    Assoziation:
    bezeichnet die allgemeine verbindung zwischen objekten verschiedener klassen.
    verbunden wird ueber instanzverbindungen.

    ein auto wird gefahren von einer person.
    eine person faehrt ein auto.

    Hat-ein-Beziehung (has-a, eine spezielle assoziation, naemlich Aggregation):
    beschreibt eine Teil-Ganzes Beziehung.
    die Teilobjekte koennen gleichzeitig in verschiedenen Gesamtobjekten sein.
    Beispiel waere eine homepage, die ueber links eine seite enthaelt.
    diese seite ist auch ueber links von einer anderen homepage erreichbar.

    Teil-von-Beziehung (part of) (komposition, ein spezialfall der Aggregation):
    ein objekt ist aus mehreren teilobjekten zusammengesetzt.
    Diese Teile sind nur in diesem Objekt. das Obekt "besitzt" seine Teile.
    wie das auto aus rad, motor, lenkrad etc besteht, geht das
    auto kaputt, sind die Teile zerstoert.

    nun meine frage:

    was bedeutet: "die teilobjekte koennen gleichzeitig in verschiedenen Gesamtobjekten sein".
    ich habe dieses beispiel zwar konstruiert, aber mir faellt kein anderes ein.

    eigentlich hat-ein auto doch auch raeder. ist das nicht eine aggregation? aber die raeder sind
    eindeutig meinem fiesta zugeordnet. somit gehoeren sie zum objekt. wenn ich den gegen den
    baum fahre, sind sie mit zerstoert, also komposition?

    da steckt meine unsicherheit... vielleicht erleuchtet jemand diesen fakt.

    (ps: geht nicht um implementierungen, mir ist klar, daß es in java anders gemacht wird als in c++ oder in smalltalk.
    mir geht es alleine um die begrifflichkeiten)

    thanks.



  • das ganze ist wie bei der datenmodellierung mit ERD gleich

    eine hat ein beziehung ist eine "normale fremdschluesselbeziehung"
    das objekt kann ohne ein anderes objekt existieren,
    mehrere objekte koennen darauf referenzieren, dennoch bleibt es an siche in eigenes objekt

    teil von beziehung meint eine "abhängige Entität"
    das heisst dieses objekt kann nicht ohne sein stamm objekt existieren
    es kann auch nicht entfernt und zu einem anderen objekt hinzugefuegt werden
    dein beispiel mit auto ist nicht so gut
    ich kann zwar mein auto schrotten, wenn aber die reifen noch ganz sind dann nehme ich sie und steck sie auf mein neues auto auf (vorrausgesetzt sie passen)
    mit manchen auto teilen geht das natuerlich nicht

    im realationalen datenbank bereich aeussert sich das so:
    has-a ß.... fremdschluessel liegt in einer anderen tabelle als extra feld, kann auch null sein

    part of - fremschluessel ist teil des primaerschluessels, kann nicht geaendert oder verschoben werden. sonderfaelle gibts da mehrere

    im objekt bereich:
    has a .. du hast eine referenz auf dein anderes objekt, diese referenz kannst du setzen wie du willst
    das heisst das objekt wurde normalerweise ausserhalb erzeugt
    stirbt das objekt so wird das andere objekt weiterleben

    part of - du hast einen pool von von aussen nicht erreichbaren objekten - in C++ gut mittels private arrays machbar - du kapselst die informationen ueber methodenzugriffe das keiner zugriff auf die refernz bekommt
    stirbt das objekt so sterben die subobjekte (destruktor)

    ich hoffe du verstehst was ich ausdruecken will



  • danke

    perfekt verstanden. super 🙂


Anmelden zum Antworten