Implicit First Class Genericity
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.
KeywordsMethod Call Outer Operator Handler Manager Simulated Class Common Lisp
Unable to display preview. Download preview PDF.
- 1.Delphi Language Guide. Borland Software Corporation (2004)Google Scholar
- 2.Allen, E., Bannet, J., Cartwright, R.: A first-class approach to genericity. In: Proc. OOPSLA 2003, pp. 96–114 (2003)Google Scholar
- 4.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)Google Scholar
- 8.Cardone, R.J.: Language and Compiler Support for Mixin Programming. PhD thesis, The University of Texas at Austin (2002)Google Scholar
- 9.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)Google Scholar
- 12.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)Google Scholar
- 14.Gosling, J., Joy, B., Steele, G., Bracha, G.: The JavaTM Language Specification. Addison-Wesley, Sun Microsystems (2005)Google Scholar
- 17.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)Google Scholar
- 18.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)Google Scholar
- 19.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)Google Scholar