„Generische Funktion“ – Versionsunterschied

[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
MerlBot (Diskussion | Beiträge)
+QS: Kategorien fehlen
K Typo
 
(5 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Generische Funktionen''' (nicht zu verwechseln mit Funktionen bei der [[Generische Programmierung|generischen Programmierung]]) sind innerhalb der [[Objektorientierte Programmierung|objektorientierten Programmierung]] ein Konzept<ref>{{Internetquelle |url=http://c2.com/cgi/wiki?GenericFunction |titel=Generic Function |werk=Wiki Wiki Web |hrsg=[[Portland Pattern Repository]], [[Ward Cunningham]] |datum=2003-07-15 |zugriff=2013-11-03 }}</ref> bestimmter [[Programmiersprache]]n wie [[Common Lisp]],<ref>{{Internetquelle |url=http://clhs.lisp.se/Body/07_fa.htm |autor=Kent Pitman |titel=7.6.1 Introduction to Generic Functions |werk=Common Lisp HyperSpec |hrsg=LispWorks Ltd. |zugriff=2013-11-03 }}</ref> die [[Multimethode]]n implementieren. Da sich Multimethoden aufgrund ihrer Natur nicht sinnvoll einer [[Klasse (Programmierung)|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.
{{QS-Antrag|11. Oktober 2013| [[WP:Wikifizieren]]: [[Wikipedia:Kategorien|Kategorien]] fehlen -- [[Benutzer:MerlBot/AutoQS|MerlBot]] 19:00, 11. Okt. 2013 (CEST)}}
'''Generische Funktionen''' (nicht zu verwechseln mit Funktionen bei der [[Generische Programmierung|Generischen Programmierung]]) ist innerhalb der [[Objektorientierte Programmierung|Objektorientierten Programmierung]] ein Konzept bestimmter Programmiersprachen wie [[Common_Lisp|Common Lisp]], die [[Multimethoden]] implementieren. Da sich Multimethoden aufgrund ihrer Natur nicht sinnvoll einer Klasse zuordnen lassen, werden sie statt dessen einer Generischen Funktion zugeordnet. Die Gesamtheit der auf diesem Weg einer Generischen Funktion zugeordneten Methoden bildet dann ihren Funktionsumfang.


==Generische Funktionen in Common Lisp==
== Generische Funktionen in Common Lisp ==
===Definition===
=== 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.
Generische Funktionen werden mit dem Makro <code>defgeneric</code> definiert. Die formale Parameterliste besteht nur aus den Parametertypen, da keine Parameternamen benötigt werden. Einen eigenen Funktionskörper haben generische Funktionen nicht.
<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
(defgeneric meine-funktion (typ1 typ2 typ3))
(defgeneric meine-funktion (typ1 typ2 typ3))
</syntaxhighlight>
</syntaxhighlight>
===Verwendung===
Die Generischen Funktionen bildet nur den Einstiegspunkt in eine Hierarchie von Methoden.
Ihre Defnition 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 ==
=== 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 ==
* [[Multimethoden]]
* [[Common Lisp Object System]]
* [[Common Lisp Object System]]

== Einzelnachweise ==
<references />

[[Kategorie:Programmierkonzept]]
[[Kategorie:Objektorientierte Programmierung]]

Aktuelle Version vom 4. Februar 2015, 17:16 Uhr

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

  1. Generic Function. In: Wiki Wiki Web. Portland Pattern Repository, Ward Cunningham, 15. Juli 2003, abgerufen am 3. November 2013.
  2. Kent Pitman: 7.6.1 Introduction to Generic Functions. In: Common Lisp HyperSpec. LispWorks Ltd., abgerufen am 3. November 2013.