blob: 90f94d948c48d4c3fcfe6926b5f99ff9221e80b4 [file] [log] [blame]
Stephan Herrmann01664412010-04-01 20:28:43 +00001<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">&raquo;<i>Programming with roles and beyond.</i>&laquo;</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>