Stephan Herrmann | 0166441 | 2010-04-01 20:28:43 +0000 | [diff] [blame] | 1 | <html> |
| 2 | <head> |
| 3 | <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" /> |
| 4 | <link rel=stylesheet type="text/css" href="guide/otjld/css/ot.css"> |
| 5 | <title>Object Teams Introduction</title> |
| 6 | </head> |
| 7 | |
| 8 | <body bgcolor="white"> |
| 9 | <table width="100%"><tr> |
| 10 | <td align="right">next: <a href="guide/develop.html">OTDT User Guide</a></td></tr> |
| 11 | </table> |
| 12 | <br /> |
| 13 | <div id="content" style="margin-left:0px;padding-top:5px;"> |
| 14 | <p class="center">»<i>Programming with roles and beyond.</i>«</p> |
| 15 | <div class="headl"> |
| 16 | <div class="headr"> |
| 17 | <h1>Why Object Teams?</h1> |
| 18 | </div> |
| 19 | </div> |
| 20 | <div class="intro"> |
| 21 | <div class="line"></div> |
| 22 | <div class="term">Team spirit for objects</div> |
| 23 | <div class="termdesc"> |
| 24 | Building complex systems from isolated objects often yields poor |
| 25 | structure which readily decays during system evolution. |
| 26 | Objects should <b>team-up</b> in order to co-operate and jointly |
| 27 | deliver complex behaviors. |
| 28 | Objects play specific <b>roles</b> within a given Team. |
| 29 | </div> |
| 30 | <div class="line"></div> |
| 31 | <div class="term">Context based dispatch</div> |
| 32 | <div class="termdesc"> |
| 33 | Object behavior is controled by the currently active |
| 34 | <b>context</b> of execution. Contexts are reified into |
| 35 | <b>Team instances</b>, which may be used to mediate |
| 36 | between roles and maintain state of the collaboration. |
| 37 | </div> |
| 38 | <div class="line"></div> |
| 39 | <div class="term">Modules larger than classes</div> |
| 40 | <div class="termdesc"> |
| 41 | On the road to re-use of modules larger than classes two |
| 42 | approaches compete: <b>frameworks</b> and <b>components</b>. |
| 43 | For many applications white box frameworks are too fragile and |
| 44 | black box components to rigid. |
| 45 | Object Teams provide a middle road which balances |
| 46 | <b>encapsulation</b> and <b>adaptability</b>. |
| 47 | </div> |
| 48 | <div class="line"></div> |
| 49 | </div> |
| 50 | |
| 51 | <div class="headl"> |
| 52 | <div class="headr"> |
| 53 | <h1>Key Features of Object Teams</h1> |
| 54 | </div> |
| 55 | </div> |
| 56 | <ul> |
| 57 | <li> |
| 58 | <div class="black"> |
| 59 | Weaving of aspect code into existing classes (no source code needed). |
| 60 | </div> |
| 61 | </li> |
| 62 | <li> |
| 63 | <div class="black"> |
| 64 | Teams are modules that encapsulate the interaction of |
| 65 | a set of role objects. |
| 66 | </div> |
| 67 | <ul> |
| 68 | <li> |
| 69 | <div class="darkblue"> |
| 70 | Teams can be type-checked in a modular way. |
| 71 | </div> |
| 72 | </li> |
| 73 | <li> |
| 74 | <div class="darkblue"> |
| 75 | Roles are automatically managed by their enclosing |
| 76 | Team instance. |
| 77 | </div> |
| 78 | </li> |
| 79 | </ul> |
| 80 | </li> |
| 81 | <li> |
| 82 | <div class="black"> |
| 83 | Teams can be refined using inheritance. |
| 84 | </div> |
| 85 | <ul> |
| 86 | <li> |
| 87 | <div class="darkblue"> |
| 88 | Collective refinement of role classes. |
| 89 | </div> |
| 90 | </li> |
| 91 | <li> |
| 92 | <div class="darkblue"> |
| 93 | Team refinement realizes type-safe covariance of |
| 94 | role signatures. |
| 95 | </div> |
| 96 | </li> |
| 97 | </ul> |
| 98 | </li> |
| 99 | <li> |
| 100 | <div class="black"> |
| 101 | Teams are instantiable first class entities. |
| 102 | </div> |
| 103 | <ul> |
| 104 | <li> |
| 105 | <div class="darkblue"> |
| 106 | Teams are aspects that can be |
| 107 | activated/deactivated at run-time. |
| 108 | </div> |
| 109 | </li> |
| 110 | <li> |
| 111 | <div class="darkblue"> |
| 112 | Roles may refer to their enclosing Team. |
| 113 | </div> |
| 114 | </li> |
| 115 | </ul> |
| 116 | </li> |
| 117 | <li> |
| 118 | <div class="black"> |
| 119 | Explicit connectors bind an abstract Team definition |
| 120 | to a base package. |
| 121 | </div> |
| 122 | <ul> |
| 123 | <li> |
| 124 | <div class="darkblue"> |
| 125 | Binding happens a-posteriori, i.e., no modification |
| 126 | in the base package is required. |
| 127 | </div> |
| 128 | </li> |
| 129 | <li> |
| 130 | <div class="darkblue"> |
| 131 | Team binding is specified in a declarative style. |
| 132 | </div> |
| 133 | </li> |
| 134 | <li> |
| 135 | <div class="darkblue"> |
| 136 | Bindings may specify different kinds of adaptations. |
| 137 | </div> |
| 138 | </li> |
| 139 | </ul> |
| 140 | </li> |
| 141 | <li> |
| 142 | <div class="black"> |
| 143 | Object Teams require a minimal number of new |
| 144 | language constructs to be learned for a maximum of modularity and |
| 145 | composability. |
| 146 | </div> |
| 147 | </li> |
| 148 | </ul> |
| 149 | </div> |
| 150 | </body> |
| 151 | </html> |