Methode (objektorientierte Programmierung)

Dies ist eine Version, die am 25. Juni 2009 gesichtet wurde. Neue Änderungen könnten seitdem vorgenommen worden sein.

Unter einer Methode versteht man in der – speziell objektorientierten – Programmierung ein Konstrukt, dass das Verhalten von Objekten beschreibt.

Einordnung

Das Kernstück jeder objektorientierten Überlegung bildet das Objekt. Allgemein kann man sagen, dass Objekte Attribute und Methoden enthalten. Dabei sind Attribute nur Variablen und Konstanten die Werte aufnehmen können, und beschreiben damit das statische Wesen des Objektes. Im Gegensatz dazu gibt es die „Methoden“ die das gesamte dynamische Verhalten des Objektes oder einer Klasse von Objekten charakterisieren; sie enthalten die „algorithmische Essenz“ des Objektes bzw. ganzer Programme oder komplexere Softwarearchitekturen.

In den meisten Programmiersprachen wird direkt zwischen Funktionen und Prozeduren unterschieden. Das ist aber in objektorientierten Sprache (wie Java) nicht mehr nötig.

Funktionen

Das Funktionsprinzip versteht sich in der Programmierung analog zur Mathematik. Charakteristika des Konstruktes:

  • Möglichkeit der „Eingabe“ (bzw. Übergabe) von einem oder mehreren Argumenten
  • deren Anzahl und Typ muss exakt mit vordefinierten Parametern übereinstimmen
  • konkreter Ergebnistyp, also die Fixierung des Datentyps des Ergebnisses
  • Rückgabe oft durch ein return gekennzeichnet

Prozeduren

Eine Prozedur ist folglich ein Konstrukt, dass es erlaubt eine bestimmte Aufgabe in wiederverwendbarer Art umzusetzen, das heißt sie berechnet kein Ergebnis sondern führt viel mehr eine Aktion aus.

  • Möglichkeit der „Eingabe“ (bzw. Übergabe) von einem oder mehreren Objekten
  • deren Anzahl und Typ muss exakt mit vordefinierten Parametern übereinstimmen
  • kein Ergebnistyp im eigentlichen Sinn
  • Rückgabe durch Pseudo-Datentyp void gekennzeichnet

Synthese

Wenn man beide Konstrukte einmal genauer vor dem Hintergrund der Objektorientierung vergleicht, kommt man zu dem Schluss, dass die Unterschiede so gering sind, dass man auch einfach sagen könnte, eine Prozedur sei eine „Funktion ohne Rückgabewert“ – oder kürzer, ist eine „void-Funktion“. Analog könnte eine Funktion eine „Prozedur mit konkretem Rückgabewert“ sein.

Und damit man sich bei diesen Charakterisierungen nicht im Kreis dreht, kann man beide Konstrukte unter dem Begriff der Methode zusammen fassen. Und so kann man dann sagen eine Methode hat:

  • einen Namen (Identifier)
  • eine Parameterliste
  • ein Ergebnis (klassischer Ereignistyp/Rückgabewert oder void)

Differenzierung

Diese Synthese ist allerdings nur auf der abstrakten Ebene möglich. In der Praxis gibt es noch eine Vielzahl von Besonderheiten die bei der Arbeit mit Methoden beachtet werden müssen.

  • Es gibt einige spezielle Arten von Methoden, mit evtl. unterschiedlicher Syntax
  • Zugriffsmodifikatoren können das Verhalten von Methoden beeinflussen
  • Überladen kann eine Rolle spielen
  • die Übergabe von Objekten an Prozeduren erfolgt über die sog. Punktnotation

Konstruktormethoden

Konstruktoren sind spezielle Methoden ohne Ergebnistyp, deren Name mit dem Namen der Klasse übereinstimmt. Man muss also anfangen Methoden in dem Kontext zu betrachten indem sie gebraucht werden bzw. definiert sind (sich befinden). Wie der Name vermuten lässt dienen Konstruktoren dem „Erschaffen“ (konstruieren) von Objekten nach einem gewissen Vorbild. M

Weiterhin kann man zwischen impliziten (vorgegebenen) und expliziten (selbst erstellten) Konstruktoren unterscheiden.

Als Gegenstücke zu den Konstruktoren gibt es auch Destruktoren (genauer Finalisierungsmethoden).

Mehr zu diesem Thema in Konstruktoren und Destruktoren.

„main“-Methode

Das als main-Methode, engl. für Haupt-Methode, hervorgehobene Konstrukt spielt dann eine Rolle, wenn aus einer Klasse eine Applikation (ein Programm) werden soll, denn sie markiert den für die Ausführung relevanten Inhalt.

Literatur

  • Peter Pepper, Programmieren lernen - Eine grundlegende Einführung mit Java, Springer, 2007, ISBN 978-3-540-72363-9
  • Katharina Morik und Volker Klingspor, Informatik kompakt: Eine grundlegende Einführung mit Java, Springer, 2006, ISBN 3-540-24304-6