Nehmen wir mal folgende Klassen oder sind es Objekte als Diskussionsgrundlage:
Klasse / Objekt 1:
Delphi-Quellcode:
type TFooClass = class
private
FFooCaption : String;
procedure SetFooCaption;
funktion GetFooCaption: String;
procedure FooCaptionPlusSr;
public
constructor create;
end;
procedure TFooClass.create;
begin
SetFooCaption;
end;
procedure TFooClass.SetFooCaption;
begin
FFooCaption := 'Hello';
end;
function TFooCaption.GetFooCaption: String;
begin
result := FFooCaption;
end;
procedure TFooClass.FooCaptionPlusStr;
begin
FFoocaption := FFooCaption+', world';
end;
Variante 2:
Delphi-Quellcode:
type TFooClass = Class
private
FFooCaption: String;
procedure FooCaptionPlusSr;
public
constructor create;
end;
constructor TFooClass.Create;
begin
FFooCaption := 'Hello';
end;
procedure TFooClass.FooCaptionPlusStr;
begin
FFoocaption := FFooCaption+', world';
end;
So, der Unterschied sollte klar sein. Mit Variante eins kann ich über Methoden auf die Membervariable FFooCaption zugreifen. Aber man kann ja auch so drauf zugreifen:
Delphi-Quellcode:
var
FooClass: TFooClass;
s : String;
begin
FooClass := TFooClass.Create;
...;
...;
s := FooClass.FFooCaption;
Jetzt stellt sich mir die Frage wie macht man es richtig oder sollte man es machen? Immer über Methoden auf die Membervariablen zu greifen oder geht es auch direkt, wie in Beispiel 2? Bitte mit Begründung antworten, sonst nützt es mir nicht viel.
Noch was. Wann müssen / sollen Methoden, Membervariablen unter
public deklariert werden?