Errata - 99 Bottles of OOP

If you find any errors, please send details to errata@99bottlesbook.com.

Version 2.2.3

Programming
Language

Beverage

Location

Correction
All All Everywhere Replaced "hard coded" and "hardcoded" with "hard-coded".
Python All Everywhere Change Python instance method separator from "." to "()."
JS, PHP, Ruby All Listing 1.2
Following paragraphs
Removed duplicate paragraph, modified explanations
All All Section 1.1.2 Replaced the dead ABC Metric PDF URL with the working URL.
Python All Section 1.1.3
After paragraph beginning "One of many possible"
Added the missing `Kool-Aid` example.
All All Listing 4.57
Preceding paragraph
a overview —> an overview
All All Listing 4.6
Following paragraph
Replaced the hard-coded word “switch” with the language-specific conditional term (`case`, `match case`, or `switch`).
Python All Listing 6.22 Added lines 34-36
Python All Chapter 6 Summary
Final paragraph
Changed factory name from "for" to "given"
All All Listing 7.12
3rd paragraph below
if fact —> in fact
All All Figure 8.5
3rd paragraph below
instead poking —> instead of poking
All All Listing "Try the Wishful Code"
(8.32 or 8.33 depending on language)
Following paragraph
Added missing word "line".
All All Listing "Verse Gets Lyrics"
(8.13 or 8.14 depending on language)
2nd paragraph below
wishing thinking —> wishful thinking
Python All Listing 3.13
2nd paragraph below
Line numbers corrected
All All Listing 4.8
5th paragraph above
insures that —> ensures that
All All Listing 4.60
Following paragraph
the entire switch —> the entire case|match case|switch (language dependent)
Python All Listing 5.1 Include missing line 42
JS, PHP, Python All Listing 5.11
Following paragraph
Corrected line number to refer to correct listing line
All All Listing 5.13
Preceding paragraph
within the Bottle class —> within the Bottles class
All All 5.7 Summary
5th paragraph below
entirely on Bottle's tests —> entirely on Bottles's tests
All All 5.7 Summary
6th paragraph below
temporary field —> temporary variable
Python All Listing 6.1
5th paragraph below
Added two missing "five plus three" code examples
Python All Listing 6.33
2nd paragraph below
line 3 above —> line 4 above
Python All Listing 6.45
3rd paragraph below
has nine total lines —> has six total lines
All All Listing 7.6
3rd paragraph above
the [] lookup logic —> the key/value lookup logic
All All Section 7.6.
3rd paragraph above
methods would return —> method would return
Python All Listing 7.9
Following paragraph
Line 4 creates —> Line 7 creates
Python All Listing 8.5
Following paragraph
Bottles.verse —> Bottles().verse
All All Listing "Lyrics by Wishful Thinking"
(8.10 or 8.11 depending on language)
2nd paragraph above
lyrics from BottleNumber —> lyrics from BottleVerse
All All Listing "Wishing to Decouple From BottleVerse"
(8.15 or 8.16 depending on language)
2nd paragraph below
Line beginning "For now just recognize" was written to be more language specific
Python All Listing 8.16
Following paragraph
BottleVerse in referenced —> BottleVerse is referenced
All All Section 8.6.2
1st paragraph below code example
the duration method —> the durability method
PHP, Python All Section 8.8
Preceding paragraph
The lyrics method —> The _lyrics method
All All Listing "BottleVerse Class Responds to Lyrics"
(8.28 or 8.29 depending on language)
Following paragraph
BottleVerse class has been —> BottleVerse class been
Python All Listing 8.29
Following paragraphs
Refer to factory with "given" rather than "for".
All All Listing 9.9
Preceding paragraph
Rewrite paragraph with language specific references
PHP All Listing 9.9 Correct to render the right example code
All All Listing 9.14
2nd paragraph above
tests is tell —> tests is to tell
All All Listing 9.17
Preceding paragraph
rename the test —> rename the class
Python All Listing 9.18
Preceding paragraph
lines 4, 8, and 12 —> lines 1, 8, 12, and 16
Python All Listing 9.18 Added the missing Python import/class lines
All All Listing 9.20
4th paragraph below
Enumerator —> Iterator
All All Listing 9.24
Following paragraph
they test same thing —> they test the same thing
Python All Listing 9.36
Following paragraph
add test_plays_verse_role to any —> add a test for the role to any
All All Footnote 27 that group —> that you group

Submitted by Kirk Brooks, David Fulmer, César Gómez-Mora, Aureliusz Kalinowski, Jakob Krigovsky, Ben Madafiglio, Gonzalo Riestra Menéndez, Daniel Murphy, Leonardo Nobrega, Andrew O'Neill, Danilo Piazzalunga, Andreas Wagner

Version 2.2.1

Programming
Language

Beverage

Location

Correction
Python All Figures 8.3, 8.4, 8.5 Figures were inadvertently omitted, have been added
Python All Listing 8.5, following paragraph Removed note (does not apply to Python)
Python All Listing 8.26, following paragraphs Replaced 'new' with 'instance creation'

Submitted by Brian Sizemore

Version 2.2.0

Programming
Language

Beverage

Location

Correction
Python All Listing 4.61 Final line of code was missing, has been added

Submitted by Jerry Wu

Version 2.1.1

Programming
Language

Beverage

Location

Correction
All All Figure 1.1
3rd paragraph below
General is shorter —> General is shorter than
All All Preface Javascript —> JavaScript
All All List 5.10
2rd paragraph below
from Bottle to BottleNumber —> from Bottles to BottleNumber
All All List 5.10
2rd paragraph below
nothing about Bottle has —> nothing about Bottles has

Submitted by Josh Lubaway, Ashraf Nazar, Mark Tinsley

Version 2.1.0

Programming
Language

Beverage

Location

Correction
PHP Beer Code examples All examples should refer to beer rather than milk.
All All Table 2.2
1st paragraph below
as least as —> at least as
All All Section 6.5
3rd paragraph above
a object —> an object
All All Listing 6.10
Prior paragraph
makes it is easy —> makes it easy
PHP All Chapter 7
Introduction
BottleNumber.for —> BottleNumber::for
PHP All Listing 8.11
2nd paragraph above
$this->.verseTemplate(number) —> $this->verseTemplate(number)
Ruby All Listing 8.24
1st paragraph below
a object —> an object
JavaScript All Section 8.6.3
Bulleted list 4 paragraphs above
directly available to self —> directly available to this
PHP All Section 8.6.3
Bulleted list 4 paragraphs above
directly available to self —> directly available to $this
All All Listing 9.1
5th paragraph below
tangental —> tangential
All All Appendix A, Section 'Doing the Exercise'
3rd paragraph below
no tests is —> no test is

Submitted by Blithe Brandon, David Carlin, Matthew Fonda, Gregor Gramlich, Steven Jehannet, Jeff Ramnani

Version 2.0.0

Programming
Language

Beverage

Location

Correction
All All Your Rights As A Reader
2nd paragraph below
our rights are authors —> our rights as authors
All Milk Before You Read This Book
2nd paragraph below
milk and milk —> beer and milk
Ruby All Section 1.1.3
8th paragraph above
in lambdas are —> in lambdas) are
JavaScript All Section 1.1.3
8th paragraph above
in anonymous functions are —> in anonymous functions) are
All All Figure 1.1
2rd paragraph below
both Incomprehensibly Concise and Concretely Abstract —> Concretely Abstract
All All Table 2.2
1st paragraph below
as least as —> at least as
All All Section 5.7
3rd paragraph below
The total ABC score score, —> The total ABC score,
All All Section 6.5
3rd paragraph above
a object —> an object
All All Listing 6.10
Prior paragraph
makes it is easy —> makes it easy
JavaScript All Listing 7.5
Following paragraph
Line numbers are incorrect —> should read 6-8, 9, 9 and 11
JavaScript All Listing 8.11
Code examples above
BottleVerse.new(number).lyrics —> Ruby example, please ignore
JavaScript All Listing 8.6
Title
Add Attr Reader and Initialize —> Initialize Number
All All Listing 8.7
Title and previous sentence
BottleNumber —> BottleVerse
All All Listing 8.26
Prior paragraph
died-in-the-wool —> dyed-in-the-wool
JavaScript All Listing 9.31
Source code
on lines 12 and 13 starting, ending —> upper, lower

Submitted by Brandon Conway, Micah Corn, Lars Eckart, Viktor Fonic, Torbjörn Gannholm, Andris Klaipins, Conor Murray, Santiago Perez, Jeff Ramnani, Javier Rojas, David Sherline

Thanks to all.  


1st Edition Errata have been archived.