Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klasse explizit von TObject ableiten - spricht was dagegen? (https://www.delphipraxis.net/13137-klasse-explizit-von-tobject-ableiten-spricht-dagegen.html)

Daniel 11. Dez 2003 16:49


Klasse explizit von TObject ableiten - spricht was dagegen?
 
Hallöchen,

ich baue mir gerade diverse Klassen und leite diese explizit von TObject ab:

Delphi-Quellcode:
type
  t_meineKlasse = Class(TObject)
  ...
Nun könnte man diese Deklaration auch vereinfachen:

Delphi-Quellcode:
type
  t_meineKlasse = Class
  ...

Nun habe ich aber dunkel im im Hinterkopf, hier in der DP Einwände gegen meine Deklaration gelesen zu haben. :gruebel: Auf der anderen Seite wird eine Klasse doch so oder so von TObject abgeleitet, wenn nichts Anderes angegeben wurde - oder? Demnach müssten beide Vorgehensweisen identisch sein...?

Könnte mir irgendwer noch 'was Kluges dazu sagen?

jbg 11. Dez 2003 16:55

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Zitat:

Zitat von Daniel
Könnte mir irgendwer noch 'was Kluges dazu sagen?

Stelle dir vor, dass du aus einer anderen Programmiersprache her kommst und keine Ahnung von den Delphi Gepflogenheiten hast. Nun steht da kein class(TObject). Was wirst du denken? Und was, wenn dort ein TObject steht?

Daniel 11. Dez 2003 16:59

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Also läuft es auf die Übersichtlichkeit bzw. Wartbarkeit hinaus? Demnach wären diese beiden Lösungen aus technischer Sicht identisch.
Ich empfinde die explizite Deklaration als deutlich angenehmer zu lesen und bevorzuge sie nicht ohne Grund.

jbg 11. Dez 2003 17:18

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Zitat:

Zitat von Daniel
Ich empfinde die explizite Deklaration als deutlich angenehmer zu lesen und bevorzuge sie nicht ohne Grund.

Da ich von TurboPascal her komme, ist mir das TObject (TurboVision) auch geblieben. Wo ich aber die explizite Deklaration weg lasse ist bei interface.

Luckie 11. Dez 2003 17:21

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Ich meine, ich hätte auch mal so was gehört, dass man Klassen ohne Basis-Klasse nicht von TObject ableiten sollte. Meines Wissen war da irgendwas mit dem "alten" Object Pascal und Delphi. Weiß aber auch nicht mehr.

Christian Seehase 12. Dez 2003 12:23

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Moin Luckie,

was meinst Du mit "Klasse ohne Basisklasse"?
Wenn Du eine neue Klasse erstellst, wirst Du sie immer von einer anderen ableiten (und sei es TObject), und eben diese wäre dann die Basisklasse.

Luckie 12. Dez 2003 12:47

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Klar leitet man immer von etwas ab. Nur habe ich gelesen, dass wenn man von TObject ableiten will, die Klasse TObject nicht angeben soll. Warum auch immer.

Christian Seehase 12. Dez 2003 13:10

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Moin Luckie,

dazu wäre eine Begründung allerdings wirklich nicht schlecht...
Ich finde die Angabe von TObject stellt doch eine nützliche Dokumentation dar, und das Ergebnis ist mit und ohne Angabe ja eh' das gleiche.

Luckie 12. Dez 2003 13:13

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Wenn ich nur wüßte wo ich das gelesen habe. Daniel hatte ja auch so was im Hinterkopf, also scheint da doch irgendwas zu sein.

Tyrael Y. 12. Dez 2003 14:10

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Kann es sein, daß ihr

Delphi-Quellcode:
type
TEtwas = class(TObject)
und

Delphi-Quellcode:
type
TEtwas = Object
durcheinander bringt?


Edit: Bin ansonsten der festen Meinung, daß mit oder ohne Angabe des
Basistypen beides gleich gehandhabt wird

Luckie 12. Dez 2003 16:48

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Nein bringen wir nicht.

Robert Marquardt 12. Dez 2003 18:32

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
class und class(TObject) sind ein und das selbe (siehe Delphi-Hilfe).
Bei der JCL und JVCL bestehen wir auf class(TObject) und entsprechend im Konstruktor immer auf inherited Create.
Der Vorteil ist, das sich die Sourcen dann viel leichter umarbeiten lassen wenn man mal beispielsweise eine
Debugging-Klasse dazwischenschieben will.
class alleine bleibt den forward-Deklarationen vorbehalten. Damit heben diese sich ab.

chris_82 12. Dez 2003 19:21

Re: Klasse explizit von TObject ableiten - spricht was dageg
 
Also soweit ich weiß gibt es da keinen Unterschied, aber Lucki hat schon recht der Übersicht halber schaut es so schon besser aus.

Weil warum sollte es schlechter sein das expilizit hinzuschreiben? Außer das man vielleicht "1 Wort" mehr schreibt. Der Compiler erkennt es so oder so und denke nicht das er irgendeinen Unterschied macht, geschweige denn das Prog langsamer wird oder irgendwas dergleichen.

Do It! :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.

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