Thema: Delphi function->tfunction

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

Re: function->tfunction

  Alt 1. Nov 2009, 14:14
Zitat von vsilverlord:
ach ja, was ich noch sagen wollte: bitte sagt mir nicht, dass das blöde ist, und dass das viel zu umständlich ist; ich hab das total durchgedacht, so ist der beste Weg!
Du kennst wahrscheinlich das Strategie-Design-Pattern noch nicht.
Anstelle eines Funktionszeigers wird ein Objekt einer Klasse übergeben.
Das eröffnet völlig neue Möglichkeiten.

Angenommen du möchtest einer Funktionsplotter schreiben und die Funktionen dynamisch übergeben.
Wenn du aber eine ganze Kurvenschar anzeigen möchtest ergibt sich ein Problem:
Für jede Funktion muss ein anderer Funktionszeiger übergeben werden.
Delphi-Quellcode:
TMatheFunktion = class(TObject) // allgemeine Basisklasse
public
  function CalcY(x:extended):extended;virtual;abstract;
end;

TSinusFunktion = class(TMatheFunktion)
public
  Omega : extended;
  Phi : extended;
  function CalcY(x:extended):extended;override;
  constructor Create;
end;

function TSinusFunktion.CalcY(x:extended):extended;
begin
  Result := sin(Omega*x + Phi);
end;

constructor Create;
begin
  inherited;
  Omega := 1.0; Phi := 0.0; // defaultwerte setzen
end;
Man könnte jetzt z.B. 5 Objekte der Klasse TSinusFunktion erzeugen, wobei jedes Objekt andere Werte
für Omega und Phi hat.
Diese Objekte übergibt man dem Funktionsplotter der dann alle X-Werte von -10 bis +10 durchläuft
und den Y-Wert durch Aufruf der CalcY()-Funktion für jedes der Objekte ermittelt.
Dadurch erhält man 5 verschiedene Kurven.
fork me on Github
  Mit Zitat antworten Zitat