AGB  ·  Datenschutz  ·  Impressum  







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

function->tfunction

Ein Thema von vsilverlord · begonnen am 1. Nov 2009 · letzter Beitrag vom 8. Nov 2009
Antwort Antwort
Benutzerbild von sx2008
sx2008

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

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
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 03:59 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