Begriffe Aggregation, Spezialisierung u.Komposition



  • Guten Abend zusammen,

    Im laufe meiner Ausbildung zum Fachinformatiker komme Ich auch an Objektorientierte Programmierung an.
    Ich habe allerdings mal ein paar Verständnisfragen.

    Die Aggregation kann soweit Ich weiß 2 Zustände haben.

    Klasse A ------> Klasse B
    Vorlesung0* 3*Schüler

    Hier ist Klasse A Abhängig von Klasse B oder ? Das nennt man doch auch Komposition oder ?

    Ab 3 Schüler findet Keine , eine oder mehrere Vorlesungen statt.
    ISt das so richtig ?

    Dann gab es das ganze auch unabhängig von einer anderen Klasse oder ? Die Aggregation.

    Zum Thema Spezialisierung habe Ich gar keine Ahnung was das sein soll ?
    Ich hoffe das kann mir jemand für Dummies erklären. 😃

    Die Vererbung ist doch das bilden von Unterklassen mithilfe der Oberklasse.

    Klasse A <----- Klasse B
    Vater Tochter

    Oder ? Die Attribute bzw Methoden sind dann geteilt ?

    Das ist etwas viel auf einmal.
    ICh hoffe Ihr nehmt mir das nicht übel 😃

    Vielen Dank

    Christian



  • also der mensch ist eine komposition aus armen, beinen usw, weil diese arme und beine, sollten sie vom menschen getrennt werden, irgendwann zu stinken anfangen. das heißt, die objekte "arm", "bein" usw. können nicht ohne das objekt "mensch" existieren.

    die firma ist eine aggregation aus mitarbeitern, maschinen, büroausstattung, weil die objekte "mitarbeiter", "maschine" und "büroausstattung" auch alleine existieren können.

    spezialisierung bedeutet im prinzip, dass ein objekt a von einem objekt b über die vererbung weitere eigenschaften erhält, generalisierung bedeutet dagegen, dass diese eigenschaften entfernt werden.
    wenn du also aus dem objekt "vogel" ein objekt "geier" machst, indem du den krummen schnabel, den nackten hals und die eigenschaft des aasfressers hinzufügst, ist das spezialisierung, entfernst du dem geier diese eigenschaften, um nur den vogel zu haben, so ist das generalisierung.



  • Hallo Wade1234 ,

    Vielen Dank für die Antwort.
    Wir haben so ein Arbeitsblatt bekommen. Da steht das irgendwie ganz dumm da.
    Also eine Komposition ist mir erst mal klar.

    Klasse A --- Klasse B ( Abhängig von Klasse A)

    Aggregation:

    Klasse A --- Klasse B ( Unabhängig ) Also das gleiche aber unabhängig ?

    Spezialisierung :

    Klasse A --- Klasse B ( Erben von Attributen, Funktionen ? )
    Heißt Ich bilde eine Unterklasse ? In dem Fall kann Unterklasse B doch auch neben den eigenen Attributen , auch auf die von Klasse A zugrifen oder ?

    Generalisierung :

    Das selbe umgekehrt ? Verstehe Ich noch nicht ganz.

    Klasse A --- Klasse B



  • cwolf schrieb:

    Hallo Wade1234 ,

    Vielen Dank für die Antwort.
    Wir haben so ein Arbeitsblatt bekommen. Da steht das irgendwie ganz dumm da.
    Also eine Komposition ist mir erst mal klar.

    Klasse A --- Klasse B ( Abhängig von Klasse A)

    äh ja.

    [quote]

    Aggregation:

    Klasse A --- Klasse B ( Unabhängig ) Also das gleiche aber unabhängig ?

    äh auch ja. also der wesentliche unterschied zwischen der komposition und der aggregation ist der, dass die "teilobjekte" der aggregation prinzipiell auch alleine existieren können, die der komposition nicht. aus einem auto kannst du einen motor ausbauen und diesen theoretisch ewig lange in die garage stellen. wenn du einem menschen den arm abhackst, wird sich dieser irgendwann auflösen.

    bezogen auf die programmierung musst du zwangsläufig irgendwann den destruktor von "arm" aufrufen, nachdem du den destruktor von mensch aufgerufen hast, während du den destruktor von "motor" nicht unbedingt aufrufen musst, nachdem du den destruktor von "auto" aufgerufen hast.
    wichtig ist eben, dass du dir klarmachst, dass die in der komposition zu einem "gesamtobjekt" zusammengesetzten objekte nicht alleine verwendet werden können, bei der aggregation funktioniert das hingegen.

    Spezialisierung :

    Klasse A --- Klasse B ( Erben von Attributen, Funktionen ? )
    Heißt Ich bilde eine Unterklasse ? In dem Fall kann Unterklasse B doch auch neben den eigenen Attributen , auch auf die von Klasse A zugrifen oder ?

    ja genau so ist das. ein tier kann z.b. laufen, ein hund kann neben laufen auch noch bellen.

    [quzote]
    Generalisierung :

    Das selbe umgekehrt ? Verstehe Ich noch nicht ganz.

    im prinzip ja. bei der spezialisierung machst du aus dem tier einen hund oder eine katze, indem du die entsprechenden merkmalen (bellen, miauen) hinzufügst, und bei der generalisierung machst du aus dem hund und der katze ein tier, indem du nur die merkmale nimmst, über die beide verfügen, also z.b. anzahl der beine, die speziellen eigenschaften, also miauen oder bellen, jedoch entfernst.



  • Hi,
    Ahh OK.

    Ich habe dann

    Klasse A (Tier) ( Generalisierung )
    - gattung : string
    + leben ()
    ^
    |
    |
    |Klasse B ( Maulwurf) ( Spezialisierung )

    - farbe : string
    + kriechen()
    Die Klasse B ist dann unsere Kinder Klasse.
    Beispiel Tier. Oben ist die Elternklasse und unten die Kinderklasse. Also der MAulwurf.
    Nach oben hin wird generalisiert ?
    Und nach unten hin wird Spezialisiert.
    Ist das so richtig ?

    Vielen Dank



  • Si, Sanchez!



  • Vielen lieben Dank für die Erklärungen.
    Damit weiß ich schon mal viel mehr.