![]() |
Daten und Oberfläche kapseln?
Es geht hier mal um eine Grundlagenfrage.
Ich habe ein Hauptformular in meinem Programm. Die Daten mit denen u.a. das Form befüllt wird, werden in 3 Instanzen des Typs TDaten hinterlegt die an vielen Stellen der Unit benötigt werden.
Delphi-Quellcode:
Im OnCreate-Event des Forms werden daten1-3 instanziert.
var
MainForm: TMainForm; implementation {$R *.dfm} var daten1:TDaten; daten2:TDaten; daten3:TDaten; Kann man das schon als Kapselung verstehen? |
Re: Daten und Oberfläche kapseln?
Nö, jede Instanz des Forms würde auf genau dieselben Daten zugreifen. Wenn Du aus den globalen Variablen private Felder machst und den Zugriff darauf über Methoden implementierst, dann kann man von Kapselung reden.
|
Re: Daten und Oberfläche kapseln?
Sollte ich das direkt in der TMainForm machen oder nochmal dafür eine eigene Klasse anlegen?
|
Re: Daten und Oberfläche kapseln?
Wenn die Daten Bestandteil des Formulars sein sollen, würde ich auch Properties des Formulars deklarieren. Haben sie dagegen eigentlich nichts mit dem Formular zu tun, würde sich eine eigene Klasse anbieten.
|
Re: Daten und Oberfläche kapseln?
Eine echte Kapselung von Oberfläche und Verabeitung erreicht man indem man das Ganze dreigliederig aufbaut.
1. Das Formular - das Formular kann "nichts", es bietet Controls zur Darstellung. 2. Die Verarbeiter - Eine oder mehrere Klassen, die bestimmte Funktionaliäten abieten. Beispiel:
Delphi-Quellcode:
3. Der Zusammenführer - Diese Klasse verbindet die Verabeiter Klassen mit der Formular Klasse.
TAddierer = class
public function AddiereInt(Wert1, Wert2: Integer): Integer; end; Mit dieser Dreigliedrigkeit, kann man das Fornmular und die Verabeiter-Klassen überall unabhängig einsetzen. Nur die Zuasmmenführer Klasse muss im Notfall geändert/ausgetauscht werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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