Relationship aspects

The relationships between objects in object-oriented programs are as important as the objects themselves. Unfortunately, most object-oriented programming languages provide little support for such relationships, leaving the task of implementing them entirely to the programmer. Relationships are typically hard-coded into the participating classes, resulting in tangled code that unnecessarily couples these classes together. The classes become harder to understand and cannot be reused independently. Aspect-oriented programs can model relationships explicitly, treating them as separate concerns that cross-cut their participants. We show how relationships can be implemented as a library of aspects in Aspect/J. Aspects keep relationships independent of their participants, making the resulting programs easier to read, write and reuse, and as efficient as hand-written code.

[1]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[2]  Perdita Stevens,et al.  Using UML - software engineering with objects and components, Second Edition , 2006, Addison Wesley object technology series.

[3]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[4]  Mira Mezini,et al.  Separation of Concerns with Procedures, Annotations, Advice and Pointcuts , 2005, ECOOP.

[5]  Mira Mezini,et al.  Expressive Pointcuts for Increased Modularity , 2005, ECOOP.

[6]  Gavin M. Bierman,et al.  First-Class Relationships in an Object-Oriented Language , 2005, ECOOP.

[7]  Siobhán Clarke,et al.  Aspect-oriented analysis and design - the theme approach , 2005, Addison Wesley object technology series.

[8]  João M. Fernandes,et al.  Towards a catalog of aspect-oriented refactorings , 2005, AOSD '05.

[9]  Gregor Kiczales,et al.  Role-based refactoring of crosscutting concerns , 2005, AOSD '05.

[10]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

[11]  Elisa Baniassad,et al.  Aspect-Oriented Analysis and Design , 2005 .

[12]  Ivar Jacobson,et al.  Aspect-oriented software development with use cases , 2005, Addison Wesley object technology series.

[13]  K.J. Lieberherr,et al.  Controlling the complexity of software designs , 2004, Proceedings. 26th International Conference on Software Engineering.

[14]  Naoyasu Ubayashi,et al.  Association aspects , 2004, AOSD '04.

[15]  David H. Lorenz,et al.  Coupling Aspect-Oriented and Adaptive Programming , 2004 .

[16]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

[17]  Juan Llorens Morillo,et al.  Mapping UML Associations into Java Code , 2003, J. Object Technol..

[18]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[19]  Mira Mezini,et al.  Integrating independent components with on-demand remodularization , 2002, OOPSLA '02.

[20]  Dirk Riehle,et al.  The architecture of a UML virtual machine , 2001, OOPSLA '01.

[21]  Mukund Raghavachari,et al.  Mapping UML designs to Java , 2000, OOPSLA '00.

[22]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[23]  강문설 [서평]「The Unified Modeling Language User Guide」 , 1999 .

[24]  Elizabeth A. Kendall,et al.  Role model designs and implementations with aspect-oriented programming , 1999, OOPSLA '99.

[25]  Desmond D'Souza,et al.  Objects, Components, and Frameworks with UML: The Catalysis Approach , 1998 .

[26]  James Noble Basic Relationship Patterns , 1997 .

[27]  James E. Rumbaugh,et al.  Models for Design: Generating Code for Associations , 1996, J. Object Oriented Program..

[28]  Jiri Soukup,et al.  Implementing patterns , 1995 .

[29]  James Noble,et al.  Explicit Relationships in Object Oriented Development , 1995 .

[30]  Jiri Soukup Taming C Plus Plus: Pattern Classes and Persistence for Large Projects , 1994 .

[31]  Jiri Soukup Taming C++: Pattern Classes and Persistence for Large Projects , 1994 .

[32]  Grady Booch,et al.  Object-oriented analysis and design with applications (2nd ed.) , 1993 .

[33]  K. Lieberherr,et al.  An Object � oriented Design Methodology , 1992 .

[34]  Michael L. Nelson,et al.  An Object-Oriented Design Methodology , 1991 .

[35]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[36]  Peter Wegner,et al.  Concepts and paradigms of object-oriented programming , 1990, OOPS.

[37]  Grady Booch,et al.  Object-Oriented Analysis and Design with Applications , 1990 .

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

[39]  James E. Rumbaugh,et al.  DSM: an object-relationship modeling language , 1989, OOPSLA '89.

[40]  James E. Rumbaugh Controlling Propagation of Operations Using Attributes on Relations , 1988, OOPSLA.

[41]  James E. Rumbaugh,et al.  Relations as semantic constructs in an object-oriented language , 1987, OOPSLA '87.

[42]  Peter P. Chen The entity-relationship model—toward a unified view of data , 2011, TODS.

[43]  Peter P. Chen The entity-relationship model: toward a unified view of data , 1975, VLDB '75.

[44]  Edsger W. Dijkstra,et al.  A note on two problems in connexion with graphs , 1959, Numerische Mathematik.