1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
<appendix id="glossary" xreflabel="Glossary">
<title>Glossary</title>
<glosslist>
<!--
<glossentry><glossterm>
</glossterm>
<glossdef>
<para></para>
</glossdef>
</glossentry>
-->
<glossentry><glossterm>
advice</glossterm>
<glossdef>
<para>Code, similar to a method, that is executed when a join
point<emphasis></emphasis> is reached. There are three kinds of
advice: before advice that runs when a join point is reached, but
before the method in question executes, after advice that executes
after the method body executes, but before control returns to the
caller, and around advice that runs before and after the method in
question runs, and also has explicit control over whether the method
is run at all.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
AOP</glossterm>
<glossdef>
<para>See <emphasis>aspect-oriented programming</emphasis>.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
aspect</glossterm>
<glossdef>
<para>A modular unit of crosscutting implementation in
<emphasis>aspect-oriented programming</emphasis>, just as classes are
the modular unit of implementation in object-oriented
programming.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
aspect-oriented programming</glossterm>
<glossdef>
<para>A type or style of programming that explicitly takes into
account <emphasis>crosscutting concerns</emphasis>, just as
object-oriented programming explicitly takes into account classes and
objects. </para>
</glossdef>
</glossentry>
<glossentry><glossterm>
crosscutting concerns</glossterm>
<glossdef>
<para>Issues or programmer concerns that are not local to the natural
unit of modularity. </para>
</glossdef>
</glossentry>
<glossentry><glossterm>
dynamic context</glossterm>
<glossdef>
<para>The state of a program while it is executing. Contrast with
<emphasis>lexical context</emphasis>.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
join point</glossterm>
<glossdef>
<para> A well-defined instant in the execution of a program. In
AspectJ, join points are also principled, i.e. not every possible
instance in the execution of a program is a potential join point.
</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
lexical context</glossterm>
<glossdef>
<para>The state of a program as it is written. Contrast with
<emphasis>dynamic context</emphasis>.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
name-based pointcut designator</glossterm>
<glossdef>
<para>A type of pointcut designator that enumerates and composes
explicitly named join points. For example,</para>
<programlisting>
pointcut move():
call(void FigureElement.setXY(int,int)) ||
call(void Point.setX(int)) ||
call(void Point.setY(int)) ||
call(void Line.setP1(Point)) ||
call(void Line.setP2(Point));</programlisting>
<para>is a pointcut designator that explicitly names five join
points. See also <emphasis>property-based pointcut
designator</emphasis>.
</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
pointcut</glossterm>
<glossdef>
<para>A collection of join points.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
pointcut designator</glossterm>
<glossdef>
<para>The name of a pointcut, or an expression which identifies a
pointcut. Pointcut designators can be primitive or composite.
Composite pointcut designators are primitive pointcut designators
composed using the operators <literal>||</literal>,
<literal>&&<literal>, and </literal>!</literal>. See also
<emphasis>name-based pointcut designator</emphasis> and
<emphasis>property-based pointcut sesignator</emphasis>. </para>
</glossdef>
</glossentry>
<glossentry><glossterm>
post-condition</glossterm>
<glossdef>
<para>A test or assertion that must be true after a method has
executed.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
pre-condition</glossterm>
<glossdef>
<para>A test or assertion that must be true when a method is
called.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
property-based pointcut designator</glossterm>
<glossdef>
<para>A type of pointcut designator that specifies pointcuts in terms
of the properties of methods rather than just their names. For
example,</para>
<programlisting>
call(public * Figure.*(..))</programlisting>
<para>specifies all the public methods in the class
<classname>Figure</classname> regardless of the type and number of
their arguments or return type. See also <emphasis>name-based
pointcut designator</emphasis>.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
reusable aspect</glossterm>
<glossdef>
<para>An aspect that can be extended or inherited from.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
signature</glossterm>
<glossdef>
<para>The number, order and type of the arguments to a method.</para>
</glossdef>
</glossentry>
<glossentry><glossterm>
<literal>thisJoinPoint</literal></glossterm>
<glossdef>
<para>The special variable that identifies the current join point
when a non-static join point is reached.</para>
</glossdef>
</glossentry>
</glosslist>
</appendix>
<!-- Local variables: -->
<!-- fill-column: 79 -->
<!-- sgml-local-ecat-files: progguide.ced -->
<!-- sgml-parent-document:("progguide.sgml" "book" "appendix") -->
<!-- End: -->
|