![]() |
Re: Versteckte Klasse entwickeln.
Zitat:
|
Re: Versteckte Klasse entwickeln.
Zitat:
|
Re: Versteckte Klasse entwickeln.
Oh ja.. das hatte ich überlesen... :oops:
Das kommt davon wenn man nur den ersten Satz liest :mrgreen: Das ist dann natürlich nicht im Sinne von OOP.. |
Re: Versteckte Klasse entwickeln.
Zitat:
Die beste Entsprechnung dazu in Delphi wäre eine Klasse die im "implementation" Teil der Unit deklariert wird. Diese kann dann nur innerhalb dieser Unit benutzt werden. Wenn man selbst davon andere Klassen ableiten will gibt es allerdings Probleme. Verwendet man eine Forward-Deklaration wie hier:
Delphi-Quellcode:
Dann erhält man vom Compiler die Meldung, dass die Klasse TDefault noch nicht vollständig implementiert sei.uses classes, [.....]; type TDefault = class; TDefaultAbgeleitet = class(TDefault) procedure Test; override; // hier Compiler Fehlermeldung!! end; implementation type TDefault = class(TObject) procedure Test; virtual; end; end. Ein "verstecken" von Klassen im implementation-Teil ist also nur dann machbar wenn man die Klasse nicht selbst erweitern will. (dazu müsste man im Beispiel die Forward-Deklaration weglassen und könnte keine "TDefaultAbgeleitet" deklarieren) Immerhin könnte man so lokale Klassen mit Hilfsroutinen erzeugen die ausserhalb der Unit nicht sichtbar sind. Ciao, Ralf |
Re: Versteckte Klasse entwickeln.
Forward-Deklarationen müssen innerhalb eines zusammenhängendem Type-Blocks liegen.
also es darf zwischen den Forward-/Typen-Deklarationen nichts außer Typen sein > keine Konstanten, Proceduren und auch kein Bereichswechsel ala implementation |
Re: Versteckte Klasse entwickeln.
In Delphi Prism geht das. Dort kann man eine Klasse als internal deklarieren und dann nur innerhalb dieses Assemblies verwenden.
|
Re: Versteckte Klasse entwickeln.
Wenn du diese im Implementation Teil deklarierst, ist sie auch nur innerhalb der Unit sichtbar
|
Re: Versteckte Klasse entwickeln.
Was spricht dagegen, die Klasse in einer extra Unit zu deklarieren und diese einzubinden, nach außen dürfte diese dann, nicht sichtbar sein?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 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