Programming Smalltalk  Object-Orientation from the Beginning: An introduction to the principles of programming