Methods (Methoden)
Kurz: Eine Funktion, die zu einer Klasse gehört und auf den Daten eines Objekts operiert — der “Fähigkeiten”-Teil einer Klasse, im Gegensatz zu ihren reinen Datenfeldern.
Genauer: Methoden können Parameter entgegennehmen, einen Wert zurückgeben (oder void sein, also nichts zurückgeben) und über Overloading mehrfach mit unterschiedlichen Parameterlisten definiert werden. Über Zugriffsmodifizierer wird gesteuert, von wo aus eine Methode aufgerufen werden darf.
Im Detail
Der Unterschied zwischen einer Methode und einer “normalen” Funktion ist rein organisatorisch: Eine Methode ist eine Funktion, die an eine Klasse gebunden ist und (bei nicht-statischen Methoden) implizit Zugriff auf die Felder des konkreten Objekts hat, auf dem sie aufgerufen wird — dieser implizite Bezug heißt oft this/self.
class Rechteck {
double breite;
double hoehe;
double berechneFlaeche() { // Methode - hat Zugriff auf breite/hoehe
return this.breite * this.hoehe;
}
}
Rechteck r = new Rechteck();
r.berechneFlaeche(); // Aufruf AUF einem konkreten ObjektMethoden lassen sich grob nach ihrer Wirkung einteilen: Query-Methoden liefern Informationen zurück, ohne den Zustand des Objekts zu verändern (z. B. ein Getter), Command-Methoden verändern den Zustand, geben aber oft nichts (oder nur eine Bestätigung) zurück (z. B. einzahlen()). Diese Trennung (“Command-Query-Separation”) gilt als guter Stil, weil sie vorhersehbar macht, was ein Methodenaufruf bewirkt, ohne dass man seine Implementierung lesen muss.
Eine gute Methode sollte idealerweise kurz und auf EINE klar benennbare Aufgabe fokussiert sein — eine Methode, die gleichzeitig Daten validiert, in eine Datenbank schreibt und eine E-Mail verschickt, ist schwer zu testen und wiederzuverwenden. Die Faustregel “eine Methode sollte auf einen Bildschirm passen” ist zwar nicht streng, aber ein brauchbares Warnsignal für zu viel Verantwortung an einer Stelle.
Siehe auch: Parameters, void, Overloading, Classes