| Page |
Old: |
New: |
Printing in which fixed: |
|
Back cover copy
|
James O. Coplien is a premier expert and writer on object paradigm
|
James O. Coplien is a premier expert and writer on the object paradigm
|
Second2
|
|
Back cover copy
|
over-loaded functions
|
overloaded functions
|
Second2
|
|
xv
|
...is just one set of useful paradigms...
|
...is just one of a set of useful paradigms...
|
Second2
|
|
xvii
|
Cay Horstman
|
Cay Horstmann
|
Second2
|
|
33
|
There is a tension between the logical cohesion of some
business concept and the ability of a programming
language to capture that construct in a language construct.
|
There is a tension between the logical cohesion of any
business concept and the ability of a programming
language to capture such a concept in a language construct.
|
|
|
43
|
runtime binding (line 1)
|
run-time binding
|
Second2
|
|
58
|
void FloorPlan::redraw(void FloorPlan::*f() = 0)
|
void FloorPlan::redraw(void (FloorPlan::*f)() = 0)
|
|
|
58
|
this->f();
|
(this->*f)();
|
|
|
68
|
// adapted from stropts.h in a UNIX header file
|
// adapted from stropts.h, a UNIX header file
|
|
|
78
|
TABLE 3.2 Variablility Table for STRING
|
TABLE 3.2 Variability Table for STRING
|
|
|
99
|
class MyType2: public Base {
public:
string asString() const { . . . . }
};
|
class MyType2: public Base {
public:
string asString() const { . . . . }
. . . .
};
|
|
|
109
|
Complex &operator+=(const Complex &other) {
rpart += other.rpart;
ipart += other .ipart;
return *this;
}
|
Complex &operator+=(const Complex &other) {
rpart += other.realPart();
ipart += other .imaginaryPart(0;
return *this;
}
|
|
|
117
|
For example, the
LOGICAL COMPONENT
domain can be used to organize
LOGIC GATES
and
MSI (medium-scale integration)
Components.
|
For example, the
LOGICAL COMPONENT
domain can be used to organize
LOGIC GATES
and
MSI (medium-scale integration)
COMPONENTS.
|
|
|
130
|
In Figure 6.6, right-hand column:
class Complex: public Number,
private ComplexRep, private ImaginaryRep {
|
class Complex: public Number,
private RealRep, private ImaginaryRep {
|
Second2
|
|
144
|
Last line
|
Unindent "};" to align with "public:" above
|
|
|
145
|
#define TRACE(F) trace_show(#f); \
|
#define TRACE(F) trace_show(#F); \
|
|
|
155
|
Footnote 1
|
Needs period at the end.
|
|
|
162, Table 6.2, last column, about 7th row
|
Inheritance (compare with Strategy,
Section 9.2.4)
|
Inheritance (compare with STRATEGY,
Section 9.2.4) [use PatternName font for "STRATEGY"]
|
|
|
190
|
More complicated functions can be written in their natural algebraic form, for example:
|
We can write more complicated expressions in their natural algebraic form, for example:
|
|
|
192
|
"The Activities of Domain Analysis.";
|
"The Activities of Domain Analysis";
|
|
|
207
|
...and variabilities of C++ as summarized in Table 6.2.
|
...and variabilities of C++ as summarized in Table 6.1 and Table 6.2.
|
|
|
207
|
We can look at the structural needs captured in Table 8.1
and align them with the structural expressions captured in Table 6.2 ...
|
We can look at the structural needs captured in Table 8.1
and align them with the structural expressions captured in Table 6.2
and, to a lesser degree, Table 6.1, ...
|
|
|
218
|
12 lines from the bottom: four-period ellipsis
|
Unindent ellipsis to align with following line:
"read(); // in UnixFile"
|
Second2
|
|
226
|
TABLE 8.4 Run-time handling of Buffer Parameter of Variablility
|
TABLE 8.4 Run-time handling of Buffer Parameter of Variability
|
Second2
|
|
229
|
In Figure 8.6, the OutputMedium class doesn't take TextBuffer as
a template parameter because it dynamically binds to a TextBuffer
instance at run time through virtual functions.
|
In Figure 8.7, the OutputMedium class doesn't take TextBuffer as
a template parameter because it dynamically binds to a TextBuffer
instance at run time through virtual functions.
|
|
|
235
|
Figure 8.8 Domain diagram for the FSM example.
|
The arrow between USERFSM and
ABSTRACTFSM
should be double-headed.
|
Second2
|
|
236
|
The subdomain defined by FSMs sharing the same protocol is
represented in the following ImplementationFSM class that
is (indirectly) derived from AbstractFSM:
|
The subdomain defined by FSMs sharing the same protocol is
represented in the ImplementationFSM class (below) that
is (indirectly) derived from AbstractFSM:
|
Second2
|
|
237
|
map<Stimulus, void(UserMachine::*)(Stimulus)>
|
map<State, void(UserMachine::*)(Stimulus)>
|
|
|
242
|
design patterns at line 1
|
Design Patterns
|
|
|
251
|
design patterns at lines 3 and 5
|
Design Patterns
|
Second2
|
|
264
|
[Weiss1999] Weiss, David J.
|
[Weiss1999] Weiss, David M.
|
Second2
|
|
280
|
Weiss, David J.
|
Weiss, David M.
|
|
|
|
|
|
|