| <html> |
| <head> |
| <meta name="copyright" content="Copyright Technical University Berlin and others 2004, 2010. This page is made available under the Eclipse Public License v1.0. For full details see http://www.eclipse.org/legal/epl-v10.html" /> |
| <link rel=stylesheet type="text/css" href="guide/otjld/css/ot.css"> |
| <title>Object Teams Introduction</title> |
| </head> |
| |
| <body bgcolor="white"> |
| <table width="100%"><tr> |
| <td align="right">next: <a href="guide/develop.html">OTDT User Guide</a></td></tr> |
| </table> |
| <br /> |
| <div id="content" style="margin-left:0px;padding-top:5px;"> |
| <p class="center">»<i>Programming with roles and beyond.</i>«</p> |
| <div class="headl"> |
| <div class="headr"> |
| <h1>Why Object Teams?</h1> |
| </div> |
| </div> |
| <div class="intro"> |
| <div class="line"></div> |
| <div class="term">Team spirit for objects</div> |
| <div class="termdesc"> |
| Building complex systems from isolated objects often yields poor |
| structure which readily decays during system evolution. |
| Objects should <b>team-up</b> in order to co-operate and jointly |
| deliver complex behaviors. |
| Objects play specific <b>roles</b> within a given Team. |
| </div> |
| <div class="line"></div> |
| <div class="term">Context based dispatch</div> |
| <div class="termdesc"> |
| Object behavior is controled by the currently active |
| <b>context</b> of execution. Contexts are reified into |
| <b>Team instances</b>, which may be used to mediate |
| between roles and maintain state of the collaboration. |
| </div> |
| <div class="line"></div> |
| <div class="term">Modules larger than classes</div> |
| <div class="termdesc"> |
| On the road to re-use of modules larger than classes two |
| approaches compete: <b>frameworks</b> and <b>components</b>. |
| For many applications white box frameworks are too fragile and |
| black box components to rigid. |
| Object Teams provide a middle road which balances |
| <b>encapsulation</b> and <b>adaptability</b>. |
| </div> |
| <div class="line"></div> |
| </div> |
| |
| <div class="headl"> |
| <div class="headr"> |
| <h1>Key Features of Object Teams</h1> |
| </div> |
| </div> |
| <ul> |
| <li> |
| <div class="black"> |
| Weaving of aspect code into existing classes (no source code needed). |
| </div> |
| </li> |
| <li> |
| <div class="black"> |
| Teams are modules that encapsulate the interaction of |
| a set of role objects. |
| </div> |
| <ul> |
| <li> |
| <div class="darkblue"> |
| Teams can be type-checked in a modular way. |
| </div> |
| </li> |
| <li> |
| <div class="darkblue"> |
| Roles are automatically managed by their enclosing |
| Team instance. |
| </div> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <div class="black"> |
| Teams can be refined using inheritance. |
| </div> |
| <ul> |
| <li> |
| <div class="darkblue"> |
| Collective refinement of role classes. |
| </div> |
| </li> |
| <li> |
| <div class="darkblue"> |
| Team refinement realizes type-safe covariance of |
| role signatures. |
| </div> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <div class="black"> |
| Teams are instantiable first class entities. |
| </div> |
| <ul> |
| <li> |
| <div class="darkblue"> |
| Teams are aspects that can be |
| activated/deactivated at run-time. |
| </div> |
| </li> |
| <li> |
| <div class="darkblue"> |
| Roles may refer to their enclosing Team. |
| </div> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <div class="black"> |
| Explicit connectors bind an abstract Team definition |
| to a base package. |
| </div> |
| <ul> |
| <li> |
| <div class="darkblue"> |
| Binding happens a-posteriori, i.e., no modification |
| in the base package is required. |
| </div> |
| </li> |
| <li> |
| <div class="darkblue"> |
| Team binding is specified in a declarative style. |
| </div> |
| </li> |
| <li> |
| <div class="darkblue"> |
| Bindings may specify different kinds of adaptations. |
| </div> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <div class="black"> |
| Object Teams require a minimal number of new |
| language constructs to be learned for a maximum of modularity and |
| composability. |
| </div> |
| </li> |
| </ul> |
| </div> |
| </body> |
| </html> |