AGB  ·  Datenschutz  ·  Impressum  







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

Durchreichen von Const- / Destruktoren

Ein Thema von Highttower · begonnen am 22. Jun 2009 · letzter Beitrag vom 22. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#1

Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 09:08
Hallo zusammen,

ich habe folgende Struktur:

Konkrete Klasse ---erbt von--> Abstrakte Klasse --erbt von--> konkreter Klasse --erbt von--> konkreter Klasse --erbt von--> TComponent

mein Problem ist das ich gerne aus der ersten Klasse den Constructor aus der vorletzen rufen würde in Java würde ich das so machen:

Code:
Super.Super.Super();
Gibt es ein ähnliches Construkt auch für Delphi.... ich würds ja gern mit inherited machen aber da ist das Problem das ich ja nicht gleichzeitig eine Methode überschreiben und virtualisiern kann.

Wäre super nett wenn mir hier jemand helfen könnte.

Tobi
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 09:09
Versuch mal (self as <Klasse>).<Methode>();
Markus Kinzler
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 09:33
Hallo,
vielen Dank aber so wird da kein Schuh draus, weil ich bekomme damit ne Endlosschleife:

Delphi-Quellcode:
constructor TMeineKlasse.Create;
begin
    ...
    (Self as TMeineKonkreteKlasse).Create; // endloss schleife
    ...
end;
Hier noch mal meine Hierarchie:

TMeineKlasse -erbt von-> TAbstrakteKlasse -erbt von-> TMeineKonkreteKlasse -> TMeineUeberKlasse -> TComponent

Gruß,
Tobi
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 09:38
Zitat von Highttower:
Code:
Super.Super.Super();
Das riecht für mich danach, dass deine Klassenhierarchie falsch aufgebaut ist. Wenn du C abgeleitet von B abgeleitet von A hast und eine Routine C.Test A.Test, aber nicht B.Test aufrufen will, dann ist IMHO C besser nicht als Ableitung von B modelliert. Vielleicht du kannst B in B1 und B2 aufspalten und hast
Code:
'  A
    |
    B1
    /\
   /  \
  B2   C
Oder sowas in der Art.

HTH, Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 09:51
Wenn deine Methoden nicht virtuell sind, würde es so gehen:
  <Klasse>(self).<Methode>; Und im Falle des Konstruktors sogar direkt (Klasse.Create) Edit: Quatsch, damit erstellt man ja eine neue Klasse.

Aber, wie Uli schon schrieb. Das ist nicht im Sinne von OOP (vielleicht ist es auch deswegen in Delphi nicht wirklich vorgesehen).
Da ist irgendetwas an deinem Konzept falsch.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 10:08
Das Problem ist das ich eine konkrete Klasse dann eine DLL-Schnittstelle (Abstrakte Klasse) eine DLL (Konkrete Klasse) habe die eine Komponente beinhaltet ... und wenn ich diese Komponente irgendwo hinsetzen will muss ich vorher den Konstruktor rufen.
In mir ich wäre ja wunderbar happy wenn ich irgendwie in der Abstrakten Klasse die Methode der DLL rufen könnte und dann an die Konkrete weiter leiten. Ich hab versucht das einfach zu halten aber hier noch mal der ganze Komplizierte Aufbau:

Code:
Ein ganz normales Projekt mit einer Konkreten Klasse
                      |
                      V
Ein Interface als Schnittstelle für eine DLL
                      |
                      V
Ein InterfaceObject mit einer Abstrakte Klasse(s.u.) als Member
                      |
                      V
Eine Unit die eine Abstrakte Klasse darstellt um als Schnittstelle zur DLL
                      |
                      V
Eine DLL die eine konkrette Klasse als abstrakte "getarnt" zurück gibt
                      |
                      V
