AGB  ·  Datenschutz  ·  Impressum  







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

Beispiel für Polymorphie gesucht

Ein Thema von Luckie · begonnen am 28. Jan 2004 · letzter Beitrag vom 22. Feb 2004
 
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#28

Re: Beispiel für Polymorphie gesucht

  Alt 3. Feb 2004, 10:13
Hallo Luckie,
habe mir gerade mal Deinen Entwurf von der Methode Button1Click angesehen. Was hältst Du davon, wenn Du auch gleich das Schlüsselwort class, also das Konzept der Klassenreferenzen aka Metaklassen einführt (muss ja nicht unbedingt mit virtuellen Konstruktoren sein)? Dann ließe sich Dein Code wesentlich eleganter (<- da haben wir's wieder, Achtung, jetzt keine Tippfehler ) lösen:
Delphi-Quellcode:
type
  TFruitClass = class of TFruit;

function GetFruitClassByInt(const AnInt: Integer): TFruitClass;
begin
  case AnInt of
    0: Result:= TLemon;
    1: Result:= TGrapeFruit;
    2: Result:= TBanana;
  else
    raise EInvalidClassSelector.CreateFmt(..., [AnInt]);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  myFruit: TFruit;
begin
  myFruit:= GetFruitClassByInt(RadioGroup1.ItemIndex).Create;
  try
    ShowMessage(Format('Tastes really %s', [myFruit.GetTaste]);
    if myFruit is TCitrusFruit then
      (MyFruit as TCitrusFruit).Squeeze;
  finally
    myFruit.Free;
  end;
end;
gruß, choose
  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 01: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 by Thomas Breitkreuz