ACM Home Page
Please provide us with feedback. Feedback
Typestate-oriented programming
Full text PdfPdf (480 KB)
Source
Conference on Object Oriented Programming Systems Languages and Applications archive
Proceeding of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications table of contents
Orlando, Florida, USA
SESSION: Onward! short papers session 5: the enchanted tiki room table of contents
Pages 1015-1022  
Year of Publication: 2009
ISBN:978-1-60558-768-4
Authors
Jonathan Aldrich  Carnegie Mellon University, Pittsburgh, PA, USA
Joshua Sunshine  Carnegie Mellon University, Pittsburgh, PA, USA
Darpan Saini  Carnegie Mellon University, Pittsburgh, PA, USA
Zachary Sparks  Carnegie Mellon University, Pittsburgh, PA, USA
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 13,   Downloads (12 Months): 13,   Citation Count: 0
Additional Information:

abstract   references   index terms  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1639950.1640073
What is a DOI?

ABSTRACT

Objects model the world, and state is fundamental to a faithful modeling. Engineers use state machines to understand and reason about state transitions, but programming languages provide little support for reasoning about or implementing these state machines, causing software defects and lost productivity when objects are misused.

We propose Typestate-Oriented Programming as a natural extension to the object paradigm, where objects are modeled not just in terms of classes, but in terms of changing states. Each state may have its own representation and methods which may transition the object into a new state. A flow-sensitive, permission-based type system helps developers track which state objects are in. First-class typestates are a powerful abstraction that will help developers model and reuse objects more efficiently and correctly.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Andi Bejleri, Jonathan Aldrich, and Kevin Bierhoff. Ego: Controlling the Power of Simplicity. In Proc. Foundations of Object-Oriented Languages, 2006.
 
2
Lorenzo Bettini, Sara Capecchi, and Ferruccio Damiani. A Mechanism for Flexible Dynamic Trait Replacement. In Proc. Formal Techniques for Java-like Programs, 2009.
 
3
Kevin Bierhoff. Iterator Specification with Typestates. In Proc. Specification and Verification of Component-Based Systems, 2006.
 
4
Kevin Bierhoff and Jonathan Aldrich. Modular Typestate Checking of Aliased Objects. In Proc. Object-Oriented Programming, Systems, Languages, and Applications, 2007.
 
5
Kevin Bierhoff, Nels E. Beckman, and Jonathan Aldrich. Practical API Protocol Checking with Access Permissions. In Proc. European Conference on Object-Oriented Programming, 2009.
 
6
Eric Bodden, Laurie Hendren, Patrick Lam, Ondrej Lhotak, and Nomair A. Naeem. Collaborative Runtime Verification with Tracematches. Oxford Journal of Logics and Computation, 2008.
 
7
Lera Boroditsky. How Does Language Shape the Way We Think? In Max Brockman, editor, What's Next? Dispatches on the Future of Science, pages 116--129. Vintage, 2009.
 
8
Ole-Johan Dahl and Kristen Nygaard. SIMULA: an ALGOL-based Simulation Language. Communications of the ACM, 9(9):671--678, 1966.
 
9
Robert Deline and Manuel Fahndrich. Typestates for Objects. In Proc. European Conference on Object-Oriented Programming, 2004.
 
10
Sophia Drossopoulou, Ferruccio Damiani, Mariangiola Dezani-Ciancaglini, and Paola Giannini. Fickle: Dynamic Object Re-classification. In Proc. European Conference on Object-Oriented Programming, 2001.
 
11
Stephen J. Fink, Eran Yahav, Nurit Dor, G. Ramalingam, and Emmanuel Geay. Effective Typestate Verification in the Presence of Aliasing. Transactions on Software Engineering and Methodology, 17(2), 2008.
 
12
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
 
13
David Harel. Statecharts: A Visual Formalism for Complex Systems. Science of Computer Programming, 8(3):231--274, 1987.
 
14
Carl Hewitt, Peter Bishop, and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence. In Proc. International Joint Conference on Artificial Intelligence, 1973.
 
15
Alan C. Kay. The Early History of Smalltalk. SIGPLAN Notices, 28(3), 1993.
 
16
Robin Milner, Mads Tofte, Robert Harper, and David MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
 
17
Brad A. Myers. A New Model for Handling Input. ACM Transactions on Information Systems, 8(3):289--320, 1990.
 
18
Barbara Pernici. Objects with Roles. In Proc. Conference on Office Information Systems, 1990.
 
19
Asher Sterkin. State[chart]-Oriented Programming. In Proc. Multiparadigm Programming with Object-Oriented Languages, 2008.
 
20
Sven Stork, Paulo Marques, and Jonathan Aldrich. Concurrency by Default: Using Permissions to Express Dataflow in Stateful Programs. In Proc. Onward!, 2009.
 
21
Robert E Strom and Shaula Yemini. Typestate: A Programming Language Concept for Enhancing Software Reliability. IEEE Transactions on Software Engineering, 12(1):157--171, 1986.
 
22
Antero Taivalsaari. Object-Oriented Programming with Modes. Journal of Object-Oriented Programming, 6(3):25--32, 1993.
 
23
David Ungar and Randall B. Smith. Self: The Power of Simplicity. In Proc. Object-Oriented Programming, Systems, Languages, and Applications, 1987.