Zum Inhalt springen

„Methode (objektorientierte Programmierung)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
FBE2005 (Diskussion | Beiträge)
K #WEITERLEITUNG Methode (Programmierung)
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
#WEITERLEITUNG [[Methode (Programmierung)]]
Unter einer '''Methode''' versteht man in der – speziell [[Objektorientierte Programmierung|objektorientierten]] – Programmierung ein Konstrukt, das das Verhalten von [[Objekt (Programmierung)|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 [[Funktion (Programmierung)|Funktionen]] und [[Prozedur (Programmierung)|Prozeduren]] unterschieden.

=== 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
* Anzahl und Typ der Argumente muss exakt mit vordefinierten Parametern übereinstimmen
* konkreter [[Ergebnistyp]], also die Fixierung des [[Datentyp]]s des Ergebnisses
* Rückgabe oft durch ein <code> return </code> gekennzeichnet

=== Prozeduren ===

Eine Prozedur ist folglich ein Konstrukt, das 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
* Anzahl und Typ der Argumente muss exakt mit vordefinierten Parametern übereinstimmen
* kein [[Ergebnistyp]] im eigentlichen Sinn
* Rückgabe durch Pseudo-Datentyp [[Void (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, sei 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'' zusammenfassen. Somit kann man dann folgende Eigenschaften einer Methode nennen:

* 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
* [[Zugriffsmodifikator]]en 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, in dem 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.

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

Als Gegenstücke zu den Konstruktoren gibt es auch ''Destruktoren'' (genauer [[Garbage_Collection#Finalisierung|Finalisierungsmethoden]]).

:Mehr zu diesem Thema in [[Konstruktoren und Destruktoren]].

=== „main“-Methode in Java===

Das als ''main''-Methode, engl. für Hauptmethode, hervorgehobene Konstrukt spielt dann eine Rolle, wenn aus einer [[Klasse (objektorientierte Programmierung)|Klasse]] eine eigenständig ausführbare Applikation werden soll, da diese Methode direkt von der Virtual Machine aufgerufen wird. Beispielsweise sorgt der Aufruf <code>java Beispielklasse</code> dafür, dass die Laufzeitumgebung versucht, in der Klasse ''Beispielklasse'' eine Methode mit Namen main, Rückgabetyp void und einem Stringarray als Parameter zu finden und auszuführen.

=== „main“-Methode in anderen Programmiersprachen ===
{{Lückenhaft}}

== 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

[[Kategorie: Programmiersprachelement]]

[[be-x-old:Мэтад (праграмаваньне)]]
[[bs:Računarska metoda]]
[[cs:Metoda (objektově orientované programování)]]
[[en:Method (computer science)]]
[[et:Meetod (programmeerimine)]]
[[es:Método (informática)]]
[[fr:Méthode (informatique)]]
[[it:Metodo (programmazione)]]
[[lt:Metodas (programavimas)]]
[[nl:Methode (objectoriëntatie)]]
[[ja:メソッド (計算機科学)]]
[[pl:Metoda (programowanie obiektowe)]]
[[pt:Método (programação)]]
[[ru:Метод (языки программирования)]]
[[simple:Method (computer science)]]
[[sh:Metoda (informatika)]]
[[sv:Funktion (programmering)#Metod]]
[[ta:செயலி (கணினியியல்)]]
[[uk:Метод (програмування)]]
[[zh:方法 (電腦科學)]]

Aktuelle Version vom 30. Dezember 2009, 13:29 Uhr

Weiterleitung nach: