While that knowledge is so ingrained in experienced programmers that many have trouble remembering when they did not know it, we recognize that students are not born knowing those concepts. It is easy to teach fundamental concepts. At the design level, we began by thinking in terms of objects, comparing those objects and their interactions to animated cartoons. This is a comfortable context for most students. It is through this kind of object-think that students can apply their everyday intuition.
Students know how to solve all sorts of difficult problems in ordinary life.
They ought to be able to use that experience in solving programming problems. At the programming level, objects can appear in various ways. In the beginning of this book, we use comments to bracket off the parts of programs corresponding to design objects. As we introduce new language features, we rely more on the code without the comments to describe the objects developed in our designs. With classes, we are able to capture in our code exactly what we had in our designs without relying strictly on comments to show us the way.