Before we begin, it is worthwhile to spend a little time to describe where we are going. Chapters 3 and 4 should be considered a pair, as they present two sides of the same coin.
In chapter 3 we discuss the static, compile time representation of object-oriented programs, while chapter 4 discusses their dynamic, run time behavior.
Both topics are important, and an understanding of both is necessary in order to proceed. The appropriate starting place depends in part on the language you will be using. In compiled languages, such as Java and C++, you must first write a program before you can execute it, and so the progression from chapter 3 to chapter 4 follows the sequence the programmer will observe. In Smalltalk, on the other hand, you can immediately begin experimenting in a working system, and so the dynamic behavior (that is, chapter 4) will be what the programmers sees first, before progressing on to writing new classes, the topic of this chapter.