AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Set- und Getter-Methoden

Ein Thema von ThaiSon96 · begonnen am 18. Mai 2014 · letzter Beitrag vom 20. Mai 2014
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#11

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 10:59
Vom logischen Fehler (fBar nur dann erzeugen, wenn es nicht nil ist?) abgesehen bekäme man dasselbe Ergebnis, wenn Bar keine Property, sondern direkt die getBar-Funktion wäre. IMO hat die Property eher mit dem Information Hiding zu tun, den Anwender der Klasse sollte es nicht interessieren, ob hinter der Eigenschaft tatsächlich eine Funktion steckt oder nicht, es genügt, wenn er weiß, dass er sie nicht beschreiben kann.
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 Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 11:07
Im OI werden Funktionen nicht angezeigt, dafür aber Eigenschaften
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#13

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 11:09
Aber auch nur diejenigen im published-Abschnitt. Und ob es Sinn macht, eine ReadOnly-Property im OI anzuzeigen, muss man sich im Einzelfall überlegen.
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 Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 11:11
Aber auch nur diejenigen im published-Abschnitt. Und ob es Sinn macht, eine ReadOnly-Property im OI anzuzeigen, muss man sich im Einzelfall überlegen.
Wenn es sich um eine Instanz handelt Delphi-Referenz durchsuchenTLabeledEdit.EditLabel
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#15

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 11:16
Ich sag ja nicht, dass das grundsätzlich Quatsch ist, aber es ist eben auch nicht immer sinnvoll (manche Komponenten zeigen z.B. ihre Version im OI an). Dinge wie z.B. eine Count-Eigenschaft muss man ja nicht unbedingt zur Designtime verfügbar machen.
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#16

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 11:52
Vom logischen Fehler (fBar nur dann erzeugen, wenn es nicht nil ist?) abgesehen bekäme man dasselbe Ergebnis, wenn Bar keine Property, sondern direkt die getBar-Funktion wäre.
Ja sorry, denkfehler. <> ist jetzt =.

Natürlich geht das auch nur mit einer Funktion ohne Property, aber wenn man denn alles mit Properties macht, wäre das ein Beispiel für eine Read-Only Property.

Aber kann mas es denn nicht auch ein bißchen anhand der tatsächlichen Begrifflichkeiten definieren? Was ist eine Funktion des Objektes, was ist eine Methode?

Beispiel:
Delphi-Quellcode:
TPerson=class
  private
    fVorname:String;
    fNachname:String;
    function getName:String;
   public
    property Vorname:String read fVorname write fVorname;
    property Nachame:String read fNachname write fNachname;
    property Name:String read getName;
end;

TPerson.getName:String;
begin
  Result:=Vorname+' '+Nachname;
end;
Imho ist Name halt auch eine Eigenschaft der Person, drum als Property umgesetzt.
Die getName Funktion public gemacht und in Name umgewandelt würde auch gehen, aber irgendwie würde mich da was stören. Ist ja schon fast eine philosophische Frage.

(Das Name u.U. ein schlechter Name für eine Eigenchaft ist, sei mal aussen vor gelassen).
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#17

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 11:56
Ich gebe Dir da völlig Recht und wollte vorhin nur aufzeigen, dass man technisch gesehen für lazy initialization nicht zwingend eine Property braucht. Ich würde das allerdings auch als Eigenschaft und somit Property ansehen und deshalb genauso schreiben.
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
ThaiSon96

Registriert seit: 7. Mai 2013
11 Beiträge
 
Delphi 7 Personal
 
#18

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 17:09
Auf jeden Fall sollten wir zunächst mal unsere Klassen in Klassendiagrammen darstellen (mit UML-Editor). Dabei sollte man für die versch. Attribute Lese- und Schreibanfragen erstellen (einfach Häkchen setzen). Das Programm hat dann immer für die Methoden dann "GetAttribut1" und/oder "SetAttribut1" in das Diagramm geschrieben, weshalb ich mich gefragt habe, wozu man diese beiden überhaupt braucht. Normalerweise schreibe ich einfach irgendwelche Funktionen oder Prozeduren...ansonsten hat sich das Thema eigentlich erledigt, weil das was ihr in euren Programmcodes angebt, hatte ich noch nicht. Trotzdem Danke für die Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 19:53
Oder als Info-Property im OI, welches dem Entwickler irgendeinen Statuswert anzeigt.

Und im Code funktioniert auch nicht immer alles.
if Assigned(MyObj.MyProp) then ging bisher immer, während if Assigned(MyObj.MyFunction) then manchmal vom Compiler abgewiesen wurde. (je nach Typ)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#20

AW: Set- und Getter-Methoden

  Alt 20. Mai 2014, 09:18
Ich würde das allerdings auch als Eigenschaft und somit Property ansehen und deshalb genauso schreiben.
Wenn ich genauer drüber nachdenke, ist dies das Argument, wann man Property (readOnly) und wann man Function verwendet.

Property verwendet man für Eigenschaften wie "Laenge", "Breite", "Geschwindigkeit" etc.

Funktionen werden für Berechnungen etc. verwendet. Somit sollte im Funktionsnamen ein Verb vorhanden sein.

Habe bisher auch für Readonly-Eigenschaften "function" verwendet. Macht aber Sinn zukünftig property zu verwenden.

(Da muss ich 20 Jahre programmieren, damit mir solche trivialen Dinge auffallen )
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  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 04:27 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