ABSTRACT
ContextL is an extension to the Common Lisp Object System that allows for Context-oriented Programming. It provides means to associate partial class and method definitions with layers and to activate and deactivate such layers in the control flow of a running program. When a layer is activated, the partial definitions become part of the program until this layer is deactivated. This has the effect that the behavior of a program can be modified according to the context of its use without the need to mention such context dependencies in the affected base program. We illustrate these ideas by providing different UI views on the same object while, at the same time, keeping the conceptual simplicity of object-oriented programming that objects know by themselves how to behave, in our case how to display themselves. These seemingly contradictory goals can be achieved by separating class definitions into distinct layers instead of factoring out the display code into different classes.
- Daniel Bobrow and Ira Goldstein. Representing Design Alternatives. Proceedings of the Conference on Artificial Intelligence and the Simulation of Behavior. Amsterdam, July 1980.]]Google Scholar
- Daniel Bobrow, Linda DeMichiel, Richard Gabriel, Sonya Keene, Gregor Kiczales, David Moon. Common Lisp Object System Specification. Lisp and Symbolic Computation 1, 3-4 (January 1989), 245--394.]]Google Scholar
- Christoph Bockisch, Michael Haupt, Mira Mezini, Klaus Ostermann. Virtual Machine Support for Dynamic Join Points. AOSD 2004, Proceedings, ACM Press.]] Google ScholarDigital Library
- Martin Büchi and Wolfgang Weck. Generic Wrappers. ECOOP 2000, Proceedings, Springer LNCS.]] Google ScholarDigital Library
- Howard Cannon. Flavors -- A Non-Hierarchical Approach to Object-oriented Programming. Unpublished draft, 1979, 1992, 2003.]]Google Scholar
- Pascal Costanza, Günter Kniesel, Armin Cremers. Lava -- Spracherweiterungen für Delegation in Java. JIT '99 -- Java-Informations-Tage 1999. Springer, Informatik Aktuell, 1999.]]Google ScholarCross Ref
- Pascal Costanza. Dynamically Scoped Functions as the Essence of AOP. ECOOP 2003 Workshop on Object-oriented Language Engineering for the Post-Java Era, Darmstadt, Germany, July 22, 2003. ACM Sigplan Notices 38, 8 (August 2003).]] Google ScholarDigital Library
- Pascal Costanza. A Short Overview of AspectL. European Interactive Workshop on Aspects in Software (EIWAS'04), Berlin, Germany, September 23-24.]]Google Scholar
- Pascal Costanza. How to Make Lisp More Special. International Lisp Conference 2005, Stanford. Proceedings.]]Google Scholar
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns. Addison-Wesley, 1995.]]Google Scholar
- Michael Gassanenko. Context-oriented Programming: Evolution of Vocabularies. Proceedings of the euroFORTH'93 Conference. Marianske Lazne, Czech Republic.]]Google Scholar
- Michael Gassenenko. Context-oriented Programming. euroFORTH'98, Schloss Dagstuhl, Germany.]]Google Scholar
- David Gelernter, Suresh Jagannathan, Thomas London. Environments as First Class Objects. POPL '87, Proceedings.]] Google ScholarDigital Library
- William Harrison and Harold Ossher. Subject-oriented Programming -- A Critique of Pure Objects. OOPSLA '93, Proceedings, ACM Press.]] Google ScholarDigital Library
- Robert Hirschfeld. AspectS -- Aspect-oriented Programming with Squeak. In M. Aksit, M. Mezini, R. Unland (eds.). Objects, Components, Architectures, Services, and Applications for a Networked World. Springer LNCS 2003, 2003.]]Google Scholar
- Robert Hirschfeld and Pascal Costanza. Extending Advice Activation in AspectS, European Interactive Workshop on Aspects in Software (EIWAS 2005), Brussels, Belgium, September 2005.]]Google Scholar
- Robert Hirschfeld, Katsuya Kawamura, Hendrik Berndt. Dynamic Service Adaptation for Runtime System Extensions. Wireless On-Demand Network Systems, First IFIP TC6 Working Conference, WONS 2004, Proceedings, Springer LNCS 2928.]]Google Scholar
- Roger Keays and Andry Rakotonirainy. Context-oriented Programming. International Workshop on Data Engineering for Wireless and Mobile Access, San Diego, USA, 2003. ACM Press.]] Google ScholarDigital Library
- Gregor Kiczales, Jim des Rivières, Daniel G. Bobrow. The Art of the Metaobject Protocol. MIT Press, 1991.]] Google ScholarDigital Library
- Gregor Kiczales. Towards a New Model of Abstraction in Software Engineering. Proceedings of the International Workshop on Reflection and Meta-Level Architectures, 1992.]]Google Scholar
- Günter Kniesel. Type-Safe Delegation for Run-Time Component Adaptation. ECOOP '99, Proceedings, Springer LNCS 1628.]] Google ScholarDigital Library
- Glenn Krasner and Stephen Pope. A Cookbook for using the Model-View-Controller User Interface Paradigm in Smalltalk-80. Journal of Object-oriented Programming 1, 3 (August/September 1988).]] Google ScholarDigital Library
- Henry Lieberman. Using Prototypical Objects to Implement Shared Behavior in Object-oriented Systems. OOPSLA '86, Proceedings.]] Google ScholarDigital Library
- Hidehiko Masuhara and Gregor Kiczales. Modeling Crosscutting in Aspect-oriented Mechanisms. ECOOP 2003, Proceedings, Springer LNCS.]]Google Scholar
- Klaus Ostermann. Dynamically Composable Collaborations with Delegation Layers. ECOOP 2002, Proceedings, Springer LNCS.]] Google ScholarDigital Library
- Lee Salzman and Jonathan Aldrich. Prototypes with Multiple Dispatch: An Expressive and Dynamic Object Model. ECOOP 2005, Proceedings, LNCS.]] Google ScholarDigital Library
- Randall Smith and David Ungar. A Simple and Unifying Approach to Subjective Objects. Theory and Practice of Object Systems, 2, 3 1996.]] Google ScholarDigital Library
- Randall Smith, John Maloney, David Ungar. The Self-4.0 User Interface: Manifesting a System-wide Vision of Concreteness, Uniformity, and Flexibility. OOPSLA '95 Conference Proceedings, Austin, Texas, October 1995.]] Google ScholarDigital Library
- David Ungar and Randall Smith. Self: The Power of Simplicity. OOPSLA '87, Proceedings.]] Google ScholarDigital Library
- Daniel Weinreb and David Moon. Flavors: Message Passing in the Lisp Machine. AI Memo 602, Massachusetts Institute of Technology, 1980.]]Google Scholar
Index Terms
- Language constructs for context-oriented programming: an overview of ContextL
Recommendations
Towards a framework for analyzing context-oriented programming languages
COP '21: Proceedings of the 13th ACM International Workshop on Context-Oriented Programming and Advanced ModularityContext-aware systems keep on emerging in all of our daily activities. To cope with this new situation, programming languages were extended to support the notion of context. Although context-oriented programming languages exist for over 15 years, they ...
Context-oriented programming in ContextL: state of the art
LISP50: Celebrating the 50th Anniversary of LispThere is a wide range of scenarios where software systems have to be able to behave differently according to their context of use. In Context-oriented Programming (COP), programs can be partitioned into behavioral variations that can be freely activated ...
Programming language support to context-aware adaptation: a case-study with Erlang
SEAMS '10: Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing SystemsSoftware applications are increasingly situated in a world where context changes continuously. At the same time, applications need to provide continuous service, and the service provided often needs to change in order to adapt to the new contexts. ...
Comments