ABSTRACT
Predicate fields allow an object's structure to vary at runtime based on the object's state: a predicate field is present or not, depending on the values of other fields. Predicate fields and related concepts have not previously been evaluated outside a research environment. We present a case study of two industrial applications with similar requirements, one of which uses predicate fields and one of which does not. The use of predicate fields was motivated by requirements for high flexibility, by unavailability of many requirements, and by high user interface development costs. Despite an implementation of predicate fields as a library (rather than as a language extension), developers found them natural to use, and in many cases they significantly reduced development effort.
Supplemental Material
- Apple Computer. Dylan, an Object-Oriented Dynamic Language, 1992.Google Scholar
- D. G. Bobrow, L. G. DeMichiel, R. P. Gabriel, S. E. Keene, G. Kiczales, and D. A. Moon. Common Lisp Object System specification. ACM SIGPLAN Notices, 23(SI):1--145, 1988. Special issue: X3J13 Document 88-002R. Google ScholarDigital Library
- D. G. Bobrow, K. Kahn, G. Kiczales, L. Masinter, M. Stefik, and F. Zdybel. CommonLoops: Merging Lisp and object-oriented programming. In Conference on Object-Oriented Programming Systems, Languages and Applications, pages 17--29, Portland, OR, USA, June 1986. Google ScholarDigital Library
- D. Box. Essential COM. Addison-Wesley Professional, Boston, MA, 1997. Google ScholarDigital Library
- E. Brown. Windows Forms Programming in C#. Manning Publications, Greenwich, CT, 2002. Google ScholarDigital Library
- K. Brown, T. Ewald, C. Sells, and D. Box. Effective COM: 50 Ways to Improve Your COM and MTS-based Applications. Addison-Wesley Professional, Boston, MA, 1999. Google ScholarDigital Library
- C. Chambers. Object-oriented multi-methods in Cecil. In ECOOP '92, the 6th European Conference on Object-Oriented Programming, Utrecht, The Netherlands, June 29--July 3, 1992. Google ScholarDigital Library
- C. Chambers. Predicate classes. In ECOOP '93, the 7th European Conference on Object-Oriented Programming, pages 268--296, Kaiserslautern, Germany, July 28--30, 1993. Google ScholarDigital Library
- C. Chambers and W. Chen. Efficient multiple and predicated dispatching. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '99), pages 238--255, Denver, Colorado, Nov. 3--5, 1999. Google ScholarDigital Library
- D. Chappell. Understanding ActiveX and OLE. Microsoft Press, Seattle, WA, 1996. Google ScholarDigital Library
- C. Clifton, G. T. Leavens, C. Chambers, and T. Millstein. MultiJava: Modular open classes and symmetric multiple dispatch for Java. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2000), pages 130--145, Minneapolis, MN, USA, Oct. 15--19, 2000. Google ScholarDigital Library
- E. Dujardin, E. Amiel, and E. Simon. Fast algorithms for compressed multimethod dispatch table generation. ACM Transactions on Programming Languages and Systems, 20(1):116--165, Jan. 1998. Google ScholarDigital Library
- M. D. Ernst, C. S. Kaplan, and C. Chambers. Predicate dispatching: A unified theory of dispatch. In ECOOP '98, the 12th European Conference on Object-Oriented Programming, pages 186--211, Brussels, Belgium, July 20-24, 1998. Google ScholarDigital Library
- E. Gamma, R. Helm, R. E. Johnson, and J. Vlissides. Design Patterns. Addison-Wesley, Reading, MA, 1995.Google ScholarDigital Library
- Geotest -- Marvin Test Systems, Inc, CA. ATEasy 3.0 Reference Manual, 2000.Google Scholar
- J. Glynn, C. Torok, R. Conway, W. Choudhury, Z. Greenvoss, S. Kulkarniq, and N. Whitlow. Professional Windows GUI Programming Using C#. Apress, Berkeley, CA, 2002. Google ScholarDigital Library
- J. Hamer, J. Hosking, and W. Mugridge. A method for integrating classification within an object-oriented environment. Technical Report 48, Department of Computer Science, University of Auckland, Oct. 1990.Google Scholar
- E. Harmon. Delphi COM Programming. New Riders Publishing, Indianapolis, IN, 2000. Google ScholarDigital Library
- J. Hosking, J. Hamer, and W. Mugridge. Integrating functional and object-oriented programming. In Technology of Object-Oriented Languages and Systems TOOLS 3, pages 345--355, Sydney, 1990.Google Scholar
- M. MacDonald. User Interfaces in C#: Windows Forms and Custom Controls. Apress, Berkeley, CA, 2002. Google ScholarDigital Library
- M. MacDonald. Microsoft .NET Distributed Applications: Integrating XML Web Services and .NET Remoting. Microsoft Press, Seattle, WA, 2003. Google ScholarDigital Library
- T. Millstein. Practical predicate dispatch. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2004), pages 345--364, Vancouver, BC, Canada, Oct. 26--28, 2004. Google ScholarDigital Library
- W. B. Mugridge, J. Hamer, and J. G. Hosking. Multi-methods in a statically-typed programming language. In ECOOP '91, the 5th European Conference on Object-Oriented Programming, pages 307--324, Geneva, Switzerland, July 17--193, 1991. Google ScholarDigital Library
- B. A. Myers and M. B. Rosson. Survey on user interface programming. In CHI '92: Proceedings of the SIGCHI conference on Human factors in computing systems, pages 195--202. ACM Press, 1992. Google ScholarDigital Library
- C. Nock. Data Access Patterns: Database Interactions in Object-Oriented Applications. Addison-Wesley Professional, Boston, MA, 2003. Google ScholarDigital Library
- D. Orleans. Incremental programming with extensible decisions. In Proceedings of the First International Conference on Aspect-Oriented Software Development, pages 56--64, Enschede, The Netherlands, Apr. 24-26, 2002. Google ScholarDigital Library
- I. Rammer. Advanced .NET Remoting (C# Edition). Apress, Berkeley, CA, 2002. Google ScholarDigital Library
- A. Taivalsaari. Object-oriented programming with modes. Journal of Object-Oriented Programming, pages 25--32, June 1993.Google Scholar
- S. Teixeira and X. Pacheco. Delphi 5 Developer's Guide. Sams, Scotts Valley, CA, 1999. Google ScholarDigital Library
- A. Ucko. Predicate dispatching in the Common Lisp Object System. Technical Report 2001-006, MIT Artificial Intelligence Laboratory, Cambridge, MA, June 2001.Google Scholar
- D. Ungar and R. B. Smith. Self: The power of simplicity. In Conference on Object-Oriented Programming Systems, Languages and Applications, pages 227--242, Orlando, FL, USA, Oct. 1987. Google ScholarDigital Library
- P. Wadler. Views: A way for pattern matching to cohabit with data abstraction. In Proceedings of the Fourteenth Annual ACM Symposium on Principles of Programming Languages, pages 307--313, Munich, Germany, Jan. 1987. Google ScholarDigital Library
Index Terms
- Using predicate fields in a highly flexible industrial control system
Recommendations
Towards a fuzzy logic programming system: a clausal form fuzzy logic
Traditional logic and logic programming languages cannot handle uncertainty. Fuzzy logic can, but it requires a readily computable form. One possible way to achieve this is to define a propositional fuzzy logic, extend this to a first order form, ...
Towards a fuzzy-logic programming system: a 1st-order fuzzy logic
Traditional logic and logic programming languages cannot handle uncertainty. Fuzzy logic can, but nobody has yet devised a readily computable form. One possible way to achieve this is to define a propositional fuzzy logic, extend this to a 1st-order ...
A Natural Deduction System for Annotated Predicate Logic
KES '07: Knowledge-Based Intelligent Information and Engineering Systems and the XVII Italian Workshop on Neural Networks on Proceedings of the 11th International ConferenceAnnotated logic is a paraconsistent logic for reasoning under incomplete and inconsistent information. This paper is a proof-theoretic investigation into annotated predicate logic by developing a natural calculus based on Prawitz style natural deduction ...
Comments