Skip to main content

Subobject-Oriented Programming

  • Chapter
Formal Methods for Components and Objects (FMCO 2012)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7866))

Included in the following conference series:

Abstract

Classes are fundamental elements in object-oriented programming, but they cannot be assembled in a truly flexible manner from other classes. As a result, cross-cutting structural code for implementing associations, graph structures, and so forth must be implemented over and over again. Subobject-oriented programming overcomes this problem by augmenting object-oriented programming with subobjects. Subobjects can be used as buildings blocks to configure and compose classes without suffering from name conflicts. This paper gives an overview of subobject-oriented programming and introduces mechanisms for subobject initialization, navigation of the subobject structure in super calls, and subobject refinement. Subobject-oriented programming has been implemented as a language extension to Java with Eclipse support and as a library in Python.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 49.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aracic, I., Gasiunas, V., Mezini, M., Ostermann, K.: An overview of caesarJ. In: Rashid, A., Akşit, M. (eds.) Transactions on AOSD I. LNCS, vol. 3880, pp. 135–173. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  2. Bardou, D., Dony, C.: Split objects: A disciplined use of delegation within objects. In: Proceedings of OOPSLA 1996, pp. 122–137. ACM Press (1996)

    Google Scholar 

  3. Blake, E., Cook, S.: On including part hierarchies in object-oriented languages with an implementation in smalltalk. In: Bézivin, J., Hullot, J.-M., Lieberman, H., Cointe, P. (eds.) ECOOP 1987. LNCS, vol. 276, pp. 41–50. Springer, Heidelberg (1987)

    Chapter  Google Scholar 

  4. Bracha, G., Cook, W.: Mixin-based inheritance. In: Proceedings of OOPSLA/ECOOP 1990, pp. 303–311 (1990)

    Google Scholar 

  5. Clarke, D., Drossopoulou, S., Noble, J., Wrigstad, T.: Tribe: A simple virtual class calculus. In: Proceedings of AOSD 2007, pp. 121–134 (2007)

    Google Scholar 

  6. Colnet, D., Marpons, G., Merizen, F.: Reconciling subtyping and code reuse in object-oriented languages: Using inherit and insert in SmartEiffel, the GNU Eiffel compiler. In: Morisio, M. (ed.) ICSR 2006. LNCS, vol. 4039, pp. 203–216. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  7. Van Cutsem, T., Bergel, A., Ducasse, S., De Meuter, W.: Adding state and visibility control to traits using lexical nesting. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 220–243. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  8. Ducasse, S., Wuyts, R., Bergel, A., Nierstrasz, O.: User-Changeable visibility: Resolving unanticipated name clashes in traits. In: OOPSLA, pp. 171–190 (2007)

    Google Scholar 

  9. Ernst, E.: Family polymorphism. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  10. Ernst, E.: Higher-order hierarchies. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 303–329. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  11. Ernst, E., Ostermann, K., Cook, W.R.: A virtual class calculus. In: POPL, pp. 270–282 (2006)

    Google Scholar 

  12. Gosling, J., et al.: The Java Language Specification, 2nd edn. Addison-Wesley Longman Publishing Co. Inc. (2000)

    Google Scholar 

  13. Harrison, W.H., Ossher, H.: Subject-oriented programming (a critique of pure objects). In: Proceedings of OOPSLA 1993, pp. 411–428 (1993)

    Google Scholar 

  14. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  15. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.M., Irwin, J.: Aspect-Oriented programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997 — Object-Oriented Programming. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  16. Madsen, O.L., Møller-Pedersen, B.: Part objects and their location. In: Proceedings of TOOLS 1992, pp. 283–297 (1992)

    Google Scholar 

  17. Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the Beta Programming Language. Addison-Wesley (1993)

    Google Scholar 

  18. Odersky, M., Zenger, M.: Scalable component abstractions. In: Proceedings of OOPSLA 2005, pp. 41–57 (2005)

    Google Scholar 

  19. Reppy, J., Turon, A.: Metaprogramming with traits. In: Ernst, E. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 373–398. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  20. Rossum, G.V., Drake, F.: Python 3 Reference Manual. CreateSpace (2009)

    Google Scholar 

  21. Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.: Traits: Composable units of behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  22. Stroustrup, B.: The C++ programming language, 2nd edn. Addison-Wesley Longman Publishing Co. Inc., Boston (1991)

    Google Scholar 

  23. Technical Group 4 of Technical Committee 39. ECMA-367 Standard: Eiffel Analysis, Design and Programming Language. ECMA International (2005)

    Google Scholar 

  24. van Dooren, M., Clarke, D.: Subobject transactional memory. In: Sirjani, M. (ed.) COORDINATION 2012. LNCS, vol. 7274, pp. 44–58. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  25. van Dooren, M., Jacobs, B.: Implementations of subobject-oriented programming (2011), http://people.cs.kuleuven.be/marko.vandooren/subobjects.html

  26. van Dooren, M., Steegmans, E.: A higher abstraction level using first-class inheritance relations. In: Ernst, E. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 425–449. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

van Dooren, M., Clarke, D., Jacobs, B. (2013). Subobject-Oriented Programming. In: Giachino, E., Hähnle, R., de Boer, F.S., Bonsangue, M.M. (eds) Formal Methods for Components and Objects. FMCO 2012. Lecture Notes in Computer Science, vol 7866. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-40615-7_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-40615-7_2

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-40614-0

  • Online ISBN: 978-3-642-40615-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics