AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Basics: Auf Felder einer Klasse zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Basics: Auf Felder einer Klasse zugreifen

Ein Thema von PeterPanino · begonnen am 20. Jan 2008 · letzter Beitrag vom 21. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:16
In verschiedenen Anleitungen zur objektorientierten Programmierung wird immer wieder davor gewarnt, direkt auf die Felder einer Klasse zuzugreifen. Der Grund dafür wird aber nie rational und ausführlich dargestellt. Während dies bei komplexeren Klassen, die Funktionen und Methoden zur Manipulation der Feldwerte enthalten, verständlich ist, erscheint dies bei sehr einfachen Klassen, die nur ein paar einfache Felder enthalten, nicht einleuchtend. Wieso sollte ich bei dem folgenden Klassen-Beispiel Getter und Setter implementieren?

Delphi-Quellcode:
TMyClass = class
  FEinByte: Byte;
  FEinString: string;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:20
Natürlich hast Du Recht, wenn Du es nicht brauchst, musst Du es nicht machen. Allerdings sollte man es sich gleich angewöhnen, Getter- und Setter-Methoden zu implementieren, das ist
1. besserer Stil
2. schneller zu implementieren, wenn man später doch Einfluss darauf nehmen möchte, was gesetzt/gelesen werden darf.

Also besser gleich von Anfang an richtig machen, dann muss man sich später nicht ärgern/umgewöhnen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:27
In Delphi kannst du auch eine Property anlegen und hast dann die Vorteile von beidem.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:28
Naja, nur mit einer Property ist es aber auch nicht getan, finde ich.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:34
Natürlich in Verbindung mit (Getter/)Setter

Delphi-Quellcode:
TMyClass = class
private
  FEinByte: Byte;
public
  Procedure setEinByte( Value: byte);
published
  property EinByte: Byte read FEinByte write setEinByte;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:36
In Ordnung, dann sind wir und einig
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:38
Zitat von mkinzler:
Natürlich in Verbindung mit (Getter/)Setter

Delphi-Quellcode:
TMyClass = class
private
  FEinByte: Byte;
public
  Procedure setEinByte( Value: byte);
published
  property EinByte: Byte read FEinByte write setEinByte;
end;
Sollte die Sichtbarkeit von setEinByte nicht private sein?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:41
Ja
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:43
Hallo,


Zitat von mkinzler:
Delphi-Quellcode:
public
  Procedure setEinByte( Value: byte);
hm, ich hätte hier zunächst private favorisiert.

Ich mache es auch immer mit Properties!

Andreas

<zu langsam >
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Basics: Auf Felder einer Klasse zugreifen

  Alt 20. Jan 2008, 18:56
Zitat:
Sollte die Sichtbarkeit von setEinByte nicht private sein?
Bei reiner Verwendung durch die Property würde die Sichtbarkeit privat natürlich reichen. wenn man den Setter aber public deklariert kann man diesen auch alternativ aufrufen ( ist in anderen OOP-Sprachen ja so)
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:48 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