A key idea in object-oriented programming is that objects encapsulate state and interact with each other by message exchange. This perspective suggests a model of computation that is inherently concurrent (to facilitate simultaneous message exchange) and that accounts for the effect of message exchange on an object’s state (to express valid sequences of state transitions). In this paper we show that such a model of computation arises naturally from session-based communication. We introduce an object-oriented programming language that has processes as its \emph{only} objects and employs linear session types to express the protocols of message exchange and to reason about concurrency and state. Based on various examples we show that our language supports the typical patterns of object-oriented programming (e.g., encapsulation, dynamic dispatch, and subtyping) while guaranteeing session fidelity in a concurrent setting. In addition, we show that our language facilitates new forms of expression (e.g., type-directed reuse, internal choice), which are not available in current object-oriented languages. We have implemented our language in a prototype compiler.

Mon 26 Oct

08:30 - 10:00: AGERE - Keynote + Abstraction at Grand Station 4
Chair(s): Carlos VarelaRensselaer Polytechnic Institute, US, Elisa Gonzalez BoixVrije Universiteit Brussel, Alessandro RicciUniversity of Bologna, Philipp HallerKTH Royal Institute of Technology
agere201508:30 - 09:20
agere201509:20 - 09:40
Stephanie BalzerCarnegie Mellon University, Frank PfenningCarnegie Mellon University
agere201509:40 - 10:00
Rem CollierUniversity College Dublin, Seán RussellUniversity College Dublin, David LillisUniversity College Dublin