Skip to main content

Dynamically Composable Collaborations with Delegation Layers

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2374))

Abstract

It has been recognized in several works that a slice of behavior affecting a set of collaborating classes is a better unit of reuse than a single class. Different techniques and language extensions have been suggested to express such slices in programming languages. We propose delegation layers, an approach that scales the OO mechanisms for single objects, such as delegation, late binding, and subtype polymorphism, to sets of collaborating objects. Technically, delegation layers combine and generalize delegation and virtual class concepts. Due to their runtime semantics, delegation layers are more flexible than previous compile time approaches like mixin layers.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   109.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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. K. Arnold and J. Gosling. The Java Programming Language. Addison-Wesley, 1996.

    Google Scholar 

  2. AspectJ homepage, 2001. http://aspectj.org.

  3. M. BCchi and W. Weck. Generic wrappers. In Proceedings of ECOOP 2000, LNCS 1850, pages 201–225. Springer, 2000.

    Google Scholar 

  4. K. Beck and W. Cunningham. A laboratory for teaching object-oriented thinking. In Proc. OOPSLA’ 89, 1989.

    Google Scholar 

  5. G. Bracha and W. Cook. Mixin-based inheritance. In Proceedings OOPSLA/ECOOP’90, ACM SIGPLAN Notices 25(10), pages 303–311, 1990.

    Article  Google Scholar 

  6. A. Brown, R. Cardone, S. McDirmid, and C. Lin. Using mixins to build flexible widgets. In 1st International Conference on Aspect-Oriented Software Development AOSD’ 02, 2002.

    Google Scholar 

  7. K. B. Bruce, M. Odersky, and P. Wadler. A statically safe alternative to virtual types. In Proceedings ECOOP’ 98, 1998.

    Google Scholar 

  8. P. S. Canning, W. Cook, W. L. Hill, J. C. Mitchell, and W. G. Olthoff. F-bounded polymorphism for object-oriented programming. In Proceedings of the ACM Conference on Functional Programming and Computer Architecture, pages 273–280, 1989.

    Google Scholar 

  9. R. Cardone and C. Lin. Comparing frameworks and layered refinement. In Proceedings of the 23rd International Conference on Software Engineering ICSE’ 01, 2001.

    Google Scholar 

  10. C. Chambers. Predicate classes. In W. Olthoff, editor, Proceedings ECCOP’ 93, LNCS 707, pages 268–297. Springer, 1993.

    Google Scholar 

  11. M. Ellis and B. Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1995.

    Google Scholar 

  12. E. Ernst. Family polymorphism. In Proceedings of ECOOP’ 01, LNCS 2072, pages 303–326. Springer, 2001.

    Google Scholar 

  13. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison Wesley, 1995.

    Google Scholar 

  14. W. Harrison, H. Ossher, and P. Tarr. Using delegation for software and subject composition. Technical Report RC 20946(92722), IBM Research Division T.J. Watson Research Center, Aug 1997.

    Google Scholar 

  15. R. Helm, I. M. Holland, and D. Gangopadhyay. Contracts: Specifying behavioural compositions in object-oriented systems. In Proceedings OOPSLA/ECOOP’90, ACM SIGPLAN Notices, pages 169–180, 1990.

    Google Scholar 

  16. I. M. Holland. Specifying reusable components using contracts. In Proceedings ECOOP’ 93, LNCS 615, pages 287–308, 1992.

    Google Scholar 

  17. G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In M. Aksit and S. Matsuoka, editors, Proceedings ECOOP’97, LNCS 1241, pages 220–242, Jyvaskyla, Finland, 1997. Springer-Verlag.

    Google Scholar 

  18. G. Kniesel. Type-safe delegation for run-time component adaptation. In R. Guerraoui, editor, Proceedings of ECOOP’ 99, LNCS 1628. Springer, 1999.

    Google Scholar 

  19. G. Kniesel. Dynamic Object-Based Inheritance with Subtyping. PhD thesis, University of Bonn, Institute for Computer Science III, 2000.

    Google Scholar 

  20. H. Liebermann. Using prototypical objects to implement shared behavior in object-oriented systems. In Proceedings OOPSLA’ 86, ACM SIGPLAN Notices, 1986.

    Google Scholar 

  21. O. L. Madsen and B. Müller-Pedersen. Virtual classes: A powerful mechanism in object-oriented programming. In Proceedings of OOPSLA’ 89. ACM SIGPLAN, 1989.

    Google Scholar 

  22. O. L. Madsen, B. Møller-Pedersen, and K. Nygaard. Object Oriented Programming in the Beta Programming Language. Addison-Wesley Publishing Company, 1993.

    Google Scholar 

  23. S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New age components for old fashioned java. In Proceedings of OOPSLA’ 01, 2001.

    Google Scholar 

  24. M. Mezini and K. Lieberherr. Adaptive plug-and-play components for evolutionary software development. In Proceedings OOPSLA’ 98, ACM SIGPLAN Notices, 1998.

    Google Scholar 

  25. M. Mezini, L. Seiter, and K. Lieberherr. Component integration with pluggable composite adapters. In M. Aksit, editor, Software Architectures and Component Technology: The State of the Art in Research and Practice. Kluwer, 2001. University of Twente, The Netherlands.

    Google Scholar 

  26. M. Mezini. Dynamic object evolution without name collisions. In Proceedings ECOOP’ 97, LNCS 1241, pages 190–219. Springer, 1997.

    Google Scholar 

  27. K. Ostermann and M. Mezini. Object-oriented composition untangled. In Proceedings OOPSLA’ 01, 2001.

    Google Scholar 

  28. T. Reenskaug. Working with Objects: The OOram software Engineering Method. Manning, 1995.

    Google Scholar 

  29. D. Riehle and T. Gross. Role model based framework design and integration. In Proceedings OOPSLA’ 98, 1998.

    Google Scholar 

  30. L. M. Seiter, J. Palsberg, and K. Lieberherr. Evolution of object behavior using context relations. IEEE Transactions on Software Engineering, 24:79–92, 1998.

    Article  Google Scholar 

  31. Y. Smaragdakis and D. Batory. Implementing layered designs with mixin-layers. In Proceedings of ECOOP’ 98, pages 550–570, 1998.

    Google Scholar 

  32. K. K. Thorup. Genericity in Java with virtual types. In Proceedings ECOOP’ 97, 1997.

    Google Scholar 

  33. M. Torgersen. Virtual types are statically safe. In 5th Workshop on Foundations of Object-Oriented Languages, 1998.

    Google Scholar 

  34. M. VanHilst and D. Notkin. Using role components to implement collaboration-based design. In Proceedings OOPSLA 96, 1996.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2002 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Ostermann, K. (2002). Dynamically Composable Collaborations with Delegation Layers. In: Magnusson, B. (eds) ECOOP 2002 — Object-Oriented Programming. ECOOP 2002. Lecture Notes in Computer Science, vol 2374. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47993-7_4

Download citation

  • DOI: https://doi.org/10.1007/3-540-47993-7_4

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-43759-8

  • Online ISBN: 978-3-540-47993-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics