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.
Preview
Unable to display preview. Download preview PDF.
References
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.
Paul L. Bergstein. Object-preserving class transformations. In Proceedings of OOPSLA '91, 1991.
Jay Banerjee and Won Kim. Semantics and implementation of schema evolution in object-oriented databases. In Proceedings of the ACM SIGMOD Conference, 1987.
Eduardo Casais. Managing Evolution in Object Oriented Environments: An Algorithmic Approach. PhD thesis, University of Geneva, 1991.
Eduardo Casais. An incremental class reorganization approach. In Proceedings of ECOOP '92: European Conference on Object-Oriented Programming, pages 114–132, June 1992.
Brad Cox and Bill Hunt. Objects, icons, and software-ICs. Byte, pages 161–176, August 1986.
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.
Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley Publishing Co., Reading, MA, 1990.
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.
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.
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.
Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22–35, 1988.
Ralph E. Johnson and Jonathon Zweig. Delegation in C++. Journal of Object-Oriented Programming, 4(7):31–34, November/December 1991.
Alan Kay. Computer software. Scientific American, 251(3):53–59, September 1984.
Won Kim. Introduction to Object-Oriented Databases. MIT Press, 1990.
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).
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.
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.
Bertrand Meyer. Object-oriented Software Construction. Prentice Hall, 1988.
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.
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.
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.
D. Jason Penney and Jacob Stein. Class modification in the GemStone object-oriented dbms. In Proceedings of OOPSLA '87, 1987.
J. P. Rosen. What orientation should Ada objects take? Communications of the ACM, 35(11):71–76, November 1992.
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).
Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener. Designing Object-Oriented Software. Prentice-Hall, 1990.
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.
Author information
Authors and Affiliations
Editor information
Rights 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