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.
Participants should have a good working knowledge of ISO C++.
Lecture with thorough discussion.
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.