Abstract
Classical module systems support well the modular development of applications but do not offer the ability to add or replace a method in a class that is not defined in that module. On the other hand, languages that support method addition and replacement do not provide a modular view of applications, and their changes have a global impact. The result is a gap between module systems for object-oriented languages on one hand, and the very desirable feature of method addition and replacement on the other hand. To solve these problems we present classboxes, a module system for object-oriented languages that provides method addition and replacement. Moreover, the changes made by a classbox are only visible to that classbox (or classboxes that import it), a feature we call local rebinding. To validate the model, we have implemented it in the Squeak Smalltalk environment, and performed experiments modularising code.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Cardelli, L., Donahue, J., Glassman, L., Jordan, M., Kalsow, B., Nelson, G.: Modula-3 language definition. ACM SIGPLAN Notices 27(8), 15–42 (1992)
Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular open classes and symmetric multiple dispatch for Java. In: OOPSLA 2000, pp. 130–145 (2000)
Ernst, E.: Propagating class and method combination. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 67–91. Springer, Heidelberg (1999)
Flatt, M., Felleisen, M.: Units: Cool modules for HOT languages. In: Proceedings of the PLDI 1998 Conference on Programming Language Design and Implementation, pp. 236–248 (1998)
Ichisugi, Y., Tanaka, A.: Difference-based modules: A class-independent module mechanism. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, p. 62. Springer, Heidelberg (2002)
Ingalls, D., Kaehler, T., Maloney, J., Wallace, S., Kay, A.: Back to the future: The story of Squeak, A practical Smalltalk written in itself. In: Proceedings OOPSLA 1997, November 1997, pp. 318–326 (1997)
Meyer, B.: Eiffel: The Language. Prentice-Hall, Englewood Cliffs (1992)
Mössenböck, H.: Object-Oriented Programming in Oberon-2. Springer, Heidelberg (1993)
Pelrine, J., Knight, A., Cho, A.: Mastering ENVY/Developer. Cambridge University Press, Cambridge (2001)
Simmons, D.: Smallscript (2002), http://www.smallscript.com
Smith, R.B., Ungar, D.: A simple and unifying approach to subjective objects. TAPOS special issue on Subjectivity in Object-Oriented Systems 2(3), 161–178 (1996)
Szyperski, C.A.: Import Is Not Inheritance - Why We Need Both: Modules and Classes. In: Lehrmann Madsen, O. (ed.) ECOOP 1992. LNCS, vol. 615, pp. 19–32. Springer, Heidelberg (1992)
Taft, S.T.: Ada 9x: From abstraction-oriented to object-oriented. In: Proceedings OOPSLA 1993, October 1993, vol. 28, pp. 127–143 (1993)
Wills, A.: Capsules and types in fresco: Program verification in smalltalk. In: America, P. (ed.) ECOOP 1991. LNCS, vol. 512, pp. 59–76. Springer, Heidelberg (1991)
Wirfs-Brock, A.: Subsystems – proposal. In: OOPSLA 1996 Extending Smalltalk Workshop (October 1996)
Wirfs-Brock, A., Wilkerson, B.: An overview of modular Smalltalk. In: Proceedings OOPSLA 1988, November 1988, pp. 123–134 (1988)
Wirth, N.: Programming in Modula-2. Springer, Berlin (1983)
Zenger, M.: Evolving software with extensible modules. In: ECOOP 2002 International Workshop on Unanticipated Software Evolution (June 2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bergel, A., Ducasse, S., Wuyts, R. (2003). Classboxes: A Minimal Module Model Supporting Local Rebinding. In: Böszörményi, L., Schojer, P. (eds) Modular Programming Languages. JMLC 2003. Lecture Notes in Computer Science, vol 2789. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45213-3_17
Download citation
DOI: https://doi.org/10.1007/978-3-540-45213-3_17
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40796-6
Online ISBN: 978-3-540-45213-3
eBook Packages: Springer Book Archive