AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Wie Greife ich auf Methode der Vor vor gänger klasse zu ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Greife ich auf Methode der Vor vor gänger klasse zu ?

Ein Thema von Corpsman · begonnen am 19. Okt 2006 · letzter Beitrag vom 20. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

Wie Greife ich auf Methode der Vor vor gänger klasse zu ?

  Alt 19. Okt 2006, 21:56
Hi Leuts,

Habe folgenden Code :

Delphi-Quellcode:
Type
  a = Class
   Procedure d;virtual;
  end;
  b = Class(a)
   Procedure d;override;
  end;
  c = Class(b)
   Procedure d;override;
  end;
und beim Ausprogrammieren mache ich nun

Delphi-Quellcode:
Procedure c.d;
begin
  inherited d;
end;
Die Procedur c.d würde nun b.d aufrufen.

Was aber, wenn ich das nicht will, sondern ich eigentlich a.d aufrufen wollte ohne b.d

bisher muste ich immer her gehen und den Inherited Teil Löschen und den Code von a.d rauskopieren und dann bei c.d einfügen. Aber das mus doch auch besser gehn, oder ?
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 21:58
Ich glaube nicht, dass du die vererbte Methode der vererbten Methode aufrufen kannst. Ich kann mir auch keine Anwendung dafür vorstellen, zumindest hatte ich noch nie eine.

Ein Workaround wäre, die Methode in der a oder in der b anders zu nennen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:00
Ein solches Konstrukt würde auch dem sinn der OOP widersprechen, da hier die Wahrscheinlichkeit groß ist, daß IS_A Beziehung verletzt wird.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:06
Ich habe das andauernd

wer mein Speil Balanced kennt.

Da gibt es sehr ähnliche Elemente. D.h ich habe z.b. einen Stein gemacht der hat 1 bewegliches und mehrere Starre Objecte

nun teilen die sich eine sehr Komplexe Datenstruktur.

und diese Struktur mus ich dann drehen können.

Das Prob ist nu wenn ich nun mehrere solche Objecte hintereinander Ableite und das Letze dann drehen mus wäre es cool wenn das die Rot function der Ursprünglich Klasse aufruft und nicht das der Vorgängerklasse da die dann nicht mehr geht.

Ich habe übrigens schon ne Lösung so ist das nicht, aber die ist etwas zu Kompliziert :

Delphi-Quellcode:
type

  a =Class
  published
    procedure d;virtual;
  end;
 
  b =Class(a)
    procedure d;Override;
  end;
 
  C =Class(b)
  procedure d;Override;
  end;
 
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm} 
 
Procedure A.d;
begin
  showmessage('A');
end;
 
Procedure B.d;
begin
  Showmessage('B');
end;
 
 
 
Procedure C.d;
type TExecute = Procedure of Object;
 
var P : TMethod;
    E : TExecute;
begin
  P.Data := Self;
  P.Code := A.MethodAddress('d');
  if Assigned(P.Code) then
  begin
    try
     E := TExecute(P);
     E; //call method
    except
    end;
  end;
 
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
var aC : C;
begin
  aC := C.Create;
  aC.D;
  halt;
end;
@mkinzler

IN java geht sowas anscheinend Problemlos
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:10
- du könntest es mit (self as <Klasse>).<Methode> versuchen.
Aber wie gesagt stimmt dann das Vererbungsschema nicht, wenn soetwas notwendig wird.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:17
Cool es geht.

THX.

Was die Vererbungsreihenfolge angeht. So bin ich mir da nicht sicher ob das unbedingt falsch sein mus.

Man stelle sich vor.

Ich habe eine Klasse A

Leite die in B ab Erweitere b um sehr viel

Leite B in C ab und will in C alles was b hat auser eben eines speziellen Features das Blöderweise in A ist und aber von B überschrieben wird.

und diese Aktion die ich hier versuche , passiert nur asu der Faulheit B wieder mit altem Code zu überschrieben.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:22
Zitat von mkinzler:
- du könntest es mit (self as <Klasse>).<Methode> versuchen.
Aber wie gesagt stimmt dann das Vererbungsschema nicht, wenn soetwas notwendig wird.
Ich kann mir nicht vorstellen, dass das funktioniert, nämlich aufgrund des Prinzips der dynamischen Methodenbindung.

Der Upcast hilft da IMHO auch nichts. Sollte es doch funktionieren, habe ich wohl bei der Programmieren I-Vorlesung doch zu viel Tetris gespielt.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:26
Es besteht natürlich ein unterschied zwischen Theorie und Praxis.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:31
Das heißt?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Wie Greife ich auf Methode der Vor vor gänger klasse zu

  Alt 19. Okt 2006, 22:37
Zitat von 3_of_8:
Das heißt?
Das bezog sich auf #6:
Ein Klassenschema, daß der reinen Theroie widerspricht kann in der Praxis u.U. trotzdem bestehen.
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 07:40 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