Refactoring and Aggregation

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.

[1]  R. Rosner Computer software , 1978, Nature.

[2]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[3]  Roberto V. Zicari,et al.  The Design of an Integrity Consistency Checker (ICC) for an Object-Oriented Database System , 1991, ECOOP.

[4]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[5]  Won Kim,et al.  Introduction to Object-Oriented Databases , 1991, Computer systems.

[6]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[7]  Jacob Stein,et al.  Class modification in the GemStone object-oriented DBMS , 1987, OOPSLA 1987.

[8]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

[9]  Jay Banerjee,et al.  Semantics and implementation of schema evolution in object-oriented databases , 1987, SIGMOD '87.

[10]  Ralph E. Johnson,et al.  Creating abstract superclasses by refactoring , 1993, CSC '93.

[11]  Urs Hölzle,et al.  Integrating Independently-Developed Components in Object-Oriented Languages , 1993, ECOOP.

[12]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[13]  Rebecca Wirfs-Brock,et al.  Designing object-oriented software , 1990 .

[14]  Paul L. Bergstein Object-preserving class transformations , 1991, OOPSLA 1991.

[15]  Jean-Pierre Rosen,et al.  What orientation should Ada objects take? , 1992, CACM.

[16]  Francis Wolinski,et al.  Representation of Complex Objects: Multiple Facets with Part-Whole Hierarchies , 1991, ECOOP.

[17]  Edwin H. Blake,et al.  On Including Part Hierarchies in Object-Oriented Languages with an Implementation in Smalltalk , 1987, ECOOP.

[18]  Roy H. Campbell,et al.  A Class Hierarchy for Building Stream-Oriented File Systems , 1989, ECOOP.

[19]  Eduardo Casais,et al.  An Incremental Class Reorganization Approach , 1992, ECOOP.

[20]  Hafedh Mili,et al.  Building and maintaining analysis-level class hierarchies using Galois Lattices , 1993, OOPSLA '93.

[21]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .