Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi abstrakte Methoden ignorieren (https://www.delphipraxis.net/128482-abstrakte-methoden-ignorieren.html)

himitsu 30. Jan 2009 15:17


abstrakte Methoden ignorieren
 
tachchen, :hi:

also, ich hab da 'ne gößten Teils abstrakte Basisklasse mit einigen Ableitungen,
allerdings werden da nicht immer alle vordefinierten/abstrakten Prozeduren genutzt/überschrieben
und bleiben demnach abstrakt ... was eigentlich nicht schlimm ist, da diese nicht verwendet werden,
allerdings meckert Delphi leider rum (über 800 Warnungnen sind schon etwas nervend) :cry:
Zitat:

[DCC Warnung] xxx.dpr(25): W1020 Instanz von 'Txxx' mit der abstrakten Methode 'Txxx.xxx' wird angelegt
sooo, und nun die Frage:
kann man diese Meldung, nur bei den entsprechenden Klassen, werglassen,
oder wäre es besser in der Basisklasse diese sinnlose Weise doch nicht als abstrakt zu definieren?

:angel:

mkinzler 30. Jan 2009 15:20

Re: abstrakte Methoden ignorieren
 
Ist ja nur eine Warnung. Und duie stimmt ja auch. In anderen Sprachen würde ein Fehler ausgelöst.
Man könnte einfach Stub-Methoden anlegen. Davon würde ich aber Abstand nehmen und mit den Warnungen leben.

Apollonius 30. Jan 2009 15:21

Re: abstrakte Methoden ignorieren
 
Ich würde die Methoden in der Basisklasse nur als virtuell markieren und die Implementierung leer lassen (in Prism gibt es dazu die Direktive empty). Abstrakt bedeutet nun mal, dass die Methode überschrieben werden muss.

himitsu 30. Jan 2009 15:22

Re: abstrakte Methoden ignorieren
 
ich würd sie ja gern ignorieren, aber
Zitat:

über 800 Warnungnen sind schon etwas nervend) :cry: Crying or Very sad
genauer gesagt sind es aktuell 861 Warnungen und dabei bin ich grad erstma bei den Grundmethoden :drunken:

[add]
@Apollonius: die sind alle als "Virtual; Abstract;", da ich mir die unnötig rumliegenden Prozeduren sparen wollte

idontwantaname 30. Jan 2009 15:24

Re: abstrakte Methoden ignorieren
 
Hi!

Das eine Sprache es überhaupt zulässt, dass eine abstrakte Klasse instanziert werden kann, finde ich sehr schockierend, da dieses Verhalten total den Sinn abstrakter Klassen verfehlt.

Bitte überdenke nochmal deine Klassen, du musst einen Fehler im Konzept haben, wenn du auf dieses "Feature" :roll: von Delphi zurückgreifst.

Lg oli

himitsu 30. Jan 2009 15:28

Re: abstrakte Methoden ignorieren
 
Die Basisklasse wird auch nie instantiiert, aber in den abgeleiteten Klassen wird nicht immer jede Funktionalität genutzt (drum blieb Einiges dort weiterhin abstrakt)

Aber wie gesagt, alles was Abstract blieb, wird auch nicht (innerhalb dieser Subklasse) genutzt.

Im Notfall muß ich dann wohl doch alle Funktionen nur Virtual machen, da ich diese Warnung nicht global unterdrücken möchte :stupid:

mkinzler 30. Jan 2009 15:29

Re: abstrakte Methoden ignorieren
 
Oder das Vererbungsschema verfeinern

TBx 30. Jan 2009 15:30

Re: abstrakte Methoden ignorieren
 
Deine Frage könnte man umformulieren in: Kann ich es ignorieren, dass ich selbst verlange, dass Methoden implementiert werden?

Wenn Du mit
Zitat:

virtual;abstract
arbeitest, dann mußt Du die Methoden auch in dem ChildClass überschreiben.

Willst Du in der jeweiligen Kindklasse nur einige Methoden überschreiben, so solltest Du die Methoden nur als virtual anlegen.
Willst Du verhindern, dass diese Klassen in Kindklassen angesprochen werden, obwohl sie nicht entsprechend überschrieben werden, so solltest Du in der Methodenimplementation einfach eine Exception auslösen.

My 2 Cent

Thomas


[Edit]Dreckfuhler[/Edit]

himitsu 30. Jan 2009 15:34

Re: abstrakte Methoden ignorieren
 
Wie denn noch verfeinern?

Ich bin froh, daß ich vieles verallgemeinert hab, sond würden da bei noch viel mehr Prozeduren gemeckert :roll: .


@TBx: ich würde es dann natürlich in der Basisklasse ändern, da sonst an mehren Subklassen insgesammt noch mehr Prozeduren sinnlos rumdümpeln :mrgreen:

Und die nötige Exception bzw. das passende Result hät ich schon eingebaut, falls doch mal wer auf die Idee kommt dieses Prozeduren anzusprechen :angel2:



Na OK, wenn es keine Möglihkeit gibt, dann werd ich mal ein paar dutzend Prozeduren nachtragen :?

mkinzler 30. Jan 2009 15:37

Re: abstrakte Methoden ignorieren
 
Zitat:

Wie denn noch verfeinern?
Nich alles in Basisklasse


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr.
Seite 1 von 3  1 23      

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