Stephanie Balzer

Learn More
Understanding the collaborations that arise between the instances of classes in object-oriented programs is important for the analysis , optimization, or modification of the program. Relationships have been proposed as a programming language construct to enable an explicit representation of these collaborations. This paper introduces a relational model that(More)
The simplest and purest practical object-oriented language designs today are seen in dynamically-typed languages, such as Smalltalk and Self. Static types, however, have potential benefits for productivity, security, and reasoning about programs. In this paper, we describe the design of Wyvern, a statically typed, pure object-oriented language that attempts(More)
Allowing the description of a collection of objects, the concept of a " class " is central to object-oriented programming languages, yet, it is inadequate to describe the collaborations that arise from the interactions between these objects. The continued interest in concretizing object interactions — be it on the level of design through patterns, on the(More)
Reasoning about object-oriented programs is difficult since such programs usually involve aliasing, and it is not easy to identify the ways objects can relate to each other and thus to confine a program's heap. In this paper, we address this problem in the context of a relationship-based programming language. In relationship-based programming languages,(More)
Most ownership systems enforce a tree topology on a program's heap. The tree topology facilitates many aspects of programming such as thread synchronization, memory management, and program verification. Ownership-based verification techniques leverage the tree topology of an ownership system (and hence the fact that there exists a single owner) to restore(More)