A collection of design patterns was described by Gamma, Helm, Johnson,
and Vlissides in 1994. Each pattern ensures that a certain system asp
ect can vary over time, for example the operations that can be applied
to an object or the algorithm of a method. The patterns are described
by constructs such as the inheritance and reference relations, attemp
ting to emulate more dynamic relationships. As a result, the design pa
tterns demonstrate how awkward it is to program natural concepts of ev
olution when using a traditional object-oriented language. In this pap
er, we present a new relation between classes: the context relation. I
t directly models dynamic evolution, and it is meaningful at both the
design and implementation level. At the design level we extend the Uni
fied Modeling Language (UML) to include the context relation as a new
form of arrow between classes. At the implementation level we present
a small extension of Java. The context relation introduces a new form
of dynamic binding that serves as a replacement to delegation. We demo
nstrate how the context relation can be used to easily model and progr
am numerous design patterns.