Generische Funktionen (nicht zu verwechseln mit Funktionen bei der generischen Programmierung) sind innerhalb der objektorientierten Programmierung ein Konzept[1] bestimmter Programmiersprachen wie Common Lisp,[2] die Multimethoden implementieren. Da sich Multimethoden aufgrund ihrer Natur nicht sinnvoll einer Klasse zuordnen lassen, werden sie stattdessen einer generischen Funktion zugeordnet. Die Gesamtheit der auf diesem Weg einer generischen Funktion zugeordneten Methoden bildet dann ihren Funktionsumfang.
Generische Funktionen in Common Lisp
Definition
Generische Funktionen werden mit dem Makro defgeneric
definiert. Die formale Parameterliste besteht nur aus den Parametertypen, da keine Parameternamen benötigt werden. Einen eigenen Funktionskörper haben generische Funktionen nicht.
(defgeneric meine-funktion (typ1 typ2 typ3))
Verwendung
Die Generischen Funktionen bildet nur den Einstiegspunkt in eine Hierarchie von Methoden. Ihre Definition darf unterbleiben, da sie automatisch erfolgt, sobald eine erste Methode gleichen Namens definiert wird. Sofern allerdings optionale, keyword- oder rest-Parameter vorgesehen sind, kann die genaue Spezifikation der Parameterliste nur über eine explizite Definition der generischen Funktionen erfolgen.
Siehe auch
Einzelnachweise
- ↑ Generic Function. In: Wiki Wiki Web. Portland Pattern Repository, Ward Cunningham, 15. Juli 2003, abgerufen am 3. November 2013.
- ↑ Kent Pitman: 7.6.1 Introduction to Generic Functions. In: Common Lisp HyperSpec. LispWorks Ltd., abgerufen am 3. November 2013.