AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abstrakte Methode und optionale Parameter
Thema durchsuchen
Ansicht
Themen-Optionen

Abstrakte Methode und optionale Parameter

Ein Thema von Dummbatz · begonnen am 17. Okt 2006 · letzter Beitrag vom 17. Okt 2006
Antwort Antwort
Dummbatz

Registriert seit: 11. Mär 2003
Ort: Wehr
14 Beiträge
 
Delphi 6 Enterprise
 
#1

Abstrakte Methode und optionale Parameter

  Alt 17. Okt 2006, 14:51
Hallo zusammen!

ich hab gerade ein interessantes Problem mit abstrakten Methoden. Ich kann es mir erklären aber ich finde keine Lösung.
Vielleicht kann mir jemand helfen:

Delphi-Quellcode:
unit UTypes;

interface

type
  TMyType = (mtAnton, mtBerta, mtCaesar);

  TBasis = class
    function GetMyType(AMyType: TMyType = mtAnton): string; virtual; abstract;
  end;

  TBerta = class(TBasis)
    function GetMyType(AMyType: TMyType = mtBerta): string; override;
  end;

implementation

function TBerta.GetMyType(AMyType: TMyType = mtBerta): string;
begin

  case AMyType of
    mtAnton: result := 'Anton';
    mtBerta: result := 'Berta';
    mtCaesar: result := 'Cäsar';
  end;

end;

end.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  locObj: TBasis;
begin

  locObj := TBerta.Create;
  ShowMessage(locObj.GetMyType);
  locObj.Free;

end;
Ein Klick auf Button1 liefert mir "Anton".
Wäre locObj vom Typ TBerta bekäme ich "Berta".
Das ist soweit klar!

Jetzt bekomme ich locObj als Rückgabe einer Methode zurück. Es kann ein beliebiger Typ sein, der als Basisklasse TBasis hat, also ein TBerta, TCaesar und wie sie alle heissen.
Ich will bzw. MUSS aber trotzdem bei einem TBerta "Berta" bekommen wenn ich locObj.GetMyType aufrufe.

Wie kann ich das anstellen?

MfG Thomas.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Abstrakte Methode und optionale Parameter

  Alt 17. Okt 2006, 14:58
Das Ändern von Standard-Werten halte ich für keine gute Idee (weil es einfach kein wirklicher Teil der Polymorphie ist), aber an einem abstrakten Beispiel wie diesem kann ich keine Alternative vorschlagen. Umgehen könntest du jedenfalls die Problematik durch Aufteilen der Methode:
Delphi-Quellcode:
function GetMyType: ...
function GetMyType(aMyType: TMyType): ...
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Abstrakte Methode und optionale Parameter

  Alt 17. Okt 2006, 15:04
Delphi-Quellcode:


function TBerta.GetMyType: string;
  result := ClassType.ClassName;
end;
d.
Würde dir als Ergebnis den string "TBerta" zurückliefern.

MfG

Kolbaschedder
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz