# Was ist Composition/Komposition?



## frager (16. Mai 2006)

hallo, was genau ist denn composition. das hat doch irgendwas mit der has-a beziehung zu tun? 

grüße:-D


----------



## bygones (16. Mai 2006)

google ist dein freund

http://www.javaworld.com/javaworld/jw-09-2002/jw-0913-designpatterns.html
http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/composite.htm

usw


----------



## frager (16. Mai 2006)

hi, ich meine nicht das compositum design patterns. ich meine eher die OO technik, die auch unter dem namen composite bekannt ist. aber ich bin mir eben nicht sicher, was genau das ist.

gruß


----------



## AlArenal (16. Mai 2006)

Ein Design Pattern IST eine OO-Technik.


----------



## byte (16. Mai 2006)

Wenn Du nicht das Composite Pattern meinst, dann meinst Du wohl die Komposition zwischen Objekten (dargestellt durch die Linie mit Raute in Klassen-/ Objektdiagrammen). Damit ist in der Tat die "has-a" Beziehung gemeint. In Java also nix anderes als eine Klassenvariable.


----------



## frager (16. Mai 2006)

hi, ja genau byto...kannst du das genauer erklären?

gruß


----------



## bygones (16. Mai 2006)

aso UML nicht Design Pattern....

auch hier würde ich google nehmen

http://nm.wu-wien.ac.at/Lehre/oo1/02-43.html

bzw wiki
http://de.wikipedia.org/wiki/Komposition_(UML)

Eine Komposition ist eine Teil-Ganze Beziehung... Ein Buch hat mehrer Seiten (Eine Seite ist ein Teil des Buches) oder ein Buch hat mehrere Kapitel. Es muss nicht "mehrdimensional" sein - es kann auch eine 1:1 beziehung sein (Haus -> Dach).

Wie byto schon sagt wird dies in java über eine Klassenvariable gespeichert (Buch hat eine Liste von Seiten, das Haus ein Dach usw)


----------



## byte (16. Mai 2006)

Das folgende Gebilde soll ein Strukturdiagramm mit Komposition sein: 

[ obj1 ] <>-------- [ obj2 ]


In Java Code könnte das etwa so aussehen (obj1 ist vom Typ A und obj2 vom Typ B):


```
class A {
  // obj1 vom Typ A "hat ein" obj2 vom Typ B
  private B obj2;
  ...
}

class B {
  ...
}
```


----------

