![]() |
Klassen - Deklarationsreihenfolge
ja, also in welcher reihenfolge muss/kann ich die sachen alle deklarieren?
also ich hatte die grundstruktur so überlegt:
Delphi-Quellcode:
aber nun motzt er was von wegen ich dürfte keine variablen (oder felder) NACH methoden deklarieren
type
TRechner = class(TObject) public //Für Alle Sichtbar //Konstruktor / Destruktor function Create:TRechner; procedure Free; //Wert setzen / auslesen procedure SetValue(Value:Double); function GetValue:Double; protected //Nur in Unit und Abgeleiteten Klassen Sichtbar private //Nur in abgeleiteten Klassen sichtbar //Konstruktor / Destruktor constructor CreateMe; destructor FreeMe; //Werte / Variablen DoubleValue :Double; //Double-Wert end;//of TRechner kann ich das umgehen? und nochwas(ich weiss, neue frage neuer thread, trotzdem):
Delphi-Quellcode:
kann ich die konstruktion mit dem setvalue und getvalue durch so eine read/write konstruktion ersetzen?
DoubleValue :Double; //Double-Wert
implementation procedure TRechner.SetValue(Value:Double); begin DoubleValue:=Value; end; function TRechner.GetValue:Double; begin Result:=DoubleValue; end; |
Re: Klassen - Deklarationsreihenfolge
Machs so
Delphi-Quellcode:
Den ganzen anderen Kram brauchst Du nicht. Der Konstruktor ist i.d.R. Public, es sei denn aus irgendeinem Grund soll er nur innerhalb der Unit aufrufbar sein. Free brauchst Du nicht, überschreibt man auch nicht. IdR überschreibt man den destrucotr Destroy, aber nur wenn man was frei zu geben hat - hast Du aber nicht. Die SetValue und GetValue-Funktionen kannst Du mit dem obigen property-Befehl sparen.
type
TRechner = class(TObject) private FDoubleValue: Double; public constructor Create; property DoubleValue: Double read FDoubleValue write FDoubleValue; end; |
Re: Klassen - Deklarationsreihenfolge
Hi,
ich verwende folgende Reihenfolge: private, protected, public, published
Delphi-Quellcode:
So würd ich das machen :)
type
TRechner = class(TObject) private DoubleValue :Double; //Double-Wert //Wert setzen / auslesen procedure SetValue(Value:Double); function GetValue: Double; public property DeinDoubleWert: Double read GetValue write SetValue; // oder: // property DeinDoubleWert: Double read DoubleValue write DoubleValue; constructor Create; // keine Function! destructor Destory; override; // keine Prozedur! end; (Das löst auch Dein zweites Problem ;) ) mfG mirage228 |
Re: Klassen - Deklarationsreihenfolge
noch was:
deine kommentare zu private/protected/public sind fehlerhaft: ALLES (Auch als private deklariert) ist in der Unit sichtbar. Der Unterschied zwischen Protected und Private ist idR der, dass man als Protected deklarierte Methoden in abgeleiteten Klassen überschreiben möchte, während als Private deklarierte Methoden nicht überschreibbar sind. |
Re: Klassen - Deklarationsreihenfolge
hm...
also um problem 1 zu lösen soll ich einfach den public und den private-block vertauschen... ok dann danke für das read/write-statement Zitat:
nur das mit dem destruktor/free habbich noch nicht so ganz gecheckt... Zitat:
und free, destroy, is das nicht dasselbe? also ich benutz immer free zum freigeben... |
Re: Klassen - Deklarationsreihenfolge
Zitat:
Free ruft intern Destroy auf. Dabei wird aber noch überprüft ob Self <> nil, bevor aufgerufen wird. Als Selbst-Klassen-Ersteller solltest Du schön Destroy überschreiben und am Ende Deines Destroys mit inherited den geerbten Konstruktor aufrufen. :) mfG mirage228 |
Re: Klassen - Deklarationsreihenfolge
naja, da ich von TObect erbe kann ich mir das inherited destroy; ja sparen, oder?
THX, ich habs verstanden... eine frage noch: wann ich, wenn ich nur ne unit mit ner typendeklaration drin hab die syntax überprüfen lassen,bzw halt die normale überprüfung? |
Re: Klassen - Deklarationsreihenfolge
Zitat:
Ja, im Prinzip schon, aber wenn Du mal vorhaben solltest das TObject durch etwas anderes zu ersetzen, brauchst Du das inherited nicht mehr zu ergänzen. :) Ich würde es einfach "Aus Gewohnheit" hinmachen. mfG mirage228 |
Re: Klassen - Deklarationsreihenfolge
jup....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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