Aspect Oriented Programming (AOP) is a relatively new (10 years or so) strain of paradigmatic thinking in the CS world. The general idea is to provide a framework for localizing concerns that crosscut multiple natural units of code. Think of the logging or event handling code that is sprinkled across multiple methods of most of the objects in the any number of packages of a platform product like Resin.
AOP is not OOP, but can be a part of an OOP strategy (for my money, it looks like a brilliant fit). All current AOP implementations appear to be extensions to languages or development tools. AspectJ is worth a look for more information.
Cristina Lopes and myself then started a collaboration with Gregor Kiczales and his group.
Cristina and Gregor and his team did not like the name "adaptive programming" and they
introduced a better term: Aspect-oriented Programming. They also provided their own general
definition and many more examples of AOP.
The new separate term is a very good one since it allows to distinguish two key ideas:
"tangling control" (key idea behind AOP) and "structure-shyness" (key idea behind AP).
Before the naming of AOP the concept of Adaptive Programming tried to fill both roles.
'Connections between Demeter/Adaptive Programming and Aspect-Oriented Programming (AOP)'
K. J. Lieberherr
College of Computer Science, Northeastern University