Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Komponente von TCustomSocket ableiten? (https://www.delphipraxis.net/41760-komponente-von-tcustomsocket-ableiten.html)

Muetze1 10. Mär 2005 11:08

Re: Komponente von TCustomSocket ableiten?
 
Moin!

Deine letzte Frage verstehe ich nicht, aber das Beispiel ist ein gutes Beispiel dazu. So kannst du in der Basisklasse z.b. die komplette Funktionalität implementieren und alle Aufrufe etc schon einbauen, aber wie es dann später genau implementiert wird bzw. wie gerechnet wird, hängt dann von der abgeleiteten Klasse ab.

MfG
Muetze1

Pseudemys Nelsoni 10. Mär 2005 11:27

Re: Komponente von TCustomSocket ableiten?
 
Moin Muetze,

mit meiner letzten Frage meinte ich, das Methoden die als "abstract;" definiert sind, in selbiger Klasse ja irgendwo aufgerufen werden, richtig?

Muetze1 10. Mär 2005 13:13

Re: Komponente von TCustomSocket ableiten?
 
Moin!

Ob sie aufgerufen werden ist die andere Frage, aber zumindest "... aufgerufen werden können", ja.

MfG
Muetze1

Pseudemys Nelsoni 10. Mär 2005 19:02

Re: Komponente von TCustomSocket ableiten?
 
Moin,

also für mich machen abstrakte methoden sonst keinen wirklichen sinn als eben wenn sie in der eigenen klasse bereits aufgerufen werden. Denn wozu wäre sie dann vorher als abstract definiert worden wenn sie nicht unbedingt gebraucht wird?

Muetze1 10. Mär 2005 22:19

Re: Komponente von TCustomSocket ableiten?
 
Moin!

Zitat:

Zitat von Pseudemys Nelsoni
also für mich machen abstrakte methoden sonst keinen wirklichen sinn als eben wenn sie in der eigenen klasse bereits aufgerufen werden. Denn wozu wäre sie dann vorher als abstract definiert worden wenn sie nicht unbedingt gebraucht wird?

Da hast du auch vollkommen Recht mit allem, es würde keinen Sinn machen - ABER: es ist kein Zwang sie zu benutzen, auch wenn sie als abstrakt definiert wurde...

Du könntest damit auch Entwickler zwingen eine Procedure zu implementieren um auf irgendwas hinzuweisen bzw. eine Procedure zu implementieren die in der Basisklasse nicht gebraucht wird aber in jeder Ableitung genutzt werden muss...
Ist an den Haaren herbei gezogen und mir fällt kein Beispiel ein, aber wie ich oben schon geschrieben hatte: Du hast vollkommen Recht damit... - ich wollte nur darauf hinweisen das es kein Zwang ist - im Gegensatz zu dem Zwang die Methode zu implementieren in einer Ableitung...

MfG
Muetze1

Pseudemys Nelsoni 10. Mär 2005 22:32

Re: Komponente von TCustomSocket ableiten?
 
Gut :) Danke nochmal für die Erklärung ;)

Robert_G 10. Mär 2005 22:59

Re: Komponente von TCustomSocket ableiten?
 
Abstrakte Methoden kannst du dir ähnlich wie Interfaces vorstellen. Wer immer sie implementiert geht eine Art Vertrag mit dir ein.
Damit du die Ableitung benutzen kannst muss sie sich an die Vereinbarung halten und diese Funktionalität implementieren.
Member, die für diese Vereinbarung unnütz sind, abstrakt zu deklarieren wäre natürlich totaler Blödsinn und würden das ganze Konzept ad absurdum führen. :?
Wenn ich abstrakte Member sehe, gehe ich davon aus, dass ich sie implmentieren muss.
Wenn sie der Autor nur aus Jux abstrakt deklariert hat würde ich ihm bei nächster Gelegenheit mit Anlauf in den Hintern treten. :evil:

Hansa 11. Mär 2005 00:12

Re: Komponente von TCustomSocket ableiten?
 
Zitat:

Zitat von Pseudemys Nelsoni
Moin Mütze,

besten Dank ;)

Könntest du mir noch erklären was der Sinn von abstrakten Methoden sein soll? Ich meine die Methoden selbst könnte man ja trotzdem einfach in einem Nachfolger deklarieren, wozu wird die vorher schon definiert?

Das ist doch ganz einfach : abstrakt ist eben abstrakt. :mrgreen: Es existiert nur der Name der Prozedur und sonst nichts. Keinerlei Rumpf dafür. Das ganze dient hauptsächlich dazu, daß ein Komponentenentwickler Platzhalter schaffen kann und nur die DCU mitgibt. Also ist es normalerweiese nicht so wichtig. Solange du diesen Namen im Programm nicht verwendest passiert dann auch nichts. Falls doch, dann krachts eben. 8) Sofern das passiert, dann muß eben eine Prozedur mit gleichem Namen angelegt werden. Was da dann drin steht bleibt dir überlassen. 8)

IngoD7 11. Mär 2005 07:53

Re: Komponente von TCustomSocket ableiten?
 
Wurde eigentlich schon folgender wichtige Grund für Abstraktion genannt? Also:
Man kann - grob gesagt - eine abstract-Methode von TVater aufrufen kann und er guckt automatisch, welchen Typ die aufrufende Instanz besitzt. Abhängig davon, ob die Instanz vom Typ TKind1, TKind2 oder TKind3 ist, wird dann die Implementation der aufgerufenen Methode beim passenden Kind ausgeführt.

Das ist hier aber auch noch deutlicher erklärt.

Muetze1 11. Mär 2005 08:00

Re: Komponente von TCustomSocket ableiten?
 
Moin!

Nein, das erreiche ich auch mit einer puren virtuellen/dynamischen Methode - nur das ich dort nicht die Sicherheit habe, das die Nachfahren die Methode implementieren.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz