Einzelnen Beitrag anzeigen

Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

Wozu CREATE zur Instantiirung eigener Objektklassen?

  Alt 13. Nov 2006, 18:47
Hallo, mal wieder eine Ober-Dummie-Frage

Ich erzeuge mir eine eigene Klasse im Type-Abschnitt meines Programmes und erzeuge mir im var-Abschnitt eine konkrete Instanzen (meinKreis1, meinKreis2) davon. Dann habe ich mit diesen Instanzen einfach "drauf los-" programmiert. Das ging auch.

so sieht es immer bei mir aus:
Delphi-Quellcode:

// ein UnitCode zur Klassenerzeugung

Unit Kreis;

interface

type TCycle = Class(TObject);
  private
    F_Radius : single;
    function getPeriph : single;
    procedure setPeriph(periph : single);
  public
    property radius : single read F_Radius write F_Radius;
    property umfang : single read getPeriph write setPeriph;
  end;

implementation

function TCycle.getPeriph;
begin
  result := 2*Pi*F_Radius;
end;

procedure TCycle.setPeriph(periph:single);
begin
  F_Radius := periph / 2 / Pi;
end;

//..............................................
//...
// Implementationsteil des Anwendercodes:
//...

uses kreis;

var
  meinKreis1, meinKreis2 : TCycle;

procedure TForm1.FormCreate(Sender:TObject);
begin
  // bei mir wird hier nichts mit meinKreis1 und meinKreis2 gemacht
  // Im Implement.-Teil werden diese Instanzen einfach nur benutzt.

end;
...

Aber wozu ist denn die Create-Methode nötig, die vor meinem Drauf-Los-Programmieren mit den konkreten Instanzen meinKreis1, meinKreis2 aufgerrufen wird (Laut Literatur):

Delphi-Quellcode:

// ein UnitCode zur Klassenerzeugung

Unit Kreis;

interface

type TCycle = Class(TObject);
  private
    F_Radius : single;
    function getPeriph : single;
    procedure setPeriph(periph : single);
  public
    property radius : single read F_Radius write F_Radius;
    property umfang : single read getPeriph write setPeriph;
  end;

implementation

function TCycle.getPeriph;
begin
  result := 2*Pi*F_Radius;
end;

procedure TCycle.setPeriph(periph:single);
begin
  F_Radius := periph / 2 / Pi;
end;

//...............................................
//...
// Implementationsteil des Anwendercodes:
//...

uses kreis;

var
  meinKreis1, meinKreis2 : TCycle;

procedure TForm1.FormCreate(Sender:TObject);
begin
  meinKreis1 := TCycle.Create // und dieses ist meine Frage
  meinKreis2 := TCycle.Create // wozu?, was ist der Unterschied zu meinem obigen..?
end;
...

Und noch eine Frage:
Wo landet der Sender:TObject ?
immer nur stillschweigend verwendet aber nie gewußt warum?


Danke, Danke E. B.
  Mit Zitat antworten Zitat