www.wikidata.de-de.nina.az
Eine Signatur oder Methodensignatur definiert in der Programmierung die formale Schnittstelle einer Funktion oder Prozedur Sie besteht aus dem Namen der Funktion sowie der Anzahl Art und Reihenfolge der zuweisungskompatiblen Parameterdatentypen wobei zwischen Eingangs Ausgangs und Durchgangsparametern unterschieden werden kann Der Typ des Ruckgabewerts gehort bei streng strukturierten Programmiersprachen ebenfalls zur Signatur 1 2 genauso wie die Modifikatoren die die Regeln fur die Sichtbarkeit und die Uberschreibbarkeit einer Methode festlegen 3 4 Unter Signaturvererbung versteht man in der objektorientierten Programmierung die Ubertragung einer in der Oberklasse definierten und eventuell implementierten Methode auf die Unterklasse Statische Methoden mit sich unterscheidender Signatur konnen nicht uberschrieben werden sondern konnen bei weniger streng strukturierten Programmiersprachen gegebenenfalls uberladen werden Auch die Menge der Operatoren eines abstrakten Datentyps wird Signatur genannt 5 Inhaltsverzeichnis 1 Ruckgabetyp 2 Objektorientierung 2 1 Uberschriebene Methoden 2 2 Klassensignatur 3 Interne Reprasentation in Programmiersprachen 4 Siehe auch 5 EinzelnachweiseRuckgabetyp BearbeitenIn Pascal und C Abkommlingen und ahnlichen Sprachen welche bei Uberladungen den Ruckgabetyp nicht berucksichtigen kann nicht unterschieden werden welche Methode im konkreten Anwendungsfall benutzt werden soll Beispiel Deklaration float teile int dividend int divisor die Signatur ist hier teile int int double teile int a int b nicht erlaubt Signatur ist dieselbe wie oben teile int int Beide Methoden bzw Funktionen oben hatten die gleiche Signatur Deklaration boolean isNegativ float zahl die Signatur ist isNegativ float boolean isNegativ double zahl in Ordnung Signatur ist anders isNegativ double Jetzt konnte nicht mehr entschieden werden welche Funktion teile int int im konkreten Anwendungsfall benutzt werden soll Die obigen Funktionen sollen hier benutzt werden boolean b isNegativ teile x y float teile oder double teile Im Gegensatz dazu kann die Moglichkeit gegeben werden in Ausdrucken explizit einen Typ anzugeben Dadurch kann das Aufrufziel eindeutig angegeben werden Haskell macht hiervon Gebrauch Beispielsweise ergeben die Ausdrucke read 42 Integer und read 42 Double verschiedene Werte unterschiedlichen Typs Objektorientierung BearbeitenIn der objektorientierten Programmierung ist eine Signatur die formale Schnittstelle einer Methode 6 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 uberschreiben wenn die Signaturen der beiden Methoden identisch sind Uberschriebene Methoden Bearbeiten Im folgenden Java Beispiel scheinen die Methodensignaturen aus Oberklasse und abgeleiteter Klasse gleich zu sein String redeMit String Fur den Compiler haben die Methoden jedoch unterschiedliche Signaturen da er noch die zugehorigen Namensraume und Klassentypen berucksichtigt Die Methode der abgeleiteten Klasse hat hier die Methode der Basisklasse uberschrieben englisch override Hier ein Beispiel Superklasse class Person String redeMit String name return Hallo name Abgeleitete Klasse Superklassenrelation impliziert Supertyprelation class NettePerson extends Person Methode redeMit String wird uberschrieben String redeMit String name return Schon Dich zu sehen name public class Main public static void main String args Person p Hier kann erst zur Laufzeit entschieden werden welche Methode genommen werden soll if 0 5 lt Math random p new Person originale Person p else p new NettePerson Person p wird mit nettem Verhalten instanziert for String name args System out println p redeMit name Zur Laufzeit fuhrt jedes Objekt einen Zeiger auf eine Tabelle virtueller Methoden mit die fur jede Klasse existiert Dieser Zeiger wird bei der Objekt Instanziierung initialisiert und ermoglicht so Polymorphie also uberschreibbares Verhalten Unterklasse Instanzen konnen gegebenenfalls noch mittels sogenannter Superzeiger auf die uberschriebenen Methoden ihrer Superklassen zugreifen Klassensignatur Bearbeiten Die Menge aller offentlichen Signaturen definiert die Schnittstelle einer Klasse Interne Reprasentation in Programmiersprachen BearbeitenViele C Compiler bilden aus dem Namen einer Funktion oder Methode und der kodierten Signatur einen sogenannten dekorierten Funktionsnamen englisch mangled name Dieser zusammengesetzte Name bildet das Linkersymbol Damit kann verhindert werden dass Funktionen mit gleichem Namen aber unterschiedlicher Signatur durch den Linker falschlicherweise miteinander verknupft werden Die Namen von Methoden enthalten zusatzlich noch den Klassennamen Allerdings sind die dekorierten Funktionsnamen nur fur den passenden Compiler bzw 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 ZIn der Programmiersprache Java existiert ebenfalls eine interne Reprasentation von Methodennamen der sogenannte method descriptor Im Gegensatz zu C ist dieser Teil der Sprachspezifikation und somit fur 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 7 IDLjava lang Thread Ljava lang Object Siehe auch BearbeitenFunktionsprototypEinzelnachweise Bearbeiten Bjorn Kellermann 1 3 Signatur Definitionm Haskell abgerufen am 3 Februar 2014 Thomas Briner Lienhard Keywords fuer Programmstruktur PDF Oberon abgerufen am 3 Februar 2014 Signature functions Mozilla org abgerufen am 25 Marz 2018 Static Methods Computer Science Princeton University abgerufen am 25 Marz 2018 R Dumke Einfuhrung Algorithmen und Datenstrukturen Memento des Originals vom 30 April 2006 imInternet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot ivs cs uni magdeburg de Otto von Guericke Universitat Magdeburg Rebecca Wirfs Brock Brian Wilkerson Lauren Wiener Objektorientiertes Software Design Carl Hanser Verlag Munchen 1993 ISBN 3 446 16319 0 Tim Lindholm Frank Yellin The JavaTM Virtual Machine Specification Second Edition Abschnitt 4 3 3 Method Descriptors Memento des Originals vom 8 Juli 2013 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot docs oracle com Abgerufen von https de wikipedia org w index php title Signatur Programmierung amp oldid 197237450