Abstract
Object composition is often advocated as a more flexible alternative to standard class inheritance since it takes place at run-time, thus permitting the behavior of objects to be specialized dynamically. In this paper we present Incomplete Featherweight Java (IFJ), an extension of Featherweight Java with incomplete objects, i.e., objects that require some missing methods which can be provided at run-time by composition with another (complete) object. Incomplete object usage is disciplined by static typing, therefore the language enjoys type safety (which implies no “message-not-understood” run-time errors).
This work has been partially supported by the MIUR project EOS DUE and by EU Project Software Engineering for Service-Oriented Overlay Computers (SENSORIA, contract IST-3-016004-IP-09).
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
Anderson, C., Barbanera, F., Dezani-Ciancaglini, M., Drossopoulou, S.: Can Addresses be Types (a case study: Objects with Delegation). In: WOOD 2003. ENTCS, vol. 82(8), pp. 1–22. Elsevier, Amsterdam (2003)
Babu, C., Janakiram, D.: Method Driven Model: A Unified Model for an Object Composition Language. ACM SIGPLAN Notices 39(8), 61–71 (2004)
Babu, C., Jaques, W., Janakiram, D.: DynOCoLa: Enabling Dynamic Composition of Object Behaviour. In: Proc. 2nd International Workshop on Reflection, AOP and Meta-Data for Software Evolution (RAM-SE) at ECOOP 2005 (2005)
Bettini, L., Bono, V., Likavec, S.: Safe and Flexible Objects with Subtyping. SAC 2005 10(4), 5–29 (2005); Special Issue: OOPS Track at SAC 2005
Bettini, L., Bono, V., Venneri, B.: Subtyping-Inheritance Conflicts: The Mobile Mixin Case. In: Proc. Third IFIP International Conference on Theoretical Computer Science (TCS 2004), Kluwer Academic Publishers (2004)
Bettini, L., Bono, V., Venneri, B.: MoMi: a calculus for mobile mixins. Acta Informatica 42(2-3), 143–190 (2005)
Bettini, L., Capecchi, S., Giachino, E.: Featherweight Wrap Java. In: Proc. of SAC 2007, Special Track on Object-Oriented Programming Languages and Systems (OOPS), pp. 1094–1100. ACM Press (2007)
Bono, V., Bugliesi, M., Dezani-Ciancaglini, M., Liquori, L.: A Subtyping for extensible, incomplete objects. Fundamenta Informaticae 38(4), 325–364 (1999)
Boyle, T.: Design principles for authoring dynamic, reusable learning objects. Australian Journal of Educational Technology 19(1), 46–58 (2003)
Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah (1992)
Bracha, G., Odersky, M., Stoutamire, D., Wadler, P.: Making the future safe for the past: Adding genericity to the Java programming language. In: OOPSLA 1998 Conference Proceedings. ACM SIGPLAN Notices, vol. 33(10), pp. 183–200 (October 1998)
Chambers, C.: Object-Oriented Multi-Methods in Cecil. In: Lehrmann Madsen, O. (ed.) ECOOP 1992. LNCS, vol. 615, pp. 33–56. Springer, Heidelberg (1992)
Crawford, D.: Communications of the ACM archive - Special Issue on Aspect-Oriented Programming, vol. 44. ACM, New York (2001)
Dezani-Ciancaglini, M., Mostrous, D., Yoshida, N., Drossopoulou, S.: Session Types for Object-Oriented Languages. In: Thomas, D. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 328–352. Springer, Heidelberg (2006)
Ducasse, S., Nierstrasz, O., Schärli, N., Wuyts, R., Black, A.: Traits: A mechanism for fine-grained reuse. ACM Transactions on Programming Languages and Systems 28(2), 331–388 (2006)
Ernst, E.: gbeta – a Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhD thesis, Department of Computer Science, University of Århus, Denmark (1999), http://www.daimi.au.dk/~eernst/gbeta/
Fisher, K., Honsell, F., Mitchell, J.C.: A lambda-calculus of objects and method specialization. Nordic J. of Computing 1(1), 3–37 (1994)
Fisher, K., Mitchell, J.C.: A Delegation-based Object Calculus with Subtyping. In: Reichel, H. (ed.) FCT 1995. LNCS, vol. 965, pp. 42–61. Springer, Heidelberg (1995)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995)
Goldberg, A., Robson, D.: Smalltalk 80: The Language. Addison-Wesley (1989)
Igarashi, A., Pierce, B., Wadler, P.: Featherweight Java: a minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems 23(3), 396–450 (2001)
Kniesel, G.: Type-Safe Delegation for Run-Time Component Adaptation. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 351–366. Springer, Heidelberg (1999)
Lieberman, H.: Using prototypical objects to implement shared behavior in object oriented systems. ACM SIGPLAN Notices 21(11), 214–214 (1986)
Pierce, B.C.: Types and Programming Languages. The MIT Press, Cambridge (2002)
Riecke, J., Stone, C.: Privacy via Subsumption. Information and Computation 172, 2–28 (2002); 3rd special issue of Theory and Practice of Object-Oriented Systems (TAPOS)
Taivalsaari, A.: On the notion of inheritance. ACM Computing Surveys 28(3), 438–479 (1996)
Ungar, D., Smith, R.B.: Self: The power of simplicity. ACM SIGPLAN Notices 22(12), 227–242 (1987)
Viega, J., Tutt, B., Behrends, R.: Automated Delegation is a Viable Alternative to Multiple Inheritance in Class Based Languages. Technical Report CS-98-03, UVa Computer Science (1998)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bettini, L., Bono, V., Venneri, B. (2008). Object Incompleteness and Dynamic Composition in Java-Like Languages. In: Paige, R.F., Meyer, B. (eds) Objects, Components, Models and Patterns. TOOLS EUROPE 2008. Lecture Notes in Business Information Processing, vol 11. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69824-1_12
Download citation
DOI: https://doi.org/10.1007/978-3-540-69824-1_12
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-69823-4
Online ISBN: 978-3-540-69824-1
eBook Packages: Computer ScienceComputer Science (R0)