I have been doing some reading on design patterns an in particular the Observer Pattern.
In short the pattern helps to de-couple code modules by providing a third party class that will acts as observers to concrete classes. These observes act as an intermediary to send messages from one class to another.
This avoids having to directly reference other classes using a full qualified name and thus creating a dependency.
I have found some documentation on MSDN on Implementing the observer pattern in .net.
It appears that by using delegates and events offered by the .NET frame work that less code is required than I originally though necessary.
I might use this pattern in my OOP university project if I can get my Lecture to approve of C++/CLI over his much loved classic C++ .
Links
[Implementing observer in .net]
http://msdn2.microsoft.com/en-us/library/ms998543.aspx
[Observer Pattern MSDN documentation]
http://msdn2.microsoft.com/en-us/library/ms978753.aspx