AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

property oder variable

Ein Thema von khh · begonnen am 23. Apr 2010 · letzter Beitrag vom 23. Apr 2010
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

property oder variable

  Alt 23. Apr 2010, 08:08
hallo zusammen,
welchen Vorteil bewirkt die Deklaration einer property mit eigenen Zugriffsmethoden ala:

Delphi-Quellcode:
interface
  TSimpleStringList = class
  private
    FList: array of string;
  protected
    function Get(Index: Integer): string;
    procedure Put(Index: Integer; const S: string);
  public
    property Strings[Index: Integer]: string read Get write Put; default;
  end;
im Gegensatz dazu das Array public zu deklarieren
Delphi-Quellcode:
public
  List: array of string;
die Zugriffsmethoden auf das "normale" Array sind ja eh schon implementiert.



Danke für eure Meinungen

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: property oder variable

  Alt 23. Apr 2010, 08:25
Naja,

in einer Setter oder Getter Methode kannst Du ja zum Beispiel noch plausibilitätsprüfungen durchführen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#3

Re: property oder variable

  Alt 23. Apr 2010, 08:26
Zitat von Sharky:
Naja,

in einer Setter oder Getter Methode kannst Du ja zum Beispiel noch plausibilitätsprüfungen durchführen.
ok

das ist ein Argument.
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.372 Beiträge
 
Delphi 12 Athens
 
#4

Re: property oder variable

  Alt 23. Apr 2010, 08:47
Und du kannst vorallem später mal leicht etwas ändern.

Also am Besten niemals Felder direkt freigeben, sondern immer über ein Property (selbst wenn da noch nichtmal Getter und Setter vorhanden sind).
Später kann man immernoch leicht eine Getter/Setter nachrüsten und so etwas verändern ... wie z.B. ein OnChange-Ereignis einrichten oder eben die schon genannten Plausibilitätsprüfungen.

Dieses ist ja gerade ein Vorteil von OOP, gegenüber "einfachen" Records.
(die neuen Recordmethoden überseh ich jetzt einfach mal)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: property oder variable

  Alt 23. Apr 2010, 09:25
Darüber hinaus ist dies schlicht näher am OOP Paradigma, dass u.a. das so genannte Geheimhaltungsprinzip postuliert, nach dem sämtliche inneren Zustände und Abläufe einer Klasse von aussen nicht greifbar sind, und lediglich über ein Interface indirekt zugänglich sein sollen. (Dies muss nicht zwangsweise wirklich über die Technik "Interface" passieren, die Terminologie überkreuzt sich da etwas. Properties bzw. Getter/Setter sind ein Interface im semantischen Sinne - also genau genommen vom Interface als eigene weitere Methodik in der OOP abzugrenzen.)

Diese Begründung läuft jedoch pur über eine theoretische Definition. Technisch kann ggf. ein Propertyzugriff nachher genau so vom Compiler realisiert sein wie ein direkter (wenn das Property direkt auf das Feld durchgreift ohne einen Getter/Setter zu deklarieren in diesem Falle). Es ist prinzipiell eine ganz gute Idee an diesem Paradigma festzuhalten, da es wie schon erwähnt insbesondere die Wartbarkeit deutlich verbessern kann. Lediglich in sehr sehr wenigen Fällen gibt es wirklich einen guten Grund für die Verwendung von Public-Feldern. Sehr selten.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#6

Re: property oder variable

  Alt 23. Apr 2010, 11:09
Vor allem kannst du auch mithilfe des Setters dem Benutzer deiner Komponente einiges an Arbeit abnehmen, indem du z.B. nach der schon genannten Plausibilitätsprüfung - es sei: Zugriffs-Index > High(FList) -, das Array automatisch vergrößerst.

Und beim Direktzugriff auf das Array muss der Benutzer auch Prozeduren wie z.B. Add, Insert, Delete selbst schreiben; das könntest du ja in deine Komponente einbauen. Sonst könntest du ja auch einfach nur die Liste ala Array of String in dein Programm übernehmen, da die Komponente ohne Benutzung der OOP-Methodik sinnlos ist
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#7

Re: property oder variable

  Alt 23. Apr 2010, 11:56
Ein weiterer Grund kann es sein, wenn du dem Benutzer der Klasse gar nicht alle Zugriffsmöglichkeiten auf ein Feld erlauben möchtest, die der Typ des Feldes schon hergibt, z.B. stellt TStringList die Methode delete bereit, was du dem Benutzer aber nicht erlauben willst.
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#8

Re: property oder variable

  Alt 23. Apr 2010, 12:02
wunderbar, ich danke euch, ihr hab mich überzeugt .

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:57 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