OOPSLA 2002


Tracks
Technical Program
Tutorials
Workshops
DesignFest
Educators' Symposium
Doctoral Symposium
Demonstrations
Posters
Student Research
Competition

Student Volunteers
Special Events
Exhibits
Housing Information
Registration Information
Transportation

Monday, 4 November – 14:30-18:00 Afternoon – Convention Ctr - Room 604

16 Aspect-Oriented Programming in C++

Andrei Alexandrescu
University of Washington, andrei@metalanguage.com

Aspect-Oriented Programming (AOP) has gained a certain momentum in modern software development. The goal of AOP is to provide better modularization by providing techniques for the separation of concerns in software development. A main target of this separation is cross-cutting concerns, which are often distributed among several parts of the system in traditional design.

Most AOP tools provide a weaving mechanism that takes the separately defined cross-cutting concerns and inserts them at the appropriate places into the main code. For that, they take a main language (e.g. Java) and provide a complementary language, which defines the weaving process. A similar approach is possible in C++ only: using native C++ features like namespaces and templates, the C++ compiler can fulfill the weaving job for AOP. But weaving is not always the best solution for AOP. C++ provides a rich set of techniques to separate concerns. One of the most promising ideas is Andrei Alexandrescu's "policy class" approach.

This tutorial presents the weaving approach in C++, discusses some drawbacks of weaving and then presents in-depth the use of policy classes to implement cross-cutting concerns in an AOP way.

Attendee background

Participants should have a good working knowledge of ISO C++.

Format

Lecture with thorough discussion.

Presenter

Andrei Alexandrescu is a world-class expert in software development using C++. In the C++ community, he is best known for his book, Modern C++ Design (Addison Wesley, 2001). Also, Andrei is a former columnist for the C++ Report, a columnist for C/C++ Users Journal, and a sought-after speaker at conferences worldwide. After working in large-scale projects ranging from financial software on Wall Street to networking software to user interfaces, Andrei is pursuing a Ph.D. in Computer Science at University of Washington.