<?xml version="1.0" encoding="UTF-8"?><xml><records><record><source-app name="Biblio" version="6.x">Drupal-Biblio</source-app><ref-type>5</ref-type><contributors><authors><author><style face="normal" font="default" size="100%">Paulo Sérgio Almeida</style></author></authors></contributors><titles><title><style face="normal" font="default" size="100%">Balloon types: Controlling sharing of state in data types</style></title><secondary-title><style face="normal" font="default" size="100%">ECOOP'97—Object-Oriented Programming</style></secondary-title></titles><dates><year><style  face="normal" font="default" size="100%">1997</style></year></dates><publisher><style face="normal" font="default" size="100%">Springer</style></publisher><pages><style face="normal" font="default" size="100%">32–59</style></pages><language><style face="normal" font="default" size="100%">eng</style></language><abstract><style face="normal" font="default" size="100%">&lt;p&gt;Current data abstraction mechanisms are not adequate to control sharing of state in the general case involving objects in linked structures. The pervading possibility of sharing is a source of errors and an obstacle to language implementation techniques.&lt;br /&gt;
We present a general extension to programming languages which makes the ability to share state a first class property of a data type, resolving a long-standing flaw in existing data abstraction mechanisms.&lt;br /&gt;
Balloon types enforce a strong form of encapsulation: no state reachable (directly or transitively) by a balloon object is referenced by any external object. Syntactic simplicity is achieved by relying on a non-trivial static analysis as the checking mechanism.&lt;br /&gt;
Balloon types are applicable in a wide range of areas such as program transformation, memory management and distributed systems. They are the key to obtaining self-contained composite objects, truly opaque data abstractions and value types—important concepts for the development of large scale, provably correct programs.&lt;/p&gt;
</style></abstract></record></records></xml>