Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Versteckte Klasse entwickeln. (https://www.delphipraxis.net/137414-versteckte-klasse-entwickeln.html)

Neutral General 20. Jul 2009 17:40

Re: Versteckte Klasse entwickeln.
 
Zitat:

Zitat von Meflin
Und wozu soll das gut sein? Damit trittst du die Hälfte von dem, wozu OOP gut ist, in die Tonne, weil man die abgeleiteten Objekte eben NICHT pauschal behandeln könnte.

Naja generell ist das soooo unsinnig nicht ( :arrow: Information Hiding). Wenn es nur eine kleine Hilfsklasse für eine größere Klasse ist..

Meflin 20. Jul 2009 17:42

Re: Versteckte Klasse entwickeln.
 
Zitat:

Zitat von Neutral General
Naja generell ist das soooo unsinnig nicht ( :arrow: Information Hiding). Wenn es nur eine kleine Hilfsklasse für eine größere Klasse ist..

Ist bei dem Beispiel, worum es ja konkret geht (Körper, Würfel, Quader) definitiv nicht der Fall. Das tolle daran ist ja nun gerade, dass man für gewisse Dinge nicht iwssen muss, obs nun ein Würfel oder Quader ist. So wie er das implementieren will aber eben schon.

Neutral General 20. Jul 2009 23:28

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..

Ralf Kaiser 21. Jul 2009 08:31

Re: Versteckte Klasse entwickeln.
 
Zitat:

Zitat von Christian18
gibt es in Delphi die Möglichkeit eine ganze Klasse zu verbergen? Ich habe davon gehört, dass man einzelne Methoden verbergen kann.

Leider kennt Delphi keine Attribute für Klassen (in VB.NET oder C# kann man Klassen als "private" markieren).

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:

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.
Dann erhält man vom Compiler die Meldung, dass die Klasse TDefault noch nicht vollständig implementiert sei.

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

himitsu 21. Jul 2009 08:43

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

Phoenix 21. Jul 2009 08:56

Re: Versteckte Klasse entwickeln.
 
In Delphi Prism geht das. Dort kann man eine Klasse als internal deklarieren und dann nur innerhalb dieses Assemblies verwenden.

mkinzler 21. Jul 2009 09:47

Re: Versteckte Klasse entwickeln.
 
Wenn du diese im Implementation Teil deklarierst, ist sie auch nur innerhalb der Unit sichtbar

Cyf 26. Jul 2009 18:36

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 06:38 Uhr.
Seite 2 von 2     12   

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