Classpects: Unifying Aspect- and Object-Oriented Language Design

By: Hridesh Rajan and Kevin J. Sullivan

PDF Download Download Paper

Abstract

The contribution of this work is the design, implementation, and early evaluation of a programming language that unifies classes and aspects. We call our new module construct the classpect. We make three basic claims. First, we can realize a unified design without significantly compromising the expressiveness of current aspect languages. Second, such a design improves the conceptual integrity of the programming model. Third, it significantly improves the compositionality of aspect modules, expanding the program design space from the two-layered model of AspectJ-like languages to include hierarchical structures. To support these claims, we present the design and implementation of Eos-U, an AspectJ-like language based on C# that supports classpects as the basic unit of modularity. We show that Eos-U supports layered designs in which classpects separate integration concerns flexibly at multiple levels of composition. The underpinnings of our design include support for aspect instantiation under program control, instance-level advising, advising as a general alternative to object-oriented method invocation and overriding, and the provision of a separate join-point-method binding construct.

ACM Reference

Rajan, H. and Sullivan, K.J. 2005. Classpects: Unifying Aspect- and Object-Oriented Language Design. 27th International Conference on Software Engineering (ICSE), St. Louis, Missouri, USA (2005), 59–68.

BibTeX Reference

@inproceedings{RajanSullivan2005b,
  author = {Hridesh Rajan and Kevin J. Sullivan},
  title = {Classpects: Unifying Aspect- and Object-Oriented Language Design},
  booktitle = {27th International Conference on Software Engineering (ICSE), St. Louis, Missouri, USA},
  pages = {59--68},
  year = {2005},
  publisher = {{ACM}},
  editor = {Gruia{-}Catalin Roman and William G. Griswold and Bashar Nuseibeh},
  doi = {10.1145/1062455.1062483},
  abstract = {
  The contribution of this work is the design, implementation, and early
  evaluation of a programming language that unifies classes and aspects. We call
  our new module construct the classpect. We make three basic claims. First, we
  can realize a unified design without significantly compromising the
  expressiveness of current aspect languages. Second, such a design improves the
  conceptual integrity of the programming model. Third, it significantly
  improves the compositionality of aspect modules, expanding the program design
  space from the two-layered model of AspectJ-like languages to include
  hierarchical structures. To support these claims, we present the design and
  implementation of Eos-U, an AspectJ-like language based on C# that supports
  classpects as the basic unit of modularity. We show that Eos-U supports
  layered designs in which classpects separate integration concerns flexibly at
  multiple levels of composition. The underpinnings of our design include
  support for aspect instantiation under program control, instance-level
  advising, advising as a general alternative to object-oriented method
  invocation and overriding, and the provision of a separate join-point-method
  binding construct.},
}