AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponenten-Entwicklung: Interner Zugriff auf Eigenschaften
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten-Entwicklung: Interner Zugriff auf Eigenschaften

Ein Thema von APP · begonnen am 18. Jan 2004 · letzter Beitrag vom 18. Jan 2004
 
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

Komponenten-Entwicklung: Interner Zugriff auf Eigenschaften

  Alt 18. Jan 2004, 17:56
Hallo,
ich bin auf eine "blöde" Frage gestossen:

Angenommen ich habe eine Komponente mit folgenden Eingenschaften:

Delphi-Quellcode:
  TFileBuffer = CLASS(TStringList)
  PRIVATE
    ...
    FItemSeperator: Char;
    FUNCTION GetObjectFileTime(Index: Integer): TDateTime;
    ...
  PUBLIC
     ...
    PROPERTY ObjectFileTime[Index: Integer]: TDateTime READ GetObjectFileTime WRITE SetObjectFileTime;
    PROPERTY ItemSeperator: Char READ FItemSeperator WRITE FItemSeperator;
    CONSTRUCTOR Create;
    DESTRUCTOR Destroy; OVERRIDE;
  END;
Nun steht im Handbuch (Seite 33-5 Delphi 5 deutsch) über die Eigenschaftsdaten,
  • dass die zum Speichern verwendeten Felder als private deklariert sein müssen.
  • dass aussschließlich die Implementierungsmethoden (Get_xxx und Set_xxx) auf diese Daten direkt zugreifen dürfen.
  • dass wenn andere komponenteneigene Methoden/Eigenschaften auf Eigenschaftsdaten zugreifen wollen, dies ausschliesslich über die Eigenschaften und nicht direkt auf die Daten machen dürfen.

Mit anderen Worten:
Delphi-Quellcode:
{******************************************************************************}
FUNCTION TFileBuffer.GetObjectFileTime(Index: Integer): TDateTime;
{******************************************************************************}
// Nicht lauffähige DEMO-Methode!!
VAR
 aValue : Char;
BEGIN
...
// Wenn ich nun auf die Eigenschaft "ItemSeperator" zugreifen möchte
// müsste ich ja auf
aValue := ItemSeperator; // ZUGRIFF ÜBER DIE EIGENSCHAFT
// und nicht auf
aValue := FItemSeperator; // DIREKTER ZUGRIFF
// zugreifen?
END;
Es funktioniert offensichtlich beides, ausser wenn die Implementierung einer geerbten Eigenschaft geändert wird (lt. Handbuch).

Ich habe mir "renomierte" Projekte angesehen, und musste feststellen, jeder macht es anders (direkt, über die Eigenschaft oder gemischt), oder habe ich den tieferen Sinn nicht verstanden?

Meine Frage ist nun, ist das bloß eine Designfrage/Schwäche/Stilfrage, oder wie geht es nun "richtig"
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
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