The first chapter of my book Understanding Object-Oriented Programming with Java covers much the same ground as this chapter, but in a more Java-centric fashion. You can view this chapter in either postscript or pdf formats.