Abstract
Predicate classes are a new linguistic construct designed to complement normal classes in object-oriented languages. Like a normal class, a predicate class has a set of superclasses, methods, and instance variables. However, unlike a normal class, an object is automatically an instance of a predicate class whenever it satisfies a predicate expression associated with the predicate class. The predicate expression can test the value or state of the object, thus supporting a form of implicit property-based classification that augments the explicit type-based classification provided by normal classes. By associating methods with predicate classes, method lookup can depend not only on the dynamic class of an argument but also on its dynamic value or state. If an object is modified, the property-based classification of an object can change over time, implementing shifts in major behavior modes of the object. A version of predicate classes has been designed and implemented in the context of the Cecil language.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Dylan, an Object-Oriented Dynamic Language. Apple Computer, April, 1992.
[Bobrow et al. 88]_D. G. Bobrow, L. G. DeMichiel, R. P. Gabriel, S. E. Keene, G. Kiczales, D. A. Moon. Common Lisp Object System Specification X3J13. In SIGPLAN Notices 23(Special Issue), September, 1988.
Yves Caseau. An Object-Oriented Language for Advanced Applications. In Proceedings of TOOLS USA’ 91, 1991.
Yves Caseau and Glenn Silverstein. Some Original Features of the LAURE Language. In Proceedings of the OOPSLA’ 92 Workshop on Object-Oriented Programming Languages: The Next Generation, pp. 35–43, Vancouver, Canada, October, 1992.
Yves Caseau and Laurent Perron. Attaching Second-Order Types to Methods in an Object-Oriented Language. In In ECOOP’ 93 Conference Proceedings, Kaiserslautern, Germany, July, 1993.
[Chambers et al. 89]_Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes. In OOPSLA’ 89 Conference Proceedings, pp. 49–70, New Orleans, LA, October, 1989. Published as SIGPLAN Notices 24(10), October, 1989. Also published in Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991.
Craig Chambers and David Ungar. Making Pure Object-Oriented Languages Practical. In OOPSLA’ 91 Conference Proceedings, pp. 1–15, Phoenix, AZ, October, 1991. Published as SIGPLAN Notices 26(10), October, 1991.
Craig Chambers. The Design and Implementation of the Self Compiler, an Optimizing Compiler for Object-Oriented Programming Languages. Ph.D. thesis, Department of Computer Science, Stanford University, report STAN-CS-92-1420, March, 1992.
Craig Chambers. Object-Oriented Multi-Methods in Cecil. In ECOOP’ 92 Conference Proceedings, pp. 33–56, Utrecht, the Netherlands, June/July, 1992. Published as Lecture Notes in Computer Science 615, Springer-Verlag, Berlin, 1992.
Craig Chambers. The Cecil Language: Specification and Rationale. Technical report #93-03-05, Department of Computer Science and Engineering, University of Washington, March, 1993.
W. R. Cook. A Proposal for Making Eiffel Type-Safe. In ECOOP’ 89 Conference Proceedings, pp. 57–70, Cambridge University Press, July, 1989.
Adele Goldberg and David Robson. SmalltaIk-80: The Language and Its Implementation. Addison-Wesley, Reading, MA, 1983.
John Hamer. Un-Mixing Inheritance with Classifiers. In Multiple Inheritance and Multiple Subtyping: Position Papers of the ECOOP’ 92 Workshop WI, pp. 6–9, Utrect, the Netherlands, June/July, 1992. Also available as working paper WP-23, Markku Sakkinen, ed., Dept. of Computer Science and Information Systems, University of Jyväskylä, Finland, May, 1992.
[Hölzle et al. 91]_Urs Hölzle, Bay-Wei Chang, Craig Chambers, Ole Agesen, and David Ungar. The SELF Manual, Version 1.1. Unpublished manual, February, 1991.
[Hudak et al. 92]_Paul Hudak, Simon Peyton Jones, Philip Wadler, Brian Boutel, Jon Fairbairn, Joseph Fasel, María M. Guzmán, Kevin Hammond, John Hughes, Thomas Johnsson, Dick Kieburtz, Rishiyur Nikhil, Will Partain, and John Peterson. Report on the Programming Language Haskell, Version 1.2. In SIGPLAN Notices 27(5), May, 1992.
[LaLonde et al. 86]_Wilf R. LaLonde, Dave A. Thomas, and John R. Pugh. An Exemplar Based Smalltalk. In OOPSLA’ 86 Conference Proceedings, pp. 322–330, Portland, OR, September, 1986. Published as SIGPLAN Notices 21(11), November, 1986.
Doug Lea. Personal communication. December, 1992.
David McAllester and Ramin Zabih. Boolean Classes. In OOPSLA’ 86 Conference Proceedings, pp. 417–428, Portland, OR, September, 1986. Published as SIGPLAN Notices 21(11), November, 1986.
Bertrand Meyer. Static Typing for Eiffel. In An Eiffel Collection. Technical report #TR-EI-20/EC, Interactive Software Engineering, Goleta, California, 1991.
Bertrand Meyer. Eiffel: The Language. Prentice Hall, New York, 1992.
[Milner et al. 90]_Robin Milner, Mads Tofte, and Robert Harper. The Definition of Standard ML. MIT Press, Cambridge, MA, 1990.
[Mugridge et al. 91 ]_W. B. Mugridge, J. G. Hosking, and J. Hamer. Multi-Methods in a Statically-Typed Programming Language. Technical report #50, Department of Computer Science, University of Auckland, 1991. A later version published in ECOOP’ 91 Conference Proceedings, Geneva, Switzerland, July, 1991.
[Myers et al. 92]_Brad A. Myers, Dario A. Giuse, and Brad Vander Zanden. Declarative Programming in a Prototype-Instance System: Object-Oriented Programming Without Writing Methods. In OOPSLA’ 92 Conference Proceedings, pp. 184–200, Vancouver, Canada, October, 1992. Published as SIGPLAN Notices 27(10), October, 1992.
Lynn A. Stein. A Unified Methodology for Object-Oriented Programming. In Inheritance Hierarchies in Knowledge Representation and Programming Languages, John Wiley & Sons, 1991.
Robert E. Strom and Shaula Alexander Yemini. Typestate: A Programming Language Concept for Enhancing Software Reliability. In IEEE Transactions on Software Engineering 12(1), pp. 157–171, January, 1986.
[Strom et al. 91]_Robert E. Strom, David F. Bacon, Arthur P. Goldberg, Andy Lowry, Daniel M. Yellin, Shaula Alexander Yemini. Hermes, A Language for Distributed Computing. Prentice Hall, Englewood Cliffs, NJ, 1991.
D. Touretzky. The Mathematics of Inheritance Systems. Morgan-Kaufmann, 1986.
David Ungar and Randall B. Smith. Self: The Power of Simplicity. In OOPSLA’ 87 Conference Proceedings, pp. 227–241, Orlando, FL, October, 1987. Published as SIGPLAN Notices 22(12), December, 1987. Also published in Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991.
[Ungar et al. 91]_David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hölzle. Organizing Programs without Classes. In Lisp and Symbolic Computation 4(3), Kluwer Academic Publishers, June, 1991.
Phillip Wadler. Views: A Way for Pattern Matching to Cohabit with Data Abstraction. In Proceedings of the Fourteenth ACM Conference on Principles of Programming Languages. Munich, Germany, January, 1987.
Phillip M. Yelland. Experimental Classification Facilities for Smalltalk. In OOPSLA’ 92 Conference Proceedings, pp. 235–246, Vancouver, Canada, October, 1992. Published as SIGPLAN Notices 27(10), October, 1992.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Chambers, C. (1993). Predicate Classes. In: Nierstrasz, O.M. (eds) ECOOP’ 93 — Object-Oriented Programming. ECOOP 1993. Lecture Notes in Computer Science, vol 707. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47910-4_15
Download citation
DOI: https://doi.org/10.1007/3-540-47910-4_15
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57120-9
Online ISBN: 978-3-540-47910-9
eBook Packages: Springer Book Archive