Nicht daß ich mich darüber Beschweren möchte ...

Für Fragen von Einsteigern und Programmieranfängern...
Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Nicht daß ich mich darüber Beschweren möchte ...

Beitrag von Targion »

Warum soll man eigentlich nie eine Variable unter public verfügbar machen, sondern immer Setter und Getter oder eben propertys verwenden? (Ich mache es immer mit properties, weil ich das schönder finde, aber z.B. in Java sind die setter und getter methoden einfach nur lästig. Wenn man die variablen dann aus faulheit als public deklariert, ist das aber sofort "schlechter stil" - Warum?)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Nicht daß ich mich darüber Beschweren möchte ...

Beitrag von pluto »

Weil du dann keine Kontrolle hast, was in den Variablen steht. Z.B.:
Du möchtest das eine bestimmte Int Variable nur werte von 10-20 annehmen kann. Dafür würde sich jetzt ein Property lohnen. und das Feld für diese Varible sollte private sein. Damit der User nicht da zwischen funken kann.
Oder: Der User möchte auf eine StringList zugreifen, die vielleicht noch gar nicht erstellt ist. In einer Eigenschaft könntest du das vorher prüfen.

Das hängt aber auch mit deinen Zielen zusammen. Ein anderer Grund ist: Es ist unter der OOP einfach üblich, keine Variablen unter Public zu haben(Mache ich aber auch). Dafür gibt es die Eigenschaften.
Hier kannst du ja auch beim Lesen den Wert beeinflussen.
MFG
Michael Springwald

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Nicht daß ich mich darüber Beschweren möchte ...

Beitrag von RSE »

Naja, wenn man properties hat, dann sollte das Feld dazu unbedingt private sein. Aber wenn die property keine Getter und Setter hat, sondern nur direkt auf das Feld zugreifen würde, dann benutz ich auch keine properties sondern direkt die Felder (dann natürlich ohne vorangestelltes F im Namen).
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Nicht daß ich mich darüber Beschweren möchte ...

Beitrag von Socke »

In der Theorie sind die properties dazu da um den Datenzugriff OOP-gerecht von der Speicherung zu trennen. Vollkommen OOP würde ich auf die Daten nie mehr direkt zugreifen sondern immer die Kapselung durch Objekt, property und Methoden verwenden. Da das ganz etwas übersichtlicher ist, als wenn ich jede Variable global deklariere, ist das auch einfach zu lesen. In der Praxis gilt aber immer noch: Was funktioniert, funktioniert (oder anders ausgedrückt: der Compiler wirds dir sagen).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Nicht daß ich mich darüber Beschweren möchte ...

Beitrag von pluto »

oder anders ausgedrückt: Du wirst es schon merken wenn es nicht Funktioniert. Ich denke aber es kommt immer drauf an, was du genau machen möchtest. Property's gibt es in sehr vielen Formen. Sie sind wie ich finde, ein mächtiges Werkzeug. Ich glaube das ist auch einzigartig in "Object Pascal", in dieser Form. In keiner anderen sprachen kommen sie vor bzw. sie Funktionieren dann anders.
MFG
Michael Springwald

AlterMann
Beiträge: 238
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Nicht daß ich mich darüber Beschweren möchte ...

Beitrag von AlterMann »

Ich habe bereits begonnen eigene Properties zu verwenden und freunde mich schnell damit an.
Besonders die Eigenschaft durch bloßes Zuweisen eines Wertes "Hintergrundarbeit" automatisiert ablaufen zu lassen ist Gold wert.

Grüße
Christian
Früher war alles besser. Und aus Holz!

Antworten