Declarative Programming in a Prototype-Instance System: Object-Oriented Programming Without Writing Methods Brad A. Myers, Dario A. Giuse, and Brad Vander Zanden Proceedings OOPSLA'92: ACM Conference on Object-Oriented Programming Systems, Languages, and Applications. October 18-22, 1992. Vancouver, BC, Canada. SIGPLAN Notices, vol. 27, no. 10. pp. 184-200. Most programming in the Garnet system uses a declarative style that eliminates the need to write new methods. One implication is that the interface to objects is typically through their data values. This contrasts significantly with other object systems where writing methods is the central mechanism of programming. Four features are combined in a unique way in Garnet to make this possible: the use of a prototype-instance object system with structural inheritance, a retained-object model where most objects persist, the use of constraints to tie the objects together, and a new input model that makes writing event handlers unnecessary. The result is that code is easier to write for programmers, and also easier for tools, such as interactive, direct manipulation interface builders, to generate.