Abstract
While software systems are growing bigger, and the market demands shorter software production cycles, IT companies need more and more extensive reuse of existing components. Additionally, sophisticated reuse scenarios demand flexible components which are able to adapt to different needs. As a result, it is required that all the components are as customizable as possible. In object-oriented (OO) programming languages, the base tool of reuse and customization is inheritance, which is widely known and exploited, however shows its limits when it comes to reuse nested components, which implement their behaviour using other classes instantiated internally. In this paper we present a new proposal that offers a feature for replacing a class with a compatible subclass within a library without the need of modifying its sources. As a result, it increases the possible reuse and the customization scenarios of existing components, with little additional coding required. Our idea is presented as an extension of an arbitrary OO language, however it is studied in more details as an extension of Java called ImpliJava.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Delphi Language Guide. Borland Software Corporation (2004)
Allen, E., Bannet, J., Cartwright, R.: A first-class approach to genericity. In: Proc. OOPSLA 2003, pp. 96–114 (2003)
Aracic, I., Gasiunas, V., Mezini, M., Ostermann, K.: Overview of CaesarJ. In: Rashid, A., Aksit, M. (eds.) Transactions on Aspect-Oriented Software Development I. LNCS, vol. 3880, pp. 135–173. Springer, Heidelberg (2006)
Bergel, A., Ducasse, S., Nierstrasz, O.: Classbox/J: Controlling the scope of change in Java. In: Proc. OOPSLA 2005, pp. 177–189. ACM Press, New York (2005)
Bergel, A., Ducasse, S., Nierstrasz, O., Wuyts, R.: Classboxes: Controlling visibility of class extensions. Computer Languages, Systems and Structures 31(4), 107–126 (2005)
Bono, V., Kuśmierek, J.D.M.: FJMIP: A calculus for a modular object initialization. In: Csuhaj-Varjú, E., Ésik, Z. (eds.) FCT 2007. LNCS, vol. 4639, pp. 100–112. Springer, Heidelberg (2007)
Bono, V., Kuśmierek, J.D.M.: Modularizing constructors. Journal of Object Technology 6(9), 297–317 (2007); Special Issue: Tools Europe 2007
Cardone, R.J.: Language and Compiler Support for Mixin Programming. PhD thesis, The University of Texas at Austin (2002)
Clifton, C., Millstein, T., Leavens, G.T., Chambers, C.: MultiJava: Design rationale, compiler implementation, and applications. ACM Trans. Prog. Lang. Syst. 28(3) (May 2006)
Cohen, T., Gil, J.: Better construction with factories. Journal of Object Technology 6(6), 109–129 (2007)
Craig, I.D.: Programming in Dylan. Springer, New York (1996)
Denker, M., Gîrba, T., Lienhard, A., Nierstrasz, O., Renggli, L., Zumkehr, P.: Encapsulating and exploiting change with changeboxes. In: Proc ICDL 2007, pp. 25–49. ACM Press, New York (2007)
Goldberg, A., Robson, D.: Smalltalk-80: The Language and its Implementation. Addison-Wesley Longman, Amsterdam (1983)
Gosling, J., Joy, B., Steele, G., Bracha, G.: The JavaTM Language Specification. Addison-Wesley, Sun Microsystems (2005)
Guy, J., Steele, L.: Common LISP: the language, 2nd edn. Digital Press, Newton (1990)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.: Getting started with AspectJ. Commun. ACM 44(10), 59–65 (2001)
Liskov, B.: Keynote address - data abstraction and hierarchy. In: OOPSLA 1987: Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum), pp. 17–34. ACM, New York (1987)
Madsen, O.L., Møller-Pedersen, B.: Virtual classes: a powerful mechanism in object-oriented programming. In: Proc. OOPSLA 1989, pp. 397–406. ACM Press, New York (1989)
Muller, H., Rose, J., Kempf, J., Stansbury, T.: The use of multimethods and method combination in a CLOS based window interface. In: Proc. OOPSLA 1989, pp. 239–253. ACM Press, New York (1989)
Nystrom, N., Chong, S., Myers, A.C.: Scalable extensibility via nested inheritance. SIGPLAN Not. 39(10), 99–115 (2004)
Prehofer, C.: Feature-Oriented Programming: A Fresh Look at Objects. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 419–443. Springer, Heidelberg (1997)
Hirschfeld, O.N.R., Costanza, P.: Context-oriented programming. Journal of Object Technology 7(3), 125–151 (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kuśmierek, J.D.M. (2009). Implicit First Class Genericity. In: Bergel, A., Fabry, J. (eds) Software Composition. SC 2009. Lecture Notes in Computer Science, vol 5634. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02655-3_9
Download citation
DOI: https://doi.org/10.1007/978-3-642-02655-3_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-02654-6
Online ISBN: 978-3-642-02655-3
eBook Packages: Computer ScienceComputer Science (R0)