AGB  ·  Datenschutz  ·  Impressum  







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

zugriff auf Unterklassen

Ein Thema von cetinbiryoldayim · begonnen am 6. Mai 2008 · letzter Beitrag vom 6. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
cetinbiryoldayim

Registriert seit: 6. Mai 2008
33 Beiträge
 
#1

zugriff auf Unterklassen

  Alt 6. Mai 2008, 18:51
ich habe zuvor über eine verwandte Frage ein Thema erstellt gehabt und Antwort bekommen (siehe http://forum.delphi-treff.de/showthread.php?t=23607)

aber ich habe jetzt ein ähnliches Programm untersucht (von meinem Lehrer)
und habe gesehn, dass es bei diesem Programm geht
die klasse Steuerung kann hier einfach dieFunktion.Destroy() aufrufen

warum kann man das jetzt?
(ich könnte auch den vollständige Programmcode senden, ist halt etwas lang)

Delphi-Quellcode:
type TFkt_Typ = (GERADE, PARABEL, SINUS);
 
type
  TSteuerung = class;
 
  TF_Main = class(TForm)
    RG_fkt_typ: TRadioGroup;
    R_gerade: TRadioButton;
    r_parabel: TRadioButton;
    r_sinus: TRadioButton;
    E_a: TEdit;
    E_b: TEdit;
    E_c: TEdit;
    E_min: TEdit;
    E_max: TEdit;
    L_a: TLabel;
    L_b: TLabel;
    L_c: TLabel;
    L_min: TLabel;
    L_max: TLabel;
    B_berechne: TButton;
    B_ende: TButton;
    E_flaeche: TEdit;
    L_Flaeche: TLabel;
    procedure B_endeClick(Sender: TObject);
    procedure B_berechneClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  strict private
    dieSteuerung: TSteuerung;
    function getFloatFromEdit(Edit: TEdit; error_msg: String): real;
  public
    procedure zeigeErgebnis(flaeche: real);
    function gibFunktionsTyp(): TFkt_Typ;
    function gibXMin(): real;
    function gibXMax(): real;
    function gibParA(): real;
    function gibParB(): real;
    function gibParC(): real;
  end;
 
  TSteuerung = class
    strict private
      dieOberflaeche: TF_Main;
      dieFunktion: TFunktion;
      procedure ermittleFlaeche();
    public
      constructor erzeugeSteuerung(myForm: TF_Main);
      procedure tastaturEreignis();
      procedure beendeProgramm();
  end;
 
type TFunktion = class abstract
  strict protected
    a: real;
    b: real;
    c: real;
    xMin: real;
    xMax: real;
  strict protected
    function berechneFunktionswert(x: real): real; virtual; abstract;
  strict private
    function berechneFlaeche(n: cardinal): real;
  public
    function berechneFlaeche2(epsilon: real): real;
    procedure setzeParameter(pa: real; pb: real; pc: real);
    procedure setzeGrenzen(min: real; max: real);
end;
 
type TGerade = class(TFunktion)
  strict protected
    function berechneFunktionswert(x: real): real; override;
end;
 
type TParabel = class(TFunktion)
  strict protected
    function berechneFunktionswert(x: real): real; override;
end;
 
type TSinus = class(TFunktion)
  strict protected
    function berechneFunktionswert(x: real): real; override;
end;
 
 
 
 
procedure TSteuerung.ermittleFlaeche();
  var fkt_typ : TFkt_Typ;
      a, b, c : real;
      min, max: real;
begin
  fkt_typ := dieOberflaeche.gibFunktionsTyp();
  case fkt_typ of // erzeuge Funktions-Objekt
    GERADE : dieFunktion := TGerade.Create;
    PARABEL: dieFunktion := TParabel.Create;
    SINUS : dieFunktion := TSinus.Create;
  end;
  a := dieOberflaeche.gibParA();
  b := dieOberflaeche.gibParB();
  if fkt_typ <> GERADE then
    c := dieOberflaeche.gibParC()
  else
    c := 0;
  min := dieOberflaeche.gibXMin();
  max := dieOberflaeche.gibXMax();
  dieFunktion.setzeParameter(a, b, c);
  dieFunktion.setzeGrenzen(min, max);
  dieOberflaeche.zeigeErgebnis(dieFunktion.berechneFlaeche2(0.0000001));
  dieFunktion.Destroy; // ??????????????????????????????
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 18:58
Da ist ja auch noch die abstrakte Klasse TFunktion "dazwischengeschaltet".
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
cetinbiryoldayim

Registriert seit: 6. Mai 2008
33 Beiträge
 
#3

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 19:01
aber das hat doch keinen Einfluss auf den Aufruf des Destruktors (dieFunktion.Destroy)
oder?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 19:03
Wie erwähnt, sollte man Destroy nie direkt aufrufen, sondern .Free
Markus Kinzler
  Mit Zitat antworten Zitat
cetinbiryoldayim

Registriert seit: 6. Mai 2008
33 Beiträge
 
#5

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 19:06
ja das hab ich verstanden
das Problem ist nur, dass es vorhin mit einem direkten Aufruf nicht geklappt hat, wobei es im Programm meines Lehers funktioniert.
woran das liegt, das habe ich nicht vertanden..
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 19:10
Jede Klasse, bei der der Vorfahr nicht anders angegeben ist, erbt automatisch von TObject. Beim Aufruf von Destroy wird also der destruktor Destroy von TObject ausgeführt. Sollte ich etwas übersehen oder falsch dargestellt haben, korrigiere man mich bitte.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
cetinbiryoldayim

Registriert seit: 6. Mai 2008
33 Beiträge
 
#7

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 19:21
könntest du dann auch sagen, warum es im anderen Programm nicht ging? warum hat er dann dort nicht den Standartdestruktor erkannt? er müsste ihn doch geerbt haben von TObject..
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 19:25
Vielleicht wegen den Klammern?
Markus Kinzler
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 20:08
Zitat von DeddyH:
Jede Klasse, bei der der Vorfahr nicht anders angegeben ist, erbt automatisch von TObject. Beim Aufruf von Destroy wird also der destruktor Destroy von TObject ausgeführt. Sollte ich etwas übersehen oder falsch dargestellt haben, korrigiere man mich bitte.
Hmm, jetzt verwirr mich nicht. Es wird doch immer die zuletzt überrittene Methode genommen. Also auch beim destructor
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: zugriff auf Unterklassen

  Alt 6. Mai 2008, 20:09
In diesem Fall hat der Vorfahr aber auch keine eigenen Destruktor
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:43 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