Aspects and Polymorphism in AspectJ

Erik Ernst, University of Aarhus
David H. Lorenz, Northeastern University

There are two important points of view on inclusion or subtype polymorphism in object-oriented programs, namely polymorphic access and dynamic dispatch. These features are essential for object-oriented programming, and it is worthwhile to consider whether they are supported in aspect-oriented programming (AOP). In AOP, pieces of crosscutting behavior are extracted from the base code and localized in aspects, losing as a result their polymorphic capabilities while introducing new and unexplored issues. In this paper, we explore what kinds of polymorphism AOP languages should support, using AspectJ as the basis for the presentation. The results are not exclusive to AspectJ---aspectual polymorphism may make aspects in any comparable AOSD language more expressive and reusable across programs, while preserving safety.

In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development, pages 150--157, Boston, Massachusetts, March 17-21, 2003. AOSD 2003, ACM.


polyspect.html (html)

aosd2003polyspect.ps.gz (36662k)

aosd2003polyspect.pdf (123234k)

Entry in the ACM Digital Library (778 KB)

The code from the paper: aosd2003polycode.tgz (3504k)

Photos from the conference.


@InProceedings{Ernst:2003:APA,
	Author = "Erik Ernst and David H. Lorenz",
	Crossref = "AOSD:2003",
	Pages = "150--157",
	Title = "Aspects and Polymorphism in {AspectJ}",
	URL = "http://www.ccs.neu.edu/home/lorenz/papers/aosd2003poly/",
	Year = 2003,
}
---------- AOSD crossref begin ----------
@String{PROC = "Proceedings of"}
@String{AOSD = "International Conference on Aspect-Oriented Software Development"}
@String{PROC:AOSD2003 = PROC#" the 2$^{nd}$ "#AOSD}
@String{AOSD2003 = "AOSD 2003"}
@Proceedings{AOSD:2003,
	Address = {Boston, Massachusetts},
	Booktitle = PROC:AOSD2003,
	Key = AOSD2003,
	Month = mar#{ 17-21},
	Organization = AOSD2003,
	Publisher = "{ACM}",
	Title = PROC:AOSD2003,
	Year = 2003,
}
---------- AOSD crossref end ----------