AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Was bedeutet "class of"

Ein Thema von mytar · begonnen am 29. Aug 2004 · letzter Beitrag vom 29. Aug 2004
 
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.420 Beiträge
 
Delphi 12 Athens
 
#2

Re: class of

  Alt 29. Aug 2004, 16:03
Das wird genutzt, wenn eine Klasse (A) später Objekte (Y, Z) erstellen muss, die von einem bestimmten Typ (X) abgeleitet wurden. Ein kurzes Beispiel:
Delphi-Quellcode:
type
  // das ist Typ X
  TGeometry = class
  public
    function MyName: String; virtual; abstract;
  end;
  TGeometryClass = class of TGeometry;

  // das ist Klasse A
  TGeometryMaker = class
  private
    FCurrentGeometryClass: TGeometryClass;
  public
    function GetNextGeometry: TGeometry;
    property CurrentGeometryClass: TGeometryClass read FCurrentGeometryClass write FCurrentGeometryClass;
  end;

function TGeometryMaker.GetNextGeometry: TGeometry;
begin
  Result := CurrentGeometryClass.Create;
end;

type
  // Typ Y (von X abgeleitet)
  TRectangle = class(TGeometry)
  public
    function MyName: String; override;
  end;

function TRectangle.MyName: String;
begin
  Result := 'na Rechteck!';
end;

type
  // Typ Z (von X abgeleitet)
  TCircle = class(TGeometry)
  public
    function MyName: String; override;
  end;

function TCircle.MyName: String;
begin
  Result := 'Ich bin ein Kreis.';
end;
Jetzt erstellen wir mal ein Form mit einem Button und einem Memo und fügen diesen Code ins Button-OnClick ein:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  Geo: TGeometry;
begin
  // jetzt erstellen wir unsere Klasse, welche uns später objekte vom typ
  // TGeometry zurück liefert
  with TGeometryMaker.Create do
  try
    // als erstes erstellen wir ein rechteck
    CurrentGeometryClass := TRectangle;
    Geo := GetNextGeometry;
    try
      Memo1.Lines.Add(Geo.MyName);
    finally
      Geo.Free;
    end;

    // jetzt noch einen kreis
    CurrentGeometryClass := TCircle;
    Geo := GetNextGeometry;
    try
      Memo1.Lines.Add(Geo.MyName);
    finally
      Geo.Free;
    end;
  finally
    Free;
  end;
end;
Meistens wird diese Methode genutzt, wenn man ein Framework für eine Logik liefern will, aber nicht den Gesamtumfang beschränken will.

......
Lizbeth W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 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