Getters und Setters, C# und Java

Wir benutzen Getters und Setters wenn wir unsere Private Members ansprechen wollen.

Mit Getters bekommen wir den Wert der Variable als Rückgabe Wert und mit Setters können wir den Wert verändern.

Der Name Getter (get) und Setters (set) kommen aus die englische Sprache und sind übersetzt auf Deutsch „holen“ und „setzten“. Und das ist ja genau was sie machen.

Wieso braucht man Getters, Setters und Private Variablen?

Wenn man eine Variable auf „Public“ setzt, kann jeder diesen Wert anschauen und beliebig verändern. Wenn man diese aber auf „Private“ setzte, sieht man ihn ausserhalb der Klasse gar nicht.

Ein zweiter Grund ist das wenn man mit Getters und Setters arbeite, verhindert man einfach Fehler und das Programm wird besser funktionieren wenn man es gut geschrieben habe.

Der dritte Grund ist weil man mit Getters und Setters gleichzeitig eine Formel einbinden kann.
Sagen wir, dass unsere Variable zum Beispiel „_totalCost“ heisst. Aber zum _totalCost berechnen müssen wir aber der Variable „_pricePerPerson“ mit der Variable „_persons“ multiplizieren. Also muss der Member Variable „_totalCost“ geändert werden wenn die Variable „_persons“ geändert wird. Und mit Getters und Setters können wir genau diese Multiplikation einbinden (siehe Beispiel unten).

cSharp

In diesem Beispiel geht man zuerst und verändert die Member Variable und danach aktualisiert man den „_totalCost“ Wert, weil man jetzt die Anzahl Personen geändert hat.

Was auch einen guten Grund ist zum Getters und Setters einzusetzen ist zum Beispiel wenn man zuerst den neuen Wert kontrollieren will, so dass man beispielsweise bei einer „Arbeitsstunden Rechner“ eine ungültige Zeit angegeben kann (zum Beispiel: 02.30, weil man in der Nacht nicht arbeiten darf).

In C# sind das Properties. In Java sind das Methoden, aber eigentlich ist die Funktionalität mehr oder weniger dasselbe, einziger Unterschied ist der Aufbau.

In Java wurde der Selben Code wie solches aussehen:

java

Hier sind die Getters und Setters wie normale Methoden geschrieben. Dies funktioniert, weil die Methoden Public sind und deswegen kann man auf diese ausserhalb der Klasse zugreifen und die Methoden können danach auf die lokale Member Variable zugreifen und verändern / zurückgeben.

Vorteile:

  • Bugg-Behebung
  • Sicherer
  • Möglichkeit von Validierung / Vorbereitung

Nachteile:

  • Braucht viel Platz im Code
  • Braucht viel Aufwand
Advertisements