www.wikidata.de-de.nina.az
Duck Typing ist ein Konzept der objektorientierten Programmierung bei dem der Typ eines Objektes nicht durch seine Klasse beschrieben wird sondern durch das Vorhandensein bestimmter Methoden oder Attribute 1 Es handelt sich gewissermassen um die Anwendung des Ententests in der Informatik in Anlehnung an James Whitcomb Rileys Gedicht When I see a bird that walks like a duck and swims like a duck and quacks like a duck I call that bird a duck Wenn ich einen Vogel sehe der wie eine Ente lauft wie eine Ente schwimmt und wie eine Ente schnattert dann nenne ich diesen Vogel eine Ente Duck Typing ist charakteristisch fur objektorientierte Skriptsprachen wie Python Groovy PHP und Ruby Beim Duck Typing wird zur Laufzeit des Programms gepruft ob ein Objekt die entsprechenden Merkmale unterstutzt Dies fuhrt wie bei allen dynamischen Typsystemen zu einer erhohten Flexibilitat reduziert aber ebenso die Moglichkeit statisch zur Ubersetzungszeit Fehler im Programm zu finden In Sprachen wie Java und D sowie C bis Version 3 0 ist es erforderlich bei der Definition einer Klasse anzugeben welche Interfaces implementiert werden sollen Diese Sprachen erlauben es somit nicht nach der Fertigstellung einer Klasse festzulegen dass die Klasse zusatzlich noch ein anderes Interface implementiert selbst wenn alle Methoden vorhanden waren und die Objekte somit die gesamte Funktionalitat bereitstellen wurden In C bieten Funktionstemplates eine Art Duck Typing zur Kompilierzeit Altere GCC Versionen boten daneben auch sogenannte Signatures an Diese lassen sich wie Interfaces deklarieren und nutzen sie sind jedoch unabhangig von der Klassenhierarchie sodass beispielsweise fur eine Ente nicht erneut deklariert werden muss dass sie schnattern kann also die Signature implementiert Dies entspricht den Interface genannten Strukturen in Go Einzelnachweise Bearbeiten Glossary Python 3 11 1 documentation In docs python org Abgerufen am 3 Februar 2023 Abgerufen von https de wikipedia org w index php title Duck Typing amp oldid 233479059