Ich war mir auch nie sicher ob ich das richtig verstanden habe, deshalb frag ich auch gleich mal nach.
Eine Komposition:
Delphi-Quellcode:
type
TEineKlasse = class
private
FEinObjekt : TAndereKlasse;
public
...
end;
FEinObjekt wird im Create erzeugt und im Destroy freigegeben und bleibt die ganze Zeit die selbe Instanz von TAndereKlasse.
Eine Aggregation:
Delphi-Quellcode:
type
TEineKlasse = class
private
FEinObjekt : TAndereKlasse;
public
procedure SetzeEinObjekt(AEinObjekt : TAndereKlasse);
end;
FEinObjekt wird von außen versorgt. Das heisst außerhalb der Klasse erzeugt, zerstört und kann auch ersetzt werden.
Eine Assoziation:
Delphi-Quellcode:
type
TEineKlasse = class
public
procedure MachWas(AEinObjekt : TAndereKlasse);
end;
....
procedure TEineKlasse.MachWas(AEinObjekt : TAndereKlasse);
begin
AEinObjekt.Machwas;
end;
AEinObjekt wird bei Aufruf der Methode in der es benutzt wird übergeben.
Stimmt das? Ich war mir nie richtig sicher.
grüße, daniel