Abstract:
Unrestricted aliasing is a problem endemic to object oriented programming. It allows notions of encapsulation fundamental to object oriented
programming to be violated. This thesis describes ConstrainedJava, an implementation of a language
that provides alias control via a much stronger encapsulation guarantees than traditional object-oriented programming languages, integrated with
a constraint system. Unlike most existing aliasing control systems, this encapsulation system integrates well with untyped dynamic languages
such as ConstrainedJava. This stronger form of encapsulation has been enhanced to make it easier to write practical programs while still providing useful encapsulation guarantees.