Channels as Objects in Concurrent Object-Oriented Programming
There is often a sort of a protocol associated to each class, stating when and how certain methods should be called. Given that this protocol is, if at all, described in the documentation accompanying the class, current mainstream object-oriented languages cannot provide for the verification of client code adherence against the sought class behaviour. The authors have defined a class-based concurrent objectoriented language that formalises such protocols in the form of usage types. Usage types are attached to class definitions, allowing for the specification of the available methods, the tests clients must perform on the result of methods, and the object status - linear or shared - all of which depend on the object's state.