Methodensignatur

Methodensignatur

Eine Signatur (oder Methodensignatur) definiert in der Programmierung die formale Schnittstelle einer Funktion. Sie besteht aus dem Namen der Funktion, der Anzahl, Reihenfolge und Typen ihrer Parameter und dem Typ des oder der Funktionsrückgabewerte.

Auch die Menge der Operatoren eines abstrakten Datentyps wird Signatur genannt.[1]

Inhaltsverzeichnis

Objektorientierung

In der objektorientierten Programmierung ist eine Signatur die formale Schnittstelle einer Methode.[2]

Signaturen spielen eine Rolle bei der Polymorphie, einem der grundlegenden Konzepte der Objektorientierung. In vielen Programmiersprachen kann eine Methode einer abgeleiteten Klasse die Methode einer Basisklasse genau dann überschreiben, wenn die Signaturen der beiden Methoden identisch sind.

Im folgenden Java-Beispiel sind die Signaturen der beiden Methoden gleich, ihre Implementierung ist jedoch unterschiedlich. Die Methode „hello“ hat in beiden Fällen die Signatur „String hello(String)“, der Name des Parameters sowie der Inhalt der Methode sind irrelevant. Die Methode in der abgeleiteten Klasse kann also die Methode der Basisklasse überschreiben.

class Basisklasse {
    String hello(String name) {
        return "Hallo " + name;
    }
}
 
class AbgeleiteteKlasse extends Basisklasse {
    String hello(String nordischerName) {
        return "Moin " + nordischerName;
    }
}

Die Menge aller öffentlichen Signaturen definiert die Schnittstelle einer Klasse.

Überladen von Methoden

Soll eine Methode überladen werden, muss jede Version eine unterschiedliche Signatur besitzen. Dabei wird bei den meisten Programmiersprachen der Rückgabetyp nicht berücksichtigt, weil die andernfalls entstehende Mehrdeutigkeit sowohl die Verständlichkeit des Programms beeinträchtigen als auch den Arbeitsaufwand des Compilers deutlich erhöhen würde.

Interne Repräsentation in Programmiersprachen

Viele C++-Compiler bilden aus dem Namen einer Funktion oder Methode und der kodierten Signatur einen so genannten dekorierten Funktionsnamen. Dieser zusammengesetzte Name bildet das Linkersymbol. Damit kann verhindert werden, dass Funktionen mit gleichem Namen, aber unterschiedlicher Signatur durch den Linker fälschlicherweise miteinander verknüpft werden. Die Namen von Methoden enthalten zusätzlich noch den Klassennamen. Allerdings sind die dekorierten Funktionsnamen nur für den passenden Compiler/Linker zu interpretieren, wie folgendes Beispiel zeigt:

?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z
?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z

In der Programmiersprache Java existiert ebenfalls eine interne Repräsentation von Methodennamen, der so genannte method descriptor. Im Gegensatz zu C++ ist diese Teil der Sprachspezifikation und somit für alle Compiler und virtuellen Maschinen identisch. Das folgende Beispiel zeigt die interne Form der Signatur der Methode „Object meineMethode(int i, double d, Thread t)“.[3]

(IDLjava/lang/Thread;)Ljava/lang/Object;

Quellen

  1. R. Dumke: Einführung, Algorithmen und Datenstrukturen. Otto-von-Guericke-Universität Magdeburg
  2. Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiener: Objektorientiertes Software-Design. Carl Hanser Verlag, München 1993, ISBN 3-446-16319-0
  3. Tim Lindholm, Frank Yellin: The JavaTM Virtual Machine Specification: Second Edition. Abschnitt 4.3.3 Method Descriptors.

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Ausnahme (EDV) — Klassifizierung verschiedener Ausnahmesituationen Eine Ausnahme oder Ausnahmesituation (engl. exception) bezeichnet in der Computertechnik ein Verfahren, Informationen über bestimmte Programmzustände – meistens Fehlerzustände – an andere… …   Deutsch Wikipedia

  • Ausnahmebehandlung — Klassifizierung verschiedener Ausnahmesituationen Eine Ausnahme oder Ausnahmesituation (engl. exception) bezeichnet in der Computertechnik ein Verfahren, Informationen über bestimmte Programmzustände – meistens Fehlerzustände – an andere… …   Deutsch Wikipedia

  • Ausnahmefehler — Klassifizierung verschiedener Ausnahmesituationen Eine Ausnahme oder Ausnahmesituation (engl. exception) bezeichnet in der Computertechnik ein Verfahren, Informationen über bestimmte Programmzustände – meistens Fehlerzustände – an andere… …   Deutsch Wikipedia

  • Checked Exceptions — Klassifizierung verschiedener Ausnahmesituationen Eine Ausnahme oder Ausnahmesituation (engl. exception) bezeichnet in der Computertechnik ein Verfahren, Informationen über bestimmte Programmzustände – meistens Fehlerzustände – an andere… …   Deutsch Wikipedia

  • Exception — Klassifizierung verschiedener Ausnahmesituationen Eine Ausnahme oder Ausnahmesituation (engl. exception) bezeichnet in der Computertechnik ein Verfahren, Informationen über bestimmte Programmzustände – meistens Fehlerzustände – an andere… …   Deutsch Wikipedia

  • JFC — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Java (Framework) — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Java (Programmiersprache) — Java Basisdaten Paradigmen: Objektorientierte Programmiersprache Erscheinungsjahr …   Deutsch Wikipedia

  • Java (Softwaretechnologie) — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Java — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”