AGB  ·  Datenschutz  ·  Impressum  







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

abstrakte Methoden ignorieren

Ein Thema von himitsu · begonnen am 30. Jan 2009 · letzter Beitrag vom 31. Jan 2009
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#1

abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:17
tachchen,

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)
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?

$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:20
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:21
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:22
ich würd sie ja gern ignorieren, aber
Zitat:
über 800 Warnungnen sind schon etwas nervend) Crying or Very sad
genauer gesagt sind es aktuell 861 Warnungen und dabei bin ich grad erstma bei den Grundmethoden

[add]
@Apollonius: die sind alle als "Virtual; Abstract;", da ich mir die unnötig rumliegenden Prozeduren sparen wollte
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:24
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" von Delphi zurückgreifst.

Lg oli
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:28
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
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:29
Oder das Vererbungsschema verfeinern
Markus Kinzler
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#8

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:30
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]
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:34
Wie denn noch verfeinern?

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


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

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



Na OK, wenn es keine Möglihkeit gibt, dann werd ich mal ein paar dutzend Prozeduren nachtragen
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: abstrakte Methoden ignorieren

  Alt 30. Jan 2009, 16:37
Zitat:
Wie denn noch verfeinern?
Nich alles in Basisklasse
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:42 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