Skip to main content

Refactoring and aggregation

  • Invited Paper
  • Conference paper
  • First Online:
Object Technologies for Advanced Software (ISOTAS 1993)

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

Included in the following conference series:

Abstract

Object-oriented programs evolve by means other than just the addition of new classes. The changes to object-oriented programs that have been most studied are those based on inheritance, on reorganizing a class hierarchy. However, aggregation is a relationship between classes that is just as important as inheritance, and many changes to an object-oriented design involve the aggregate/component relationship. This paper describes some common refactorings based on aggregation, including how to convert from inheritance to an aggregation, and how to reorganize an aggregate/component hierarchy just as one might reorganize a class inheritance hierarchy.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. E. Blake and S. Cook. On including part hierarchies in object-oriented languages, with an implementation in smalltalk. In Proceedings of ECOOP '87, Special Issue of BIGRE, pages 45–54, June 1987.

    Google Scholar 

  2. Paul L. Bergstein. Object-preserving class transformations. In Proceedings of OOPSLA '91, 1991.

    Google Scholar 

  3. Jay Banerjee and Won Kim. Semantics and implementation of schema evolution in object-oriented databases. In Proceedings of the ACM SIGMOD Conference, 1987.

    Google Scholar 

  4. Eduardo Casais. Managing Evolution in Object Oriented Environments: An Algorithmic Approach. PhD thesis, University of Geneva, 1991.

    Google Scholar 

  5. Eduardo Casais. An incremental class reorganization approach. In Proceedings of ECOOP '92: European Conference on Object-Oriented Programming, pages 114–132, June 1992.

    Google Scholar 

  6. Brad Cox and Bill Hunt. Objects, icons, and software-ICs. Byte, pages 161–176, August 1986.

    Google Scholar 

  7. Christing Delcourt and Roberto Zicari. The design of an integrity consistency checker for an object oriented database system. In Proceedings of ECOOP '91: European Conference on Object-Oriented Programming, pages 97–117, July 1991.

    Google Scholar 

  8. Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley Publishing Co., Reading, MA, 1990.

    Google Scholar 

  9. Erich Gamma, Richard Helm, Ralph E. Johnson, and John Vlissides. Design patterns: Abstraction and reuse of object-oriented design. In Proceedings of ECOOP '93, European Conference on Object-Oriented Programming, pages 406–431, July 1993.

    Google Scholar 

  10. Robert Godin and Hafedh Mili. Building and maintaining analysis-level class hierarchies using galois lattices. In Proceedings of OOPSLA '93, September 1993. to be presented.

    Google Scholar 

  11. Urs Holzle. Integrating indepently-developed components in object-oriented languages. In Proceedings of ECOOP '93, European Conference on Object-Oriented Programming, pages 36–56, July 1993.

    Google Scholar 

  12. Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22–35, 1988.

    Google Scholar 

  13. Ralph E. Johnson and Jonathon Zweig. Delegation in C++. Journal of Object-Oriented Programming, 4(7):31–34, November/December 1991.

    Google Scholar 

  14. Alan Kay. Computer software. Scientific American, 251(3):53–59, September 1984.

    Google Scholar 

  15. Won Kim. Introduction to Object-Oriented Databases. MIT Press, 1990.

    Google Scholar 

  16. Henry Lieberman. Using prototypical objects to implement shared behavior in object-oriented systems. In Proceedings of OOPSLA '86, pages 214–223, November 1986. printed as SIGPLAN Notices, 21(11).

    Google Scholar 

  17. Peter W. Madany. An Object-Oriented Framework for Filesystems. PhD thesis, University of Illinois at Urbana-Champaign, 1992. Also Technical Report No. UIUCDCS-R-92-1751, Department of Computer Science, University of Illinois at Urbana-Champaign.

    Google Scholar 

  18. Peter W. Madany, Roy H. Campbell, Vincent F. Russo, and Doublas E. Leyens. A class hierarchy for building stream-oriented file systems. In Proceedings of ECOOP '89: European Conference on Object-Oriented Programming, pages 311–328, July 1989.

    Google Scholar 

  19. Bertrand Meyer. Object-oriented Software Construction. Prentice Hall, 1988.

    Google Scholar 

  20. William F. Opdyke and Ralph E. Johnson. Refactoring: An aid in designing application frameworks and evolving object-oriented systems. In Proceedings of Symposium on Object-Oriented Programming Emphasizing Practical Applications (SOOPPA), September 1990.

    Google Scholar 

  21. William F. Opdyke and Ralph E. Johnson. Creating abstract superclasses by refactoring. In Proceedings of CSC '93: The ACM 1993 Computer Science Conference, February 1993.

    Google Scholar 

  22. William F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, University of Illinois at Urbana-Champaign, 1992. Also Technical Report No. UIUCDCS-R-92-1759, Department of Computer Science, University of Illinois at Urbana-Champaign.

    Google Scholar 

  23. D. Jason Penney and Jacob Stein. Class modification in the GemStone object-oriented dbms. In Proceedings of OOPSLA '87, 1987.

    Google Scholar 

  24. J. P. Rosen. What orientation should Ada objects take? Communications of the ACM, 35(11):71–76, November 1992.

    Article  Google Scholar 

  25. Alan Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proceedings of OOPSLA '86, pages 38-45, November 1986. printed as SIGPLAN Notices, 21(11).

    Google Scholar 

  26. Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener. Designing Object-Oriented Software. Prentice-Hall, 1990.

    Google Scholar 

  27. Francis Wolinski and Jean-Francois Perrot. Representation of complex objects: Multiple facets with part-whole hierarchies. In Proceedings of ECOOP '91: European Conference on Object-Oriented Programming, pages 288–306, July 1991.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Shojiro Nishio Akinori Yonezawa

Rights and permissions

Reprints and permissions

Copyright information

© 1993 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Johnson, R.E., Opdyke, W.F. (1993). Refactoring and aggregation. In: Nishio, S., Yonezawa, A. (eds) Object Technologies for Advanced Software. ISOTAS 1993. Lecture Notes in Computer Science, vol 742. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57342-9_78

Download citation

  • DOI: https://doi.org/10.1007/3-540-57342-9_78

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-57342-5

  • Online ISBN: 978-3-540-48075-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics