Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Referenz auf den Erzeuger... [erledigt] (https://www.delphipraxis.net/103850-referenz-auf-den-erzeuger-%5Berledigt%5D.html)

Bomberbb 22. Nov 2007 17:34


Referenz auf den Erzeuger... [erledigt]
 
Hallo,

ich übe mich an der oop unter Delphi. Nun habe ich ein Problem. Ich will in Objekte den Erzeuger speichern. Momentan mache ich das so, wie in dem Mustercode hier:
Delphi-Quellcode:
tVater = Class
  Protected
    Soehne : tObjectList;
  Private
  Public
    Name:String;
    constructor Create(einName:String);
    function Geburt: tSohn;
  End;
 
tSohn = Class
  Protected
    Vater:tVater:
  Private
  Public
    constructor Create(einVater : tVater);
    Function GetVater: tVater;
  End;
 
constructor tVater.Create(einName:String);
Begin
  Name:=EinName;
End;
 
function tVater.Geburt: tSohn;
Begin
  Result:=tSohn.Create(self);
End;

constructor tSohn.Create(einVater : tVater);
Begin
  Vater:=einVater;
End;
   
Function tSohn.GetVater: tVater;
Begin
  Result:=Vater;
end;



   Vater:=tVater.Create;
   Sohn:=Vater.Geburt;
   showmessage(Sohn.GetVater.Name);

Meine Frage ist, kann ich das ganze auch als Referenz machen???
Ich hab die Befürchtung, dass ich zu viel Speicher belege. Denn in meinem Beispiel ist die Klasse Vater sehr groß und die Objekte
vom typ tSohn sehr zahlreich. Und wenn ich nun in jedem Sohn den Vater in Wertsemantik vorhalte...

Ich hoffe, ich hab nach einem langen Arbeitstag mein Problem noch deutlich Darstellen können.

[edit=sakura] Buchstabendreher im Titel korrigiert. Mfg, sakura[/edit]

Christian Seehase 22. Nov 2007 17:38

Re: Refernez auf den Erzeuger...
 
Moin Bomber,

Zitat:

Zitat von Bomberbb
Meine Frage ist, kann ich das ganze auch als Referenz machen???

Du übergibst ja nur die Referenz.

Bomberbb 22. Nov 2007 17:49

Re: Refernez auf den Erzeuger...
 
Da hakts bei mir noch ein wenig...

ich habe doch in tSohn eine Eigenschaft von Typ tVater.
Das heißt doch dass jeder Sohn ein Objekt vom Typ tVater enthält?
Müsste das, wenn ich das als Referenz machen will, nicht ein Object vom typ ^tVater sein?

Christian Seehase 22. Nov 2007 18:06

Re: Refernez auf den Erzeuger...
 
Moin Bomber,

nehmen wir mal ein Beispiel:

Delphi-Quellcode:
var
  LVater : TVater;

begin
  LVater := TVater.Create;
  //...
end;
nach dem Create enthält LVater eine Referenz auf das erzeugte Objekt.
Objekte sind immer Pointer (Zeiger) auf die Instanz einer Klasse.
Durch Compilermagic kann man sich aber bei Zugriffen das explizite Dereferenzieren sparen.

Bomberbb 22. Nov 2007 18:16

Re: Refernez auf den Erzeuger...
 
Ich glaube ich habs so weit verstanden. Hoffe ich... Ich programmiere nun schon einige Zeit mit Delphi aber so mir diesen Geschichten haperts halt noch ein wenig... Refrenz, @object, ^object, pchar(object)... weiß ich auch nicht immer so... Gibt es da was im Netz, wo man das ganze mal nachlesen kann???

Bomberbb 23. Nov 2007 09:00

Re: Refernez auf den Erzeuger...
 
Hab mir das nochmal durch den Kopf gehen lassen (nach dem Ausschlafen).

Ist das richtig, wenn ich unter Delphi behaupte Objekte werden als Verweise verwaltet und Basistypen als Werte???
Wenn ja, dann wären mir nun schon so ein oder zwei Lichter aufgegangen...

mkinzler 23. Nov 2007 09:21

Re: Refernez auf den Erzeuger...
 
Ja die (Objekt-)Variablen sind Referenzen (Zeiger) auf die Objekte.

Bomberbb 23. Nov 2007 09:32

Re: Referenz auf den Erzeuger...
 
Besten Dank!!!

nun versethe ich auch einige andere Problematiken...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz