Reported Errors in

An Introduction to Object-Oriented Programming (2nd Ed)

by Timothy A. Budd

(Last modified 16 October 1998)

Readers of the first or second printing should also look at list of typos and errors corrected in third printing

Readers of the 3rd or 4th printing should llok at the list of typos and errors corrected in the fifth printing

To find your printing number, locate the first number in sequence on the copyright page (between title and preface page).

Chapter 2.

Page 43, Figure 2.5
all means should be all meals (js)

Page 44, 14 lines from bottom

An decision should be a decision (el)

Chapter 3.

Page 66, 12 lines from the bottom.
Should mention that when inline definitions appear in the class body, the keyword inline is omitted. (tv)

Page 69
Class definition should not end with a semicolon

Page 69
Data fields should be declared as static

Chapter 4.

Page 79, first line,
missing word "that can be modified" (pm)
Page 84, line 6
argument should be real (hw)

Chapter 5.

Page 104, C++ example
The pointer to the neighbor could be declared as constant. (not the thing it points to, but the pointer itself). (dp)

Page 110, Objective-C example (also 385 in Appendix A)
The sentinel queen should return 0 (false) when asked to advance, not one. (rr)

Page 106
The applet in Java appears to reverse the sense of row and column.

Chapter 6.

The initialization routines for each of the graphical objects should have set the link field to nil.

Page 119
The class description for ball is missing the method setCenter (ch)

Chapter 7.

Page 132, first line
sometime should be sometimes (plural) (tv)

Page 137, line 18
in shown should be is shown (tv)

page 141
Third paragraph, 2nd line, an the other should be and the other (ma)

Chapter 8.

Chapter 9.

Page 170, 3rd paragram
form a subset should be ``form a superset'' (gr)

Page 175, line 8
Uses inheritance mechanism should be uses the inheritance mechanism (insert the word the). (tv)

Page, 177, last sentence
Because mangers, should bemanagers. (tl)

Chapter 10.

Page 181, four lines from bottom
sets as sets should be such as sets (tv)

Page 183, 12 lines from bottom
an ClassInfo should be a ClassInfo (an to a). (tv)

Page 186-187
Missing close parenthesis on printf statements (jv)

Page 190
operator instanceOf should be instaceof (lower case O) (gr)

Page 190
should be system.out.println(, rather than println(a), in the java examples. (two errors) (fa), and (tl)

Page 190, bottom of page
The keyword Class should be removed from the declaration of the two variables. (kp)

Page 197, top of page
covert => convert (rm)

Chapter 11.

Page 208, section 11.5
First sentence is misleading. Java also uses refinement semantics for constructors.

Page 209, code
class Card should be capital (hl)

Chapter 12.

Page 225
The whole discussion of covariance and contravariance is a mish-mash that is difficult to follow. For the coming 3rd edition of the book I have rewritten this discussion in an entirely different fashion. See the postscript version or the PDF version.

Page 227, code near top
aTriange should bu aTriangle (jv)

Page 228, code
Not really an error, but many people prefer to code this as equal := (suitValue = aCard.suit) and (rankValue = aCard.rank), and avoid the if statement. (jv)

Chapter 13.

Page 248, next to last paragraph
It is not true that reversing the order of invocations of the constructor in class C has the effect of refersing the order of initialization. Instead, you must reverse the order of names listed in the class heading, as in (kl)
class C: public B, public A { 
Page 244, 2nd paragraph
ambiguity misspelled as amibiguity (gv)

Chapter 14.

Page 264, line 17
explantions => explanations (rm)

Page 265 and top of 266
Method draw has no return type (tl)

Page 268, Deferred Methods in Smalltalk
Extra s in subclassResponsibility (gv)

Chapter 15.

Note, To be revised
For the forthcoming 3rd edition of the book I am completely rewriting this chapter. A draft of the new chapter can be found both in postscript and in pdf.

Page 272, code at bottom
Missing uparrows and colon in assignments
	newLink^.value := newValue
	newLink^.nextElement := aList.firstLink

Page 280, line 8
values re extracted should be values are extracted (re should be are) (tv)

Page 282, middle of page,
Link new should be new Link (fa)

Page 282, middle of page
first should be a pointer, and needs pointer dereferencing (hl)

Chapter 16

Page 295.
Some versions of the STL require 3 template arguments for priority queue, some only 2.

Page 295
The arguments first and second on the final call to que.push are reversed. (dp)

Chapter 17

Page 307, Reactor example
A Nuclear Engineering student tells me that heat mediators are simply called coolant, and that cooling rods are actually fuel rods. (jg)

Page 308, 5 lines from bottom
Object oriented langauges should be language (singular) (jv)

Chapter 18

Page 326, middle of page
The intermediary acts as a focus point, should be focal. (jv)

Page 328, first line
all the same should be all instances of the same type (tv)

Page 332, exercise 1.
a application framework should be an (jv)

Chapter 19

Page 336
These seven classes (there are only six). (jv)

Chapter 20

Page 354, 2nd par of 20.3
know => known

Page 356, first line of text
By the class Card should be by declaring as static.... (tv)

Chapter 21

Page 369, line 15
the use of using virtual remove the word using (tv)

Page 370, next to last line
``strong form'' should be ``string form''


Page 417, Collaborator
dependend=>depend (aw)

Page 422, Member
Wrong font (mh)


Missing names Gene Korienek and Tom Wrensch in Korienek 1993.

Errors in the Errata List
Several meta-errata (errors in previous versions of the errata list) were reported by Tom Verhoeff.

Many Thanks

Many thanks to the following, who noticed one or more of errors reported above.
Mohammad H. Al-Huwaidi, CogniSeis Development Inc.
Luis Alvarez, Student in Computer Software Technology, Bath University
Francisco Azuola, Universidad de Costa Rica (University of Costa Rica).
Gerald Cahill, Antelope Valley College, Lancaster CA
(jg) John Gulick, student in Nuclear Enginnering Department, Oregon State University.
Craig Hondo, IMS corporation
Mohammad Huwaidi, Aramco, Saudi Arabia
Eric Landry, Computer Engineering Student, Oregon State University, Corvallis, Oregon
Thomas Larsson, Lecturer Mälardalens Högskola (Mälardalen University), Sweden.
Professor Hang Lau, Computer Science, Concordia University, Canada
Konstantin Laufer, Department of Math, Loyola University, Chicago.
Ray Maynard, Student, Antelope Valley College, Lancaster, CA
Patrick McCormick, Computer Science, The University of New Mexico--Los Almos.
C. David Percival, NSR, Vancouver Washington.
Kjell Post, Senior Lecturer, Department of Computer Engineering, Mälardalens Högskola (Mälardalen University), Sweden.
Gordon Royle, Senior Lecturer, Computer Science, University of Western Australia
Russ Ruby, Computer Science, Oregon State University, Corvallis, Oregon
Jeff Slomka, Southwest Texas State University
Patrick Thompson, Rogue Wave, Corvallis, Oregon
Jim (Jacxjo) Vanderveen, IT Administrator, Office of Water Programs, California State University, Sacramento.
Constantin Vasiliu, Tektronix, Beaverton Oregon
Ganesh Venkat, Nationwide Insurance
Tom Verhoeff, Department of Math and Computing Science, Eindhoven University of Technology, the Netherlands.
Aaron Whiffin, WWW consultant, UK.

BTW A machine crash some time back deleted a file that held several other reported errata that I had not yet verified. If you are looking for an errata you reported previously and do not see it, please let me know once again.

Report all errors to me at
Tim Budd, Associate Professor of Computer Science
Oregon State University
Corvallis, Oregon 97330