Eine Visuele-Komponente die ich im Endeffekt oben einbinden will
Das ganze mache ich weil es von der visuellen Komponente verschiedene gibt die ich je nach dem was da ist oben im Projekt nutzen will. Das Problem ist wenn ich jetzt in der Dll ganz unten inherited in Create rufe dann rufe ich ja nicht das Create, aus der Visuellen Komponente, sondern das Create aus der Abstrakten Klasse.
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 10:27
Ähm, dein Text ist etwas durcheinander und deswegen unlesbar
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 10:35
Zitat von Highttower:
Das Problem ist das ich eine konkrete Klasse dann eine DLL-Schnittstelle (Abstrakte Klasse) eine DLL (Konkrete Klasse) habe die eine Komponente beinhaltet ... und wenn ich diese Komponente irgendwo hinsetzen will muss ich vorher den Konstruktor rufen.
Das Problem ist das ich eine konkrete Klasse, dann eine DLL-Schnittstelle (Abstrakte Klasse) und dann eine DLL (Konkrete Klasse) habe die eine Komponente beinhaltet. Wenn ich diese Komponente irgendwo hinsetzen will muss ich vorher genau diesen Konstruktor rufen.
Zitat von Highttower:
In mir ich wäre ja wunderbar happy wenn ich irgendwie in der Abstrakten Klasse die Methode der DLL rufen könnte und dann an die Konkrete weiter leiten.
Ich es würde mir völlig reichen, wenn ich in einer Abstrakten Klasse, einen Wrapper um den De bzw Consturctor schreiben könnte, um diese durchzureichen.

Zitat von Highttower:
Ich hab versucht das einfach zu halten aber hier noch mal der ganze komplizierte Aufbau:

Code:
Ein ganz normales Projekt mit einer Konkreten Klasse
                      |
                      V
Ein Interface als Schnittstelle für eine DLL
                      |
                      V
Ein InterfaceObject mit einer Abstrakte Klasse(s.u.) als Member
                      |
                      V
Eine Unit die eine Abstrakte Klasse darstellt um als Schnittstelle zur DLL
                      |
                      V
Eine DLL die eine konkrette Klasse als abstrakte "getarnt" zurück gibt
                      |
                      V
Eine Visuele-Komponente die ich im Endeffekt oben einbinden will
Das find ich ziemlich verständlich .
Zitat von Highttower:
Das ganze mache ich weil es von der visuellen Komponente verschiedene gibt die ich je nach dem was da ist oben im Projekt nutzen will. Das Problem ist wenn ich jetzt in der Dll ganz unten inherited in Create rufe dann rufe ich ja nicht das Create, aus der Visuellen Komponente, sondern das Create aus der Abstrakten Klasse.
Das ganze mache ich, weil es von der visuellen Komponente verschiedene gibt. Jene möchte ich je nach Verfügbarkeit im Projekt(ganz oben in der Hierarchie) nutzen.

Das Problem ist: Wenn ich jetzt in der Dll ganz unten inherited in Create rufe, dann rufe ich ja nicht das Create aus der Visuellen Komponente, sondern das Create aus der Abstrakten Klasse.


So ich hoffe jetzt ist es verständlicher =)

Gruß,

Tobi
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 11:39
Ich könnte mich irren, aber zumindes in den älteren Versionen kann man doch keine abstrakten Klassen, sondern nur abstrakte Methoden deklarieren, bzw. man kann abstrakte Kalssen trotzdem erstellen.
D.h. es dürfte doch kein Problem sein, in der abstrakten Klasse den Konstruktor und den Destruktor zu implementieren und inherited aufzurufen, oder?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Durchreichen von Const- / Destruktoren

  Alt 22. Jun 2009, 11:41
Zitat:
Das Problem ist: Wenn ich jetzt in der Dll ganz unten inherited in Create rufe, dann rufe ich ja nicht das Create aus der Visuellen Komponente, sondern das Create aus der Abstrakten Klasse.
Und wenn diese keinen hat, den seiner Superklasse
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 05:50 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