First-Class-Objekt
Ein First-Class-Objekt (englisch first-class object, deutsch etwa „Objekt erster Klasse“) bezeichnet in der Programmierung von Computersystemen ein Objekt, das als Übergabeparameter oder Rückgabewert einer Funktion oder Prozedur auftritt bzw. einer Variablen zugewiesen werden kann.[1]
Der Begriff wurde von Christopher Strachey im Kontext functions as first-class citizens Mitte der 1960er Jahre geprägt.[2]
Definition
Ein Objekt ist von erster Klasse, falls es die folgenden Bedingungen erfüllt:[3][4]
- es kann in Programmvariablen gespeichert werden,
- es kann als Parameter an Funktionen oder Prozeduren übergeben werden,
- es kann als Rückgabewert von Funktionen dienen,
- es kann zur Laufzeit eines Programms erstellt werden und
- es hat eine eigene Identität (unabhängig vom Namen).
Der Begriff Objekt muss dabei nicht im engeren Sinne als ein Objekt einer objektorientierten Programmiersprache verstanden werden. In den meisten Programmiersprachen sind insbesondere die Objekte der elementaren Datentypen, z. B. Ganzzahl- und Gleitkommaobjekte, immer erster Klasse.
Beispiele
- In C und C++ sind Funktionen keine Objekte erster Klasse, da es nicht möglich ist, sie zur Laufzeit zu erzeugen – anders als z. B. Zahlen. Auch Arrays sind keine Objekte erster Klasse, da sie nicht als Funktionsparameter übergeben werden können.
- In Fortran sind Strings keine Objekte erster Klasse, da es nicht möglich ist, sie Variablen zuzuweisen.
- Hingegen sind Funktionen in den meisten funktionalen Programmiersprachen First-Class-Objekte (bzw. First-Class-Funktionen) z. B. in Haskell, Scala, Smalltalk, OCaml und verschiedenen Lisp-Dialekten wie Scheme und Clojure, nicht jedoch in Common Lisp.
- Die auf Konzepten von Scratch und Scheme aufbauende erziehungsorientierte visuelle Programmiersprache Snap! bietet einen anschaulichen und durchgängigen Zugang zu First-Class-Objekten.
Einzelnachweise
- ↑ Michael Scott: Programming Language Pragmatics. Morgan Kaufmann Publishers, San Francisco, CA 2006, S. 140.
- ↑ Rod Burstall: Christopher Strachey—Understanding Programming Languages. Higher-Order and Symbolic Computation, Band 13, Nr. 52, 2000.
- ↑ First Class. C2.com, 25. Januar 2006, abgerufen am 9. Oktober 2010.
- ↑ first class object. Catalysoft.com, abgerufen am 9. Oktober 2010.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.