AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Funktion in übergeordneter Klasse aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion in übergeordneter Klasse aufrufen

Ein Thema von Andreas H. · begonnen am 3. Mär 2006 · letzter Beitrag vom 4. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#1

Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:00
Hallo,

Ich habe eine Klasse geschrieben, die unter Anderem eine Liste von Objekten verwaltet. Aus diesen Objekten heraus möchte ich eine Funktion der Elternklasse aufrufen.

Gibts da ne Möglichkeit?


Gruß Andreas
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:05
Wenn du diese Klasse von der anderen Klasse abgeleitet hast, solltest du doch problemlos einfach die Methode aufrufen können. Schonmal probiert?

//Edit: Das ist ja unter anderem der Sinn von Vererbung
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:11
Zitat von leddl:
Wenn du diese Klasse von der anderen Klasse abgeleitet hast, solltest du doch problemlos einfach die Methode aufrufen können. Schonmal probiert?

//Edit: Das ist ja unter anderem der Sinn von Vererbung
Er hat nix davon gesagt, dass er tatasächlich alle Klassen von einem Vorfahren abgeleitet hat.(Eltern, Vorfahre & Co werden nur zu oft falsch benutzt... )
Ich denke es ist eher wie das hier, somit gibt's auch kein Bienchen für's Suchen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:15
Ah OK, dann hab ich "Elternklasse" wohl falsch interpretiert. Nach deiner Erklärung erkenne ich auch den anderen möglichen Aspekt der Frage
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:20
Hallo,

nee, nicht abgeleitet. Elvis hat recht.
Es sind zwei unabhängige Klassen. Die eine Klasse (oben übergeordnet genannt) speichert eine Liste mit Instanzen der zweiten Klasse. Aus der zweiten Klasse heraus möchte ich eine Funktion der ersten Klasse aufrufen.

Ich hoffe, ich habe mich jetzt klarer ausgedrückt.

Den Artikel kenne ich! Habs leider nicht verstanden.


Gruß Andreas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:24
ok, so würde es funktionieren
Delphi-Quellcode:
type
  TElternKlasse = class(TObject)
  private
    fList: TList; //Liste mit den Instane von TKindKlasse
    procedure FCreateKind;
[...]
  TKindKlasse = class(TObject)
  private
    fParent: TElternKlasse;
  public
    constructor Create(AElternKlasse: TElternKlasse);
  end;
[...]
procedure TElternKlasse.FCreateKind;
var LKind: TKindKlasse;
begin
  //Das Kind erzeugen und als Parameter den Parent (Self = Elternklasse) mitgeben
  LKind := TKindKlasse.Create(Self);
  //Kind in Liste einfügen
  fList.Add(LKind);
end;
[...]
constructor TKindKlasse.Create(AElternKlasse: TElternKlasse);
begin
  inherited Create;
  fParent := AElternKlasse;
  //Ab jetzt kannst du über "fParent" auf den Parent (Elternklasse) zugreifen
end;
[...]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:36
OK, habs verstanden.
Dem Konstruktor der Kind-Klasse wird ein Zeiger auf die Elternklasse mitgegeben, über den dann auf die Elternklasse zugegriffen werden kann. Gar nicht so schwer - wenn man weiss, wie's geht

Danke!

Gruß Andreas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 18:43
genau, korrekter Weise heißt es aber nicht "einen Zeiger auf die Elternklasse" sondern "einen Zeiger auf die Elterninstanz". Aber das ist nur Krümelkacken, habs bestimmt auch schon irgendwo falsch geschrieben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 19:01
Ja, war auch so gemeint.

Noch ne kleine Frage:
Ich habe beide Klassen in verschiedenen Units programmiert. Die Unit der Kind-Klasse muss natürlich in der Uses-Klausel der Unit mit der Elternklasse erscheinen. Da ich in der Kindklasse die Elternklasse benötige, bekomme ich eine zirkuläre Unit-Referenz.
Wie komme ich da raus?

Gruß Andreas
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: Funktion in übergeordneter Klasse aufrufen

  Alt 3. Mär 2006, 19:08
bei einem von beiden muss die Uses-Klausel dann in den implementation-Teil...allerdings kannst du dann die Klassendeklaration nicht mehr verwenden

ich glaube du kannst eine Art "Vordeklaration" machen, indem nur nur bekanntgibst, das es so eine Klasse gibt (type Elternklasse = class ohne eine richtige Deklaration, und dann die wirkliche Deklaration erst im implementation-Teil via uses includes....

bin mir aber nicht sicher...
»Unlösbare Probleme sind in der Regel schwierig...«
  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 23:39 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