Object-Oriented Programming in Scheme With First-Class Modules And Operator-Based Inheritance by Guruduth Banavar Gary Lindstrom Technical Report UUCS-95-002 Department of Computer Science University of Utah Salt Lake City, UT 84112 USA February 28, 1995 Abstract We characterize object-oriented programming as structuring and manipulating a uniform space of first-class values representing modules, a distillation of the notion of classes. Operators over modules individually achieve effects such as encapsulation, sharing, and static binding. A variety of idioms of O-O programming find convenient expression within this model, including several forms of single and multiple inheritance, abstract classes, class variables, inheritance hierarchy combination, and reflection. We show that this programming style simplifies O-O programming via enhanced uniformity, and supports a flexible model of object-orientation that provides an attractive alternative to meta-programming. Finally, we show that these notions of O-O programming are language independent, by implementing a Modular Scheme prototype as a completion of a generic O-O framework for modularity.