One of the best introductions to OO I've read a little book by Gary 
Entsminger called _The Tao of Objects: A Beginner's Guide to 
Object-Oriented Programming_. It's out of print so you may have to hunt 
for it on bookfinder.com.

The code examples are dated (and in C++ and Pascal) but they are really 
superfluous anyway. If you want to understand why OO was born and what 
it can do for you, this is a good place start. It's short, sweet, and as 
motivational as a technical book ever was.

Once you get excited about OO and begin using it the first design rule 
to learn is composition vs. inheritance. There is a good chapter on the 
subject in _Java Design_ by Peter Coad.

After that learn how to write unit tests and begin learning design 
patterns. The classic text there is _Design Patterns_ by Erich Gamma, 
Richard Helm, Ralph Johnson, and John Vlissides, commonly called the 
Gang of Four or GoF, but the content of the book has been reproduced 
many times in various other texts and using different languages for 
examples. Any of those that contain a full catalog of the major GoF 
patterns will do.

Eventually you'll want to read _Refactoring: Improving the Design of 
Existing Code_ by Martin Fowler, but some experience using design 
patterns will help.

As far as I know there are no books on design patterns which use Ruby 
for code examples. If Dave is listening he might note that it would be 
an interesting project given that most design pattern texts are based on 
languages which are statically typed. It would be interesting to see 
what gems a pattern book for a dynamically typed language would contain.


John-Mason Shackelford

Software Developer
Pearson Educational Measurement

2510 North Dodge St.
Iowa City, IA 52245
ph. 319-354-9200x6214
john-mason.shackelford / pearson.com
http://www.pearson.com/