Thema: Delphi Problem mit Property

Einzelnen Beitrag anzeigen

FabianClassen

Registriert seit: 8. Apr 2009
Ort: Schleiden
57 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Property

  Alt 13. Apr 2009, 10:49
Hi
ich wollte mich heute etwas mehr mit der OOP in Delphi auseinander setzen.
Ich selbst kann schon C++ und Java und dadurch dürfte das eigentlich kein Problem sein.
...
Nun sind mir die Propertys besonders neu ... in C++ und Java muss ich ja mit Gettern und Settern arbeiten.
Naja Propertys scheinen mir da auch nicht groß was anderes zu sein ... quasi ein Konstrukt, was automatisch erkennt, ob der Getter oder der Setter aufgerufen werden soll.

Nun habe ich folgende winzige Klasse entwickelt um mir das Prinzip der Propertys vor Augen zu führen ... aber ich erhalte eine komische mir noch nicht ganz klare Ausgabe:


Ford Focus
200
Ford Focus
320


Hier ist mein Delphi Code ... Mir ist bewusst das ich vll die Klasse besser in eine andere Unit ausgelagert hätte ... aber zu Übungszwecken reichts ja

Delphi-Quellcode:
program Klassentest_Projekt;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAuto = class
    private
      FGeschw: Integer;
      FName: string;
      function GetGeschw: Integer;
      procedure SetGeschw(Value: Integer);
      function GetName: string;
      procedure SetName(Value: string);
    public
      property Geschwindigkeit: Integer read GetGeschw write SetGeschw;
      property Name: string read GetName write SetName;
      constructor Create(Name: string);
  end;

function TAuto.GetGeschw: Integer;
begin
  Result := FGeschw;
end;

procedure TAuto.SetGeschw(Value: Integer);
begin
  FGeschw := Value
end;

function TAuto.GetName: string;
begin
  Result := FName;
end;

procedure TAuto.SetName(Value: string);
begin
  FName := Name;
end;

constructor TAuto.Create(Name: string);
begin
  FName := Name;
end;

var
  Auto: TAuto;

begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }
  Auto := TAuto.Create('Ford Focus');
  Writeln(Auto.Name);
  Auto.Geschwindigkeit := 200;
  Writeln(Auto.Geschwindigkeit);
  Auto.Name := 'Porsche Turbo';
  Auto.Geschwindigkeit := 320;
  Writeln(Auto.Name);
  Writeln(Auto.Geschwindigkeit);
  Readln;
end.
Wieso kommt da nun so eine komische Ausgabe.
Ich habe doch den Namen des Autos auf 'Porsche Turbo' gestellt.
Hängt das vll irgendwie mit dem constructor zusammen.
Anders kann ich mir das nicht vorstellen.

Ich hoffe ihr könnt mir helfen ... na klar könnt ihr das ist bestimmt nur irgendein dummer Fehler
Danke schonmal im vorraus.

MFG
FC
Fabian Claßen
Eins habe ich erkannt - ich werde immer Schüler bleiben, ein Leben lang
  Mit Zitat antworten Zitat