Objects + Views = Components?
In support of flexible composition, components need to be adaptable and they need to have first-class plugs. Abstract state machines and object-oriented programming each satisfy one of these requirements very well but satisfy the other only incompletely. This paper describes views, a language construct which provides for both requirements in a balanced way.
KeywordsType Class View Graph Dynamic Type Class Symbol Abstract State Machine
Unable to display preview. Download preview PDF.
- 1.D.G. Bobrow, K. Kahn, and G. et al. Kiczales. CommonLoops-merging Lisp and object-oriented programming. In Proc. OOPSLA’86, pages 17–29, 1986.Google Scholar
- 2.Don Box. Essential COM. Addison Wesley, 1998.Google Scholar
- 3.Peter Canning, William Cook, Walter Hill, Walter Olthoff, and John C. Mitchell. F-bounded polymorphism for object-oriented programming. In Functional Pro-gramming Languages and Computer Architecture, pages 273–280, September 1989.Google Scholar
- 4.Craig Chambers. Object-oriented multi-methods in Cecil. In Proc. ECOOP, 1992.Google Scholar
- 5.Kung Chen, Paul Hudak, and Martin Odersky. Parametric type classes. In Proc. ACM Conf. on Lisp and Functional Programming, pages 170–181, June 1992.Google Scholar
- 6.Robert Englander. Developing Java Beans. O’Reilly & Associates, 1997.Google Scholar
- 7.Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.Google Scholar
- 8.Cordelia Hall, Kevin Hammond, Simon Peyton Jones, and Philip Wadler. Type classes in Haskell. In Proc. 5th European Symposium on Programming, pages 241–256, 1994. Springer LNCS 788.Google Scholar
- 9.William Harrison and Harold Ossher. Subject-oriented programming (a critique of pure objects). In Proc. OOPSLA, pages 411–428, September 1993.Google Scholar
- 10.Urs Hölzle. Integrating independently-developed components in object-oriented languages. In Proc. ECOOP, volume 707 of Springer Verlag, Lecture Notes in Computer Science, pages 36–56, 1993.Google Scholar
- 11.Paul Hudak, Simon Peyton Jones, and Philip Wadler. Report on the programming language Haskell: a non-strict, purely functional language, version 1.2. SIGPLAN Notices, 27(5), May 1992. more recent versions at http://www.haskell.org/definition.
- 12.Mark P. Jones. A theory of qualified types. In Proc. 4th European Symposium on Programming, pages 287–306, February 1992. Springer LNCS 582.Google Scholar
- 13.Mark P. Jones. A system of constructor classes: Overloading and implicit higher-order polymorphism. In Proc. ACM Conf. on Functional Programming Languages and Computer Architecture, pages 52–61, June 1993.Google Scholar
- 15.Stefan Kaes. Type inference in the presence of overloading, subtyping, and re-cursive types. In Proc. ACM Conf. on Lisp and Functional Programming, pages 193–204, June 1992.Google Scholar
- 17.Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, CristinaVideira Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Proc. of the European Conference on Object-Oriented Programming, Finland, June 1997.Google Scholar
- 18.Konstantin Läufer. Type classes with existential types. Journal of Functional Programming, May 1996.Google Scholar
- 20.Betrand Meyer. Object-Oriented Software Construction. Prentice-Hall, 1988.Google Scholar
- 21.Mira Mezini, Linda Seiter, and Karl Lieberherr. Component integration with plug-gable composite adapters. In Software Architectures and Component Technology. Kluwer, 2000.Google Scholar
- 22.Tobias Nipkow and Christian Prehofer. Type checking type classes. In Proc. 20th ACM Symposium on Principles of Programming Languages, pages 409–418, 1993.Google Scholar
- 23.Martion Odersky. Programming with variable functions. In Proc. International Conference on Functional Programming, September 1998.Google Scholar
- 25.Alan Pope. The Corba Reference Guide: Understanding the Common Object Re-quest Broker Architecture. Addison Wesley, 1998.Google Scholar
- 26.Clemes Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 1998.Google Scholar
- 27.P. Tarr, H. Ossher, W. Harrison, and S. “Sutton Jr.”. N degrees of separation: Multi-dimensional separation of concerns. In Proc. ICSE, pages 107–119, 1999.Google Scholar
- 28.Philip Wadler. Views: a way for pattern matching to cohabit with data abstraction. In 14’th ACM Symposium on Principles of Programming Languages, Munich, Germany, January 1987.Google Scholar
- 29.Philip Wadler and Stephen Blott. How to make ad-hoc polymorphism less ad-hoc. In Proc. 16th ACM Symposium on Principles of Programming Languages, pages 60–76, January 1989.Google Scholar
- 30.Gio Wiederholt, Peter Wegner, and Stefano Ceri. Towards megaprogramming. Communications of the ACM, 1992. November.Google Scholar