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.