An exemplar based Smalltalk
1986, Conference proceedings on Object-oriented programming systems, languages and applications - OOPLSA '86
Abstract
Two varieties of object-oriented systems exist: one based on classes as in Smalltalk and another based on exemplars (or prototypicai objects) as in Act/l. By converting Smalltalk from a class based orientation to an exemplar base, independent instance hierarchies and class hierarchies can be provided. Decoupling the two hierarchies in this way enables the user's (logical) view of a data type to be separated from the implementer's (physical) view. It permits the instances of a class to have a representation totally different from the instances of a superclass. Additionally, it permits the notion of multiple representations to be provided without the need to introduce specialized classes for each representation. In the context of multiple inheritance, it leads to a novel view of inheritance (or-inheritance) that differentiates it from the more traditional multiple inheritance notions (and-inheritance). In general, we show that exemplar based systems are more powerful than class based systems. We also describe how an existing class based Smalltalk can be transformed into an exemplar-based Smalltalk and discuss possible approaches for the implementation of both and-inheritance and or-inheritance. l Introduction Although Smalltalk [Goldberg 83] is a small, well designed language with a rich programming environment, it lacks some of the generality that might be expected of an object-oriented system. In particular, it fails to distinguish between class hierarchies and instance hierarchies. For a great majority of the classes, the distinction is not important; however, there are some important anomalies and consequences. An exemplar based system [LaLonde 86] can distinguish between the two and properly handle these anomalies. It can also be used to support the "classical" class viewpoint.
References (17)
- Bobrow, D.G., and Stefik, M.J., The LOOPS Manual (Preliminary Version), Knowledge-based VLSI Design Group Technical Report, KB-VLSI-81-13, Stanford University, August 1984.
- Borning, A., The Programming Language Aspects of Thinglab, A Constraint.Oriented Simulation Laboratory, ACM Toplas, Vol. 3, No. 4, Oct. 1981, pp. 353-387.
- Borning, A., Ingalls, D.H., Multiple Inheritance in Smalltalk-80, Proceedings of the AAAI Conference, Pittsburgh, PA., 1982.
- Cox, B., Message~Object Programming: An Evolutionary Change in Programming Technology, IEEE Software, Vol. 1, No. I, pp. 50-61, Jan 84.
- Curry, B., Baer, L., Lipkie, D., and Lee, B., Traits: An Approach to Multiple-Inheritance Inheritance Subclassing, Proceedings ACM SIGOA Conference on Office Information Systems, published as ACM SIGOA Newsletter Vol. 3, Nm. 1 and 2, 1982.
- Duff. C., Neon -Extending Forth in New Directions, Proc. of 1984 Asilomar FORMI., Con£, 1984.
- Goldberg, A. and Robson, D., Smalhalk-80: The Language and Its Implementation, Addison Wesley, Reading, Mass., 1983.
- Laff, M.R., Smallworld . An Object-Baaed Programming System, IBM Research Report RC-9022, IBM Thomas J. Watson Research Center, Yorktown Heights, New York, 1981.
- LaLonde, W.R.,Why Examplars are Better Than Classes, Technical Report SCS-TR-93, School of Computer Science, Carleton University, May 1986.
- Lieberman, H., A Preview of ACT 1, MIT AI Laboratory Memo No. 625, June 1981.
- Lieberman, H., Using Protorypical Objects to Implement Shared Behavior in Object Oriented Systems, First Annual Object Oriented Programming Systems, Languages, and Applications Conference, Portland, Oregon, September 1986.
- O'Brien, P., Trellis: Object-Based Environment, Language Tutorial, Eastern Research Lab., Digital Research Lab Tech. Rep. DEC-TR-373, Nov. 1985.
- Shapiro, E.Y. and Takeuchi, A., Object-Oriented ogramming in Concurrent Proiog, New Generation reputing, OHMSHA Lid and Springer-Verla8, Vol. 1, 1983, pp. 25-48.
- Tesler, L., Object-Pascal Report, Apple Computer, Feb. 1984.
- Thomas, D.A., and Lalonde, W.R., Actra: The Design of an Industrial Fifth Generation SmaUtalk System, Proc. of IEEE COMPINT '85, Montreal, Canada, Sept. 1985, pp. 138-140.
- Vaucher, J.G. and Lapalme, G., POOPS: Object Oriented Programming in Prolog, T c~hnicai Report 565, Laboratoire INCOGNITO, Dept. d lnformatique et de Recherche Operationnelle, University of Montreal, March 1986.
- Weinreb, D., Moon, D., Flavours -Message-passing in the lisp Machine, M1T AI Memo No. 602, Nov. 1980.