AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Komponente von TCustomSocket ableiten?
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente von TCustomSocket ableiten?

Ein Thema von Pseudemys Nelsoni · begonnen am 8. Mär 2005 · letzter Beitrag vom 12. Mär 2005
Antwort Antwort
Seite 3 von 4     123 4      
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 09:39
Zitat von Muetze1:
Nein, das erreiche ich auch mit einer puren virtuellen/dynamischen Methode
Stimmt. Für das, was ich ausgedrückt hatte, braucht man kein abstract.

Aber:
Zitat von Muetze1:
- nur das ich dort nicht die Sicherheit habe, das die Nachfahren die Methode implementieren.
Kann man das so sagen? Die Sicherheit hast du doch nie.

Der Unterschied ist, dass wenn der Nachfahre die Methode nicht implementiert hat, es bei abstract zu einem Laufzeitfehler kommt, während bei nur-virtuell die beim Vorfahren dann zwangsläufig vorhandene (und dem Nachfahren vererbte) Methode abgearbeitet wird.

Wenn man dieses Beispiel von eben betrachtet, so kommt dort für die Methoden von TKoerper nur abstract in Betracht, weil eine Volumen- und Oberflächen-Berechnung (bzw. die Implementierung der entsprechenden Functionen) für TKoerper selbst unsinnig wäre.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#22

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 10:29
Moin!

Zitat von IngoD7:
Zitat von Muetze1:
- nur das ich dort nicht die Sicherheit habe, das die Nachfahren die Methode implementieren.
Kann man das so sagen? Die Sicherheit hast du doch nie.
Doch, bei abstrakten Methoden - einzige Voraussetzung: ich nutze sie in meiner Klasse wo sie einführe...

Zitat von IngoD7:
Wenn man dieses Beispiel von eben betrachtet, so kommt dort für die Methoden von TKoerper nur abstract in Betracht, weil eine Volumen- und Oberflächen-Berechnung (bzw. die Implementierung der entsprechenden Functionen) für TKoerper selbst unsinnig wäre.
Richtig.

MfG
Muetze1
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 12:43
Zitat von Muetze1:
Zitat von IngoD7:
Zitat von Muetze1:
- nur das ich dort nicht die Sicherheit habe, das die Nachfahren die Methode implementieren.
Kann man das so sagen? Die Sicherheit hast du doch nie.
Doch, bei abstrakten Methoden - einzige Voraussetzung: ich nutze sie in meiner Klasse wo sie einführe...
Ich weiß, was du meinst - aber ich meinte, dass niemand einen Klassenprogrammierer zwingen kann, eine im Vorgänger abstracte Methode auch tatsächlich in seiner Ableitung zu implementieren. Wenn er es nun mal nicht will oder es einfach vergisst ...

Daher auch meine danach folgende Aussage:
Zitat von IngoD7:
Der Unterschied ist, dass wenn der Nachfahre die Methode nicht implementiert hat, es bei abstract zu einem Laufzeitfehler kommt, während bei nur-virtuell die beim Vorfahren dann zwangsläufig vorhandene (und dem Nachfahren vererbte) Methode abgearbeitet wird.
  Mit Zitat antworten Zitat
Hansa

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

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 13:16
Zitat von IngoD7:
...Ich weiß, was du meinst - aber ich meinte, dass niemand einen Klassenprogrammierer zwingen kann, eine im Vorgänger abstracte Methode auch tatsächlich in seiner Ableitung zu implementieren. Wenn er es nun mal nicht will oder es einfach vergisst ...
Und ? Dann greift aber zumindest die Methode des Vorgängers. Um es kurz zu machen : selber "abstract" zu benutzen ist einfach nur Unsinn. Warum ? ein Beispiel aus der Praxis : ich habe eine Prozedur "ErmittlePreis" Diese soll nun verschiedene Tabellen benutzen, je nach Lage. Ich kann allerdings in der Vorfahrklasse noch gar nicht wissen, um was es später genau geht. Dann habe ich gedacht, was solls, deklariere das einfach als abstract. Und dann kams zwangsläufig so : irgendwann habe ich die Implementation dieser Prozedur tatsächlich vergessen. 8) Delphi macht dann folgendes : es sucht danach beim Vorfahr. Ist nichts da, bei dessen Vorfahr usw. Irgendwann wird es auf die abstract-Deklaration stoßen mit der sagenhaften Fehlermeldung "abstrakter Fehler". Und sonst nichts Im ersten Moment hatte ich gar nicht so weit gedacht, daß das Wort "abstrakt" in der Fehlermeldung die Ursache nannte.

Seitdem ist das ganze für mich erledigt und ich verwende "virtual" statt "abstract" und schreibe notfalls in der Ur-Klasse nur : begin end; Seitdem ist Ruhe.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#25

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 13:37
@Hansa
Das war doch ein ParadeBeispiel für einen Grund einer abstrakten Methode.
Deine nachträgliche Lösung ist das Paradebeispiel für schlechtes Code design.
  Mit Zitat antworten Zitat
Hansa

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

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 13:43
Dummschwätzer. Kümmere dich besser um deinen Oracle-Mist.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#27

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 13:44
Wenn ich eine leere virtuelle Funktion statt einer abstrakten nehme ists doch viel leichter mal zu übersehen, dass man die überschreiben wollte.
Nimm eine abstrakte und der Kompiler meldet dann: Instanz von 'X' mit der abstrakten Methode 'Y' wird angelegt.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Hansa

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

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 13:48
So ist es. Ätsch @RG
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#29

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 13:57
Zitat von Hansa:
So ist es. Ätsch @RG
Du hast schon bemerkt, dass dir auch Sanchez widersprochen hat?
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: Komponente von TCustomSocket ableiten?

  Alt 11. Mär 2005, 14:20
Zitat von Hansa:
Zitat von IngoD7:
...Ich weiß, was du meinst - aber ich meinte, dass niemand einen Klassenprogrammierer zwingen kann, eine im Vorgänger abstracte Methode auch tatsächlich in seiner Ableitung zu implementieren. Wenn er es nun mal nicht will oder es einfach vergisst ...
Und ? Dann greift aber zumindest die Methode des Vorgängers.
Hallo?!? Die Methode beim Vorgänger ist im zitierten Fall abstract und somit nicht vorhanden. Es greift also nuscht nix.

Außerdem beschreibst du im Rest deines Postings genau diesen Fall doch auch selbst : Er stößt auf eine abstract-Methode und fällt mit Fehler auf die Nase, was bei sinnvoller Anwendung von abstract ja auch gewünscht ist.

Dass dir die Stille einer leeren virtual-Methode lieber ist, als der klare Hinweis auf eine fehlerhafte Klassenprogrammierung, wundert mich nun schon etwas.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 18:54 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