Errata for Multi-Paradigm Design for C++

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.

2Second printing: filmed out January 7, 1999, with books available February 5, 1999.