Abstract
Aliasing is endemic in object oriented programming.
Because an object can be modified via any alias, object
oriented programs are hard to understand, maintain, and
analyse. Flexalias is a conceptual model of
inter-object relationships which limits the visibility
of changes via aliases, allowing objects to be aliased
but mitigating the undesirable effects of aliasing.
Flexalias can be checked statically using programmer
supplied {\"}aliasing modes{\"} and imposes no run-time
overhead. Using flexalias, programs can incorporate
mutable objects, immutable values, and updatable
collections of shared objects, in a natural object
oriented programming style, while avoiding the problems
caused by aliasing.