ein bisschen Spaß an einer Tennis-Liga-Simulation

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten

Wie lange würdet ihr für dieses Programm benötigen?

mit verbundenden Augen in der Kaffeepause
1
14%
1-2 Wochen
2
29%
3-4 Wochen
1
14%
1-2 Monate
0
Keine Stimmen
2-4 Monate
1
14%
4-6 Monate oder noch länger
2
29%
 
Insgesamt abgegebene Stimmen: 7
trvhgoy
User
Beiträge: 2
Registriert: Mittwoch 17. April 2013, 11:16

Leonidas hat geschrieben:Wobei AFAIK Alan Kay von dieser Praxis nicht so begeistert ist, weil man damit letztendlich die privaten Attribute doch wieder publiziert.
Wenn man einen Getter für eine Instanzvariable schreibt will man diese ja bewusst publizieren, daher verstehe ich diesen Einwand nicht so ganz. Für eine Instanzvariable die ich nicht publizieren will schreibe ich ja auch keinen Getter.
Das gleiche gilt für Setter.

Der größte Vorteil m. E. wenn man bei anderen Sprachen (wie Java) Getter und Setter verwendet ist, dass man z. B. eine Berechtigungsprüfung (Getter) oder eine Datenvalidierung (Setter) "nachrüsten" kann ohne, dass der Benutzer der Klasse alle Verwendungsstellen anpassen muss.
BlackJack

@trvhgoy: Die Argumentation gegen triviale Getter *und* Setter ist, dass man dadurch internen Zustand nach aussen gibt. Man kann also den Wert abfragen, verändern, und wieder zurück schreiben, wo Kay eher eine Methode auf dem Objekt erwarten würde, welche den internen Zustand verändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Der Einwand von Kay war, dass man Klassen über ihre Oparationen modifizieren soll, also ``konto1.überweise(konto2)`` statt ``konto1.set_kontostand(konto1.get_kontostand() - X); konto2.set_kontostand(konto2.get_kontostand() + X)`` und nicht über ihre Variablen arbeiten soll.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das würde ja auch dem Sag-was-Du-willst-und-nicht-wie-es-gemacht-werden-soll-Prinzip. Auf Englisch war das glaube ich kürzer, aber ich komm grad nicht drauf.
trvhgoy
User
Beiträge: 2
Registriert: Mittwoch 17. April 2013, 11:16

BlackJack hat geschrieben:@trvhgoy: Die Argumentation gegen triviale Getter *und* Setter ist, dass man dadurch internen Zustand nach aussen gibt. Man kann also den Wert abfragen, verändern, und wieder zurück schreiben, wo Kay eher eine Methode auf dem Objekt erwarten würde, welche den internen Zustand verändert.
Leonidas hat geschrieben:Der Einwand von Kay war, dass man Klassen über ihre Oparationen modifizieren soll, also ``konto1.überweise(konto2)`` statt ``konto1.set_kontostand(konto1.get_kontostand() - X); konto2.set_kontostand(konto2.get_kontostand() + X)`` und nicht über ihre Variablen arbeiten soll.
Aso, so war das gemeint. Da habt ihr / Alan Kay natürlich recht.
Diese Verwendung von Gettern / Settern entspricht nicht dem Gedanken der hinter OOP steht.
Antworten