Definition
Manipulierende Methode
Eine manipulierende Methode ist in der OOP eine Methode, die Instanzvariablen eines Objektes verändert (manipuliert). Ein Spezialfall sind die Setter-Methoden, die den Wert von genau einer bestimmten Instanzvariable verändern.
Erläuterungen
Betrachten wir dazu den folgenden Quelltext:
public class Circle { private int xPosition, yPosition, radius; public void setXPosition(int pXPos) { xPosition = pXPos; } public int getXPosition() { return xPosition; } public void moveRight() { xPosition += 50; } }
In diesem Quelltext sehen wir zwei manipulierende und eine sondierende Methode.
Die manipulierende Methode setXPosition(int pXPos) verändert den Wert der Instanzvariable xPosition und wertet dazu den übergebenen Parameter pXPos aus. Es handelt sich hier um eine klassische Setter-Methode.
Die Methode moveRight() ist ebenfalls eine manipulierende Methode, aber keine Setter-Methode. Sie verändert den Wert der Instanzvariable xPosition um einen bestimmten, in der Methode festgelegten Wert. Ein Parameter ist hierfür daher nicht erforderlich.
Die Methode getXPos() schließlich ist eine sondierende Methode, genauer gesagt, eine Getter-Methode.
Weitere Aspekte
- Manipulierende Methoden dienen dazu, den Wert einer oder mehrerer Instanzvariablen zu verändern.
- Manipulierende Methoden sind - genau wie sondierende Methoden - ein unverzichtbarer Bestandteil der Datenkapselung in der OOP.
- Eine manipulierende Methode liefert in der Regel keinen Wert zurück, was man an dem Schlüsselwort "void" erkennt. Es gibt allerdings manipulierende Methoden, die einen Kontrollwert zurückliefern, der Aufschluss darüber gibt, ob die Veränderung der Instanzvariable(n) erfolgreich war.
Setter-Methoden
Setter-Methoden sind Methoden, die genau eine Instanzvariable verändern.
Demnach wäre eine Methode wie setPosition(int pX, int pY) keine Setter-Methode im strengen Sinn, da hier zwei Instanzvariablen verändert werden.
Validierung: Oft haben Setter-Methoden einen Validierungsmechanismus eingebaut, der sicher stellen soll, dass die Instanzvariable nur bestimmte, vordefinierte Werte annehmen kann.
public void setWeight(double pWeight) { if (pWeight < 0) weight = 1; else weight = pWeight; }
Hier wird der Parameter überprüft und gegebenenfalls "zurechtgestutzt", bevor sein Wert an die Instanzvariable weight übertragen wird.
Quellen:
- Lahres et al.: Objektorientierte Programmierung, Rheinwerk Computing 2021.
- Barnes, Kölling: Java lernen mit BlueJ - Objects first. Pearson-Verlag 2019.
- Ullenboom: Java ist auch eine Insel, Rheinwerk Computing 2023.