AGB  ·  Datenschutz  ·  Impressum  







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

Abstracte Klasse hier richtig?

Ein Thema von blablab · begonnen am 30. Okt 2009 · letzter Beitrag vom 30. Okt 2009
Antwort Antwort
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:32
Hallo!

ich hab im prinzip folgenden Aufbau
Delphi-Quellcode:
type
  TFigure = class
    procedure Draw; virtual; abstract;
  end;
  TRectangle = class(TFigure)
    procedure Draw; override;
  end;
  TEllipse = class(TFigure)
  end;
Alle von TFigure abgeleiteten Klassen sollen die Methode Draw implementieren, TFigure selbst hat aber keine implementierung für Draw.

Aber statt dass jetzt ein Fehler kommt, dass Tellipse die Methode Draw implementieren müsste, kann ich die Draw-Methode von TFigure benutzen die nichtmal existiert. Also ich kann Ellipse.Draw ausführen, es kommt dann aber erst zur Laufzeit ein fehler.
Sollte da nicht schon beim Compilieren ein Fehler kommen "TEllipse: Die Implementierung von Draw fehlt"?

Was mach ich falsch?

Güße
blablab
  Mit Zitat antworten Zitat
Apollonius

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

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:35
Nichts. Das ist in Delphi einfach so. Das Instanziieren einer Ellipse müsste allerdings eine Warnung hervorrufen.
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
mkinzler
(Moderator)

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

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:38
Das ist as-designed. In neuren Delphiversionen kann man das von anderen Sprachen bekannte Verhalten aber provozieren, indem man die Klasse als abstrakt deklariert.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:41
Man könnte auch ein Interface draus machen. Da sollte er meckern wenn die Klasse das Interface nicht komplett implementiert
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:41
Woher soll denn der Compiler wissen, ob eventuell zur Laufzeit nicht doch noch die fehlende Methode "nachgerüstet" wird usw. ?
Gruß
Hansa
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:48
@jfheins: wie geht das???

@Hansa: ist sowas möglich?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 16:50
Zitat von Hansa:
Woher soll denn der Compiler wissen, ob eventuell zur Laufzeit nicht doch noch die fehlende Methode "nachgerüstet" wird usw. ?
Zur Laufzeit Klassen verändern? In welcher ordentlichen Programmiersprache geht sowas denn (ohne von hinten durch die Brust ins Auge mit Pointern herumzuspielen)

Wenn ich hier sowas mache, kommt das hier:
Zitat:
Fehler 1 "Test_3.Kreis" implementiert den geerbten abstrakten Member "Test_3.Figure.draw(int)" nicht. C:\Users\Julius\Documents\Visual Studio 2008\Projects\Test 3\Form1.cs 66 18 Test 3
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Abstracte Klasse hier richtig?

  Alt 30. Okt 2009, 17:35
[OT]
Zitat von jfheins:
In welcher ordentlichen Programmiersprache geht sowas denn
In quasi jeder Scriptsprache ? Und nein, Sprachen wie Ruby oder Python fallen sicher nicht unter die Kategorie "unbedeutend", solange Delphi das nicht auch tut . Vielleicht hatte Hansa ja beim Schreiben noch sein neuestes Rails-Projekt im Kopf gehabt, wer weiß .
[/OT]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:35 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