![]() |
assoziationen zwischen objekten
hey,
also es gibt bidirektionale und unidirektionale assoziation(sowie kompostion und aggregation). Aggregation
Delphi-Quellcode:
TPerson = class (TObject)
Adresse : TAdresse; Name : string[15]; ... public constructor Create; virtual; procedure Init; virtual; procedure SetName (n: string); virtual; ... end; Zitat:
Bei einer unidirektional Assoziation müssen dan gegenseitig die Komponenten als Feld hinzugefügt werden oder? wie werden sie dan createt? oder ist das nur bei einer Aggregation so? |
Re: assoziationen zwischen objekten
Zitat:
Zitat:
Z.B. der Normalfall beim Owner. Der Owner kennt sein Eigentum und gibt dieses bei seiner Freigabe mit frei. eine Komponente kennt im Normalfall seinen Owner ab nicht. Bidirektional heisst, das ein Objekt weiss, wer sein Owner ist. |
Re: assoziationen zwischen objekten
Zitat:
Klasse 1:
Delphi-Quellcode:
TDaten= class
private spielFeld: array [0..3,0..3] of string; // function pruefeZeile(pZ:string,pZeile:integer):integer; // function pruefeZeile(pZ:string,pZeile:integer):integer; public // procedure setzeFeld(pNr:integer,pAktSpieler:string):boolean; // procedure pruefeGewonnen(pAktSpieler:string):boolean; end; Klasse 2:
Delphi-Quellcode:
type
TSteuerung= class private dieSpielNr:integer; anzahlZuege:integer; // procedure setzeAktSpieler(pAktSpieler:string); // procedure erhoeheAnzZuege; // procedure erstelleStatistik(pAktSpieler:string); function ermittleSpieler(): string; public aktSpieler:string; // procedure bearbeiteClick(pNr:integer); // procedure bearbeiteTaste(pNr:integer); procedure NeuesSpiel; end; sagen wir mal zwischen diesen Klassen soll eine bidirektionale assoziation bestehen. könnte jemand die felder ergänzen, die jetzt hinzukommen würden? |
Re: assoziationen zwischen objekten
Ein einfaches Beispiel:
Delphi-Quellcode:
Das Auto kennt seine Reifen und der Reifen weis, zu welchem Auto er gehört
TReifen = class;
TAuto = class ( Fahrzeug) ReifenLinksVorne, ReifenRechtsVorne, ReifenLinksHinten, ReifenRechtsHinten: TReifen; ... end; TReifen = class Auto: TAuto; ... end; |
Re: assoziationen zwischen objekten
Also ich habe es so gelernt:
Aggregation <> Komposition Aggregation: Ein Objekt/Entität ist ein Behälter für ein anderes. Beispiel: Eine Kaffeetasse aggregiert den Kaffee, dh. man kann Kaffee hineinfüllen oder herausnehmen. Egal ob / wiviel Kaffee darin ist, es ist immer eine Kaffeetasse. Der Kaffee wird unabhängig von der Tasse erzeugt und vernichtet. Komposition: Ein Objekt/Entität besteht aus einem anderem. Beispiel: Eine Kaffeetasse besteht unter anderem aus einem Henkel. Besitzt sie keinen, ![]() Der Henkel wird bei der Erstellung der Tasse erstellt und bei ihrer Erstellung vernichtet. Die Unterscheidung in uni- bzw. bidirektional ist aber afaik nicht davon abhängig. So, hoffe, das ist richtig, sonst falle ich bei der Prüfung auf die Nase :mrgreen: |
Re: assoziationen zwischen objekten
Zitat:
wie createt man jetzt ReifenLinksHinten, ReifenRechtsHinten und Auto? |
Re: assoziationen zwischen objekten
Zitat:
Zitat:
|
Re: assoziationen zwischen objekten
@BUG & mkinzler danke für die antoworten.
Delphi-Quellcode:
ist es richtig so?
Auto.Create;
Auto.ReifenLinksVorne.Create; Auto.ReifenRechtsVorne.Create; Auto.ReifenLinksHinten.Create; Auto.ReifenRechtsHinten.Create; |
Re: assoziationen zwischen objekten
Zitat:
Delphi-Quellcode:
Cheers,
Auto.Create;
Auto.ReifenLinksVorne := TReifen.Create; ... Auto.ReserveRad := TReifen.Create; |
Re: assoziationen zwischen objekten
Nein.
Delphi-Quellcode:
type
TAuto = class (Fahrzeug) ... constructor Create; destructor Destroy; ... end; constructor TAuto.Create; begin inherited; ReifenLinksVorne := TReifen.Create; ReifenRechtsVorne := TReifen.Create; ... end; destructor TAuto.Destroy; begin ReifenLinksVorne.Free; ... inherited; end: ... var Auto: TAuto; ... Auto := TAuto.Create; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz