Abstract
An object-oriented language that permits changing the behavior of a class or of a single object is said to support computational reflection. Existing reflective facilities in object-oriented languages are either complex, type unsafe, or have a large performance penalty. We propose a simple, easy-to-understand, and statically typed model that captures much of the functionalities of other reflective facilities. It brings the power of reflection to the world of type safe and efficient languages.
This work was partially supported by CNPq, the Brazilian financial agency for scientific projects under process number 200466-94.1
Preview
Unable to display preview. Download preview PDF.
References
Aksit, Mehmetl Wakita, Ken; Bosch, Jan; Bergmans, Lodewijk, and Yonezawa, Akinori. Abstracting Object Interactions Using Composition Filters. Proceedings of ECOOP'93. Workshop on Object-Based Distributed Programming. Lecture Notes in Computer Science No. 791, 1993.
Borning A. and O'Shea, T. DeltaTalk: An Empirically and Aesthetical Motivated Simplification of the Smalltalk-80 Language. Proceedings of ECOOP 88. Lecture Notes in Computer Science No. 322.
Chambers, Craig. Predicate Classes. Proceedings of ECOOP'93. Lecture Notes in Computer Science No. 707.
Chiba, Shigeru and Masuda, Takashi. Designing an Extensible Distributed Language with a Meta-Level Architecture. Proceeding of ECOOP'93. Lecture Notes in Computer Science No. 707, 1993.
Chiba, S. Open C++ Programmer's Guide. Technical Report 93-3, Department of Information Science, University of Tokyo, Tokyo, Japan, 1993.
Chiba, S. A Metaobject Protocol for C++. SIGPLAN Notices, Vol. 30, No. 10, October 1995, pg. 285–299, OOPSLA'95.
Cointe, Pierre. Metaclasses are First Class: the ObjVlisp Model. SIGPLAN Notices, Vol. 22, No. 12, December 1987. OOPSLA 87.
Cook, W. and Bracha, G. Mixin-based Inheritance. SIGPLAN Notices, Vol. 25, No. 10, October 1990, OOPSLA 90.
Ferber, Jacques. Computational Reflection in Class Based Object Oriented Languages. SIGPLAN Notices, Vol. 24, No. 10, October 1989. OOPSLA 89.
Foote, Brian and Johnson, Ralph. Reflective Facilities in Smalltalk-80. SIGPLAN Notices, Vol. 24, No. 10, October 1989. OOPSLA 89.
Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John. Design Patterns: Elements of Reusable Object-Oriented Software. Professional Computing Series, Addison-Wesley, Reading, MA, 1994.
Gil, Joseph and Lorenz, David. Environmental Acquisition: A new Inheritance-Like Abstraction Mechanism. SIGPLAN Notices, Vol. 31, No. 10, October 1996, OOPSLA'96.
Goldberg, Adele and Robson, D. Smalltalk-80: The Language and its Implementation. Addison-Wesley, 1983.
Golm, M. Design and Implementation of a Meta Architecture for Java. Diplomarbeit im Fach Informatik, Friedrich-Alexander Uniersität, Erlangen-Nürnberg, Jan 1997.
GuimarÃes, José de Oliveira. Filtros para Objetos. PhD thesis, 1996. An English version of the thesis is also available with the title Shells to Objects.
GuimarÃes, José de Oliveira. Shells: The Green Metaobjects. http://www.dc.ufscar.br/~jose/shell.html.
GuimarÃes, José de Oliveira. The Green Language. http://www.dc.ufscar.br/~jose/green.html.
Ibrahim, Mamdouh and Bejcek, W. and Cummins, F. Instance Specialization without Delegation. Journal of Object-Oriented Programming, June 1991.
Ibrahim, Mamdouh. Reflection in Object-Oriented Programming. International Journal on Artificial Intelligence Tools, Vol. 1, No. 1, 1992.
Maes, Pattie. Concepts and Experiments in Computational Reflection. SIGPLAN Notices, Vol. 22, No. 12, December 1987. OOPSLA 87.
Mezini, Mira. Dynamic Object Evolution without Name Collisions. Proceedings of ECOOP'97. Lecture Notes in Computer Science No. 1241, 1997.
Oliva, Alexandre. The Reflexive Architecture of Guaraná. http://www.dcc.unicamp.br/~oliva/guarana.ps.gz.
O'Shea, Tim. Panel: The Learnability of Object-Oriented Programming Systems. SIGPLAN Notices, Vol. 21, No. 11, November 1986, OOPSLA 86.
Ossher, Harold and Harrison, Willian. Combination of Inheritance Hierarchies. SIGPLAN Notices, Vol. 27, No. 10, October 1992, OOPSLA'92.
Prehofer, Christian. Feature-Oriented Programming: A Fresh Look at Objects. Proceedings of ECOOP'97. Lecture Notes in Computer Science No. 1241, 1997.
Seiter, Linda; Palsberg, Jeans, and Lieberherr, Karl. Evolution of Object Behavior using Context Relations. Accepted to publication in IEEE Transactions on Software Engineering. Available at http://www.ccs.neu.edu/research/demeter/biblio/context.html.
Steyaert, Patrick at al. Nested Mixin-Methods in Agora. Proceedings of ECOOP'93. Lecture Notes in Computer Science No. 707, 1993.
Templ, Joseph. Reflection in Oberon. In ECOOP'92 Workshop on Object-Oriented Reflection and Metalevel Architectures.
Templ, Joseph. Metaprogramming in Oberon. Swiss Federal Institute of Technology, Zurich, 1994.
Tomioka, Elisa; GuimarÃes, José de Oliveira; Prado, AntÔnio Francisco do. R-Java: uma ExtensÃo de Java com Metaobjetos. In English: R-Java, a Java Extension with Metaobjects. Federal University of SÃo Carlos, SP, Brazil. Unpublished report, 1998.
Wu, Z. and Schwiderski, S. Reflective Java: Making Java Even More Flexible. FTP: Architecture Projects Management Limited (apm@ansa.co.uk), Cambridge, UK, 1997.
Java Core Reflection: API and Specification. Java Soft, Mountain View, CA, USA, October 1996.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
de Oliveira GuimarÃes, J. (1998). Reflection for statically typed languages. In: Jul, E. (eds) ECOOP’98 — Object-Oriented Programming. ECOOP 1998. Lecture Notes in Computer Science, vol 1445. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0054103
Download citation
DOI: https://doi.org/10.1007/BFb0054103
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64737-9
Online ISBN: 978-3-540-69064-1
eBook Packages: Springer Book Archive