AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign In Klasse auf Funktion zugreifen oder auf Property?
Thema durchsuchen
Ansicht
Themen-Optionen

In Klasse auf Funktion zugreifen oder auf Property?

Ein Thema von norwegen60 · begonnen am 29. Mär 2018 · letzter Beitrag vom 4. Apr 2018
 
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: In Klasse auf Funktion zugreifen oder auf Property?

  Alt 29. Mär 2018, 23:53
Zur allgemeinen Frage:
Properties eignen sich zum kontrollierten Zugriff auf die Daten deiner objekte. Sie können lesend, schreibend oder beides sein. Demnach kannst du bestimmen wie auf deine Daten zugegriffen werden darf, anstatt jeden Nutzer direkt mit deinen Variablen in Kontakt treten zu lassen, was mglw. ungewollte Folgen haben kann.
Ausserdem kannst du relativ einfach bei vererbten klassen die zugriffs- und sichtbarkeitsrechte ändern.

Delphi-Quellcode:
Type
  TX = Class
  Private
    Fvalue: Integer; // feld zum speichern der daten
    Function Getvalue: Integer; // zugriffsfunktion
  Protected // nur für Erben sichtbar
    Property Avalue: Integer Read Getvalue;
    // Zugriffsbeschränkung auf nur lesend
  Public
    Constructor Create;
  End;

 TX2 = Class(TX)
  Private
    Procedure Setvalue(Value: Integer);
  Public
    Property Avalue Write Setvalue;
    // Sichtbarkeit geändert, jetzt 'überall' sichtbar; ausserdem darf der wert geändert werden
  End;

Damit ist jetzt nur noch Folgendes möglich:

Delphi-Quellcode:
 { TX }

Constructor TX.Create;
  Begin
    Fvalue := 42;
  End;

Function TX.Getvalue: Integer;
  Begin
    Result := Fvalue;
  End;
{ TX2 }

Procedure TX2.Setvalue(Value: Integer);
  Begin
    Fvalue := Value;
  End;

Procedure Main;
  Var
    X: Tx;
    Y: Tx2;
  Begin
    X := Tx.Create;
    // X.Avalue := 42; //Cannot assign to a read only propery
    Writeln(X.Avalue); // writes 42
    X.Free;
    Y := Tx2.Create;
    Y.Avalue := 55;
    Writeln(Y.Avalue); // writes 55
    Y.Free;
  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 12:35 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