AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Set- und Getter-Methoden

Ein Thema von ThaiSon96 · begonnen am 18. Mai 2014 · letzter Beitrag vom 20. Mai 2014
Antwort Antwort
ThaiSon96

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

AW: Set- und Getter-Methoden

  Alt 18. Mai 2014, 17:58
Danke für die Antworten!
@Namenloser: Kannst du eventuell ein Beispiel für diese Methoden anhand deines Beispiels mit der Datenbank schicken? Das wäre sehr hilfreich!
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Set- und Getter-Methoden

  Alt 18. Mai 2014, 18:01
Ein konkretes Code-Beispiel hab ich leider nicht. Da musst du deine Fantasie einsetzen
  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
 
#3

AW: Set- und Getter-Methoden

  Alt 18. Mai 2014, 18:07
Danke für die Antworten!
@Namenloser: Kannst du eventuell ein Beispiel für diese Methoden anhand deines Beispiels mit der Datenbank schicken? Das wäre sehr hilfreich!
Schreib du doch mal ein Beispiel und was du dort erklärt haben möchtest, das wäre auch sehr hilfreich
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
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Set- und Getter-Methoden

  Alt 18. Mai 2014, 20:59
... ein Beispiel für diese Methoden anhand deines Beispiels mit der Datenbank schicken? Das wäre sehr hilfreich!
Beispiel für ein Property, das gelesen und geschrieben werden kann:
Delphi-Quellcode:
UNIT UnitData;

INTERFACE

USES
  SysUtils, Classes, DB, ADODB;

TYPE
  TDatMod = CLASS(TDataModule)
    AConMain : TADOConnection;

  PRIVATE { Private-Deklarationen }
    fPfadMain : String;

    Function GetfPadMain: String;
    Procedure SetfPfadMain(const Value: String);

  PUBLIC { Public-Deklarationen  }

    Property PfadMain : String Read GetfPadMain Write SetfPfadMain;
END;

VAR
  DatMod : TDatMod;

IMPLEMENTATION
{$R *.dfm}
{ TDatMod }

// *************** PRIVATE METHODEN ******************

// ---------- PFADMAIN - GET -------------------------
Function TDatMod.GetfPadMain: String;
begin
  Result := fPfadMain;
end;

// ---------- PFADMAIN - SET -------------------------
Procedure TDatMod.SetfPfadMain(const Value: String);
begin
  fPfadMain := Value;
end;

// *************** PUBLIC METHODEN *******************

// *************** ERGEIGNISSE ***********************

end.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 08:50
Man kann das auch für Weiterleitungen nutzen.
z.B. in einer untergeordneten Komponente werden die Daten eigentlich gespeichert, aber im parent gibt es dennoch ein Property, um direkt darauf zuzugreifen.

Oder man erstellt den Rückgabewert erst im Getter.

z.B. property Uhrzeit: TTime read GetTime;

Oder das Property LineBreak der TStringList. Dieses hat standardmäßig keinen Wert und gibt nur den Inhalt der globalen Konstante SLineBreak zurück.
Erst wenn man etwas zuweist (Setter), dann existiert der "private" Wert, welcher nun zurückgegeben wird.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

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

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 09:05
Oder man erstellt den Rückgabewert erst im Getter.

z.B.

property Uhrzeit: TTime read GetTime;


Will jetzt nicht die Diskussion in eine andere Richtung leiten, aber es interessiert mich einfach.

Was für ein Sinn mach ein Property ohne Setter. Dann kann ich doch gleich eine Function daraus machen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Jumpy

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

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 09:51
Was für ein Sinn mach ein Property ohne Setter. Dann kann ich doch gleich eine Function daraus machen.

Das kann z.B. für lazy initialisation (heißt das so?) interessant sein:

Delphi-Quellcode:
Type TFoo=Class
  private
    fBar:TBar;
    function getBar:TBar;
  public
    Property Bar:TBar read getBar;
  end;

//....

function TFoo.getBar:TBar;
begin
  if fBar=nil then
    begin
    fBar:=TBAr.create;
    //...
    end;
  Result:=fBar;
end;
Ralph

Geändert von Jumpy (19. Mai 2014 um 10:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 09: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
 
#9

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 10: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
Jumpy

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

AW: Set- und Getter-Methoden

  Alt 19. Mai 2014, 10: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
Antwort Antwort

 

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 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz