Here's an idea. Aspects can be used to explicitly, in a declarative way, specify relationships between objects. In a way, that's what design patterns do.
So we're looking at a fictitious set of user interface widgets; there's a Widget class from which all widgets derive. We have a Listbox class that can hold a list of options, one of which is selected. We also have a Textbox class. And there's a Dialog class that holds both a textbox and a listbox.
So far so good. If you look at the implementation of all those classes you'll notice that they don't know anything about each other.
How these classes interact with each other is specified explicitly using an aspect. This particular aspect consists of three pieces of advice:
(a1) When a listbox or textbox is assigned to a dialog, said box is told who its parent is.
(a2) When an option on the listbox is selected, its dialog's associated textbox is told about that text as well.
(a3) When a textbox's text is set, it is told to redraw or update itself, which in this simple example just prints a line to STDOUT.
So the basic ideas here is that aspects can specify interrelationships between objects in a declarative way.
Ideas? Comments?