Advertisement

Object Incompleteness and Dynamic Composition in Java-Like Languages

  • Lorenzo Bettini
  • Viviana Bono
  • Betti Venneri
Part of the Lecture Notes in Business Information Processing book series (LNBIP, volume 11)

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).

Keywords

Operational Semantic Typing Rule Method Invocation Code Reuse Type Safety 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    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)Google Scholar
  2. 2.
    Babu, C., Janakiram, D.: Method Driven Model: A Unified Model for an Object Composition Language. ACM SIGPLAN Notices 39(8), 61–71 (2004)CrossRefGoogle Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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 2005Google Scholar
  5. 5.
    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)Google Scholar
  6. 6.
    Bettini, L., Bono, V., Venneri, B.: MoMi: a calculus for mobile mixins. Acta Informatica 42(2-3), 143–190 (2005)zbMATHCrossRefMathSciNetGoogle Scholar
  7. 7.
    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)Google Scholar
  8. 8.
    Bono, V., Bugliesi, M., Dezani-Ciancaglini, M., Liquori, L.: A Subtyping for extensible, incomplete objects. Fundamenta Informaticae 38(4), 325–364 (1999)zbMATHMathSciNetGoogle Scholar
  9. 9.
    Boyle, T.: Design principles for authoring dynamic, reusable learning objects. Australian Journal of Educational Technology 19(1), 46–58 (2003)Google Scholar
  10. 10.
    Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah (1992)Google Scholar
  11. 11.
    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)Google Scholar
  12. 12.
    Chambers, C.: Object-Oriented Multi-Methods in Cecil. In: Lehrmann Madsen, O. (ed.) ECOOP 1992. LNCS, vol. 615, pp. 33–56. Springer, Heidelberg (1992)CrossRefGoogle Scholar
  13. 13.
    Crawford, D.: Communications of the ACM archive - Special Issue on Aspect-Oriented Programming, vol. 44. ACM, New York (2001)Google Scholar
  14. 14.
    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)CrossRefGoogle Scholar
  15. 15.
    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)CrossRefGoogle Scholar
  16. 16.
    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/
  17. 17.
    Fisher, K., Honsell, F., Mitchell, J.C.: A lambda-calculus of objects and method specialization. Nordic J. of Computing 1(1), 3–37 (1994)zbMATHMathSciNetGoogle Scholar
  18. 18.
    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)Google Scholar
  19. 19.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995)Google Scholar
  20. 20.
    Goldberg, A., Robson, D.: Smalltalk 80: The Language. Addison-Wesley (1989)Google Scholar
  21. 21.
    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)CrossRefGoogle Scholar
  22. 22.
    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)CrossRefGoogle Scholar
  23. 23.
    Lieberman, H.: Using prototypical objects to implement shared behavior in object oriented systems. ACM SIGPLAN Notices 21(11), 214–214 (1986)CrossRefMathSciNetGoogle Scholar
  24. 24.
    Pierce, B.C.: Types and Programming Languages. The MIT Press, Cambridge (2002)Google Scholar
  25. 25.
    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)zbMATHCrossRefMathSciNetGoogle Scholar
  26. 26.
    Taivalsaari, A.: On the notion of inheritance. ACM Computing Surveys 28(3), 438–479 (1996)CrossRefGoogle Scholar
  27. 27.
    Ungar, D., Smith, R.B.: Self: The power of simplicity. ACM SIGPLAN Notices 22(12), 227–242 (1987)CrossRefGoogle Scholar
  28. 28.
    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)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Lorenzo Bettini
    • 1
  • Viviana Bono
    • 1
  • Betti Venneri
    • 2
  1. 1.Dipartimento di InformaticaUniversità di Torino 
  2. 2.Dipartimento di Sistemi e InformaticaUniversità di Firenze 

Personalised recommendations