ABSTRACT
This paper focuses on object-oriented programming and one kind of structure-improving transformation (refactoring) that is unique to object-oriented programming: finding abstract superclasses. We decompose the operation of finding an abstract superclass into a set of refactoring steps, and provide examples. We discuss techniques that can automate or automatically support these steps. We also consider some of the conditions that must be satisfied to perform a refactoring safely; sometimes to satisfy these conditions other refactorings must first be applied.
- 1.AT&T. UNIX System V User Reference Manual AT&T, 1984.Google Scholar
- 2.Robert Balzer. A fifteen-year perspective on automatic programming. In Software Reusability - Volume ii: Applications and Ezper/ence, pages 289-311, 1989. Google ScholarDigital Library
- 3.Jay Banerjee and Won Kim. Semantics and implementation of schema evolution in objectoriented databases. In Proceedings of the A CM SIGMOD Conference, 1987. Google ScholarDigital Library
- 4.Carol Sue Beckman-Davies. Finding Program Differences Based on Syntactic Tree Structure. PhD thesis, University of Illinois at Urbana- Champaign, 1989.Google Scholar
- 5.Paul L. Bergstein. Object-preserving class transformations. In Proceedings of OOPSLA '91, 1991. Google ScholarDigital Library
- 6.K. M. Burstal} and J. Darlington. A transformation system for developing recursive programs. Journal of the ACM, 24(1):44--67, 1977. Google ScholarDigital Library
- 7.Eduardo Casals. Reorganizing an Object System, pages 161-189. Centre Universitair d'informatique, Universite de Geneve, 1989.Google Scholar
- 8.N. Dershowitz. Programming by analogy. Machine Learning: An Artificial Intelligence Approach (R.S. Michalski, J. G. Carbonell and 7". M. Mitchell, eds), 2:395-424, 1986.Google Scholar
- 9.L. Peter Deutsch. Design reuse and frameworks in the Smalltalk-80 system. In Software Reusability- Volume II: Applications and Experience, pages 57-72, 1989. Google ScholarDigital Library
- 10.Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison- Wesley Publishing Co., Reading, MA, 1990. Google ScholarDigital Library
- 11.It. Greiner. Learning by understanding analogies. Artificial Intelligence, 35:81-125, 1988. Google ScholarDigital Library
- 12.William G. Griswold. Program Restructuring as an Aid in Software Maintenance. PhD thesis, University of Washington, 1991. Google ScholarDigital Library
- 13.Patrick A. V. Hall and Geoff ft. Dowling. Approximate string matching. Computing Surveys, 12(4):381--402, December 1980. Google ScholarDigital Library
- 14.Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Pro- 9ramming, 1(2):22-35, 1988.Google Scholar
- 15.W. Lewis Johnson and Martin Feather. Building an evolution transformation library. In Proceedings of the I'2th International Conference on Software Engineering, pages 238-247, 1990. Google ScholarDigital Library
- 16.Won Kim. Introduction to Object-Oriented Databases. MIT Press, 1990. Google ScholarDigital Library
- 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 ScholarDigital Library
- 18.Jeff McKenna. A proposal for change management for smalltalk. Smalltalk Report, 1(5):1-3, 1991.Google Scholar
- 19.Bertrand Meyer. Object-oriented Software Construction. Prentice Kall, 1988. Google ScholarDigital Library
- 20.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 ScholarDigital Library
- 21.William F. Opdyke and Ralph E. Johnson. Refaetoring: 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
- 22.D. Jason Penney and Jacob Stein. Class modification in the GemStone object-oriented dbms. In Proceedings of OOPSLA "87, 1987. Google ScholarDigital Library
- 23.Edward J. Rak. Two redesign tools for Smalltalk. Master's thesis, University of Illinois at Urbana-Champaign, 1990.Google Scholar
- 24.Marc J. Rochkind. The source code control system. IEEE Transactions on Software Engineering, SF_,-1(4):364-370, December 1975.Google Scholar
- 25.Vinee Russo, Gary Johnston, and Roy H. Campbell. Process Management in Multiprocessor Operating Systems using Class Hierarchical Design. In Proceedings of OOPSLA '88, San Diego, Ca., September 1988.Google ScholarDigital Library
- 26.Vincent Russo and Roy H. Campbell. Virtual Memory and Backing Storage Management in Multiproeessor Operating Systems using Class Hierarchical Design. In Submitted to OOPSLA '89, 1989. Also available as University of Illinois Technical Report. Google ScholarDigital Library
- 27.David Sankoff and Joseph B. Kruskal. Macromolecular sequences. In Time Warps, String Edits, and Macromolecules: The Theory and Practice of Sequence Comparison (19. Sankoff and J. Krnskal, eds), pages 45-53, 1983.Google Scholar
- 28.Robert A. Wagner. Order-n correction for regular languages. Communications of the A CM, 17(5):265-268, 1974. Google ScholarDigital Library
- 29.Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener. Designing Object-Oriented Software. Prentice-Hall, 1990. Google ScholarDigital Library
- 30.Rebecca J. Wirfs-Brock and Ralph E. Johnson. A survey of current research in object-oriented design. Communications of the A CM, September 1990. Google ScholarDigital Library
- 31.Jonathan Zweig and Ralph Johnson. Conduits: A communication abstraction in C++. In Proceedings of the USENIX C-c--t- Workshop, pages 191-203, 1990.Google Scholar
Index Terms
- Creating abstract superclasses by refactoring
Recommendations
Interaction awareness for aspect refactoring
AOAsia '13: Proceedings of the 8th international workshop on Advanced modularization techniquesAspect Refactoring includes two phases: aspect mining and aspect extraction. Aspect mining is used to identify crosscutting concerns from the OO program. Aspect extraction extracts the identified crosscutting concerns from the OO program and refactors ...
Sort-based refactoring of crosscutting concerns to aspects
LATE '08: Proceedings of the 2008 AOSD workshop on Linking aspect technology and evolutionCrosscutting concerns in object-oriented programming hinder evolution because of their symptoms: tangling and scattering. To benefit from the modularisation capabilities for crosscutting concerns provided by aspect-oriented programming (which prevent ...
Comments