This book focuses on software development with an object-oriented approach. Java is used for the implementation, since it's well suited for learning and doing object-oriented software development.

Programmer only learns by doing. In this book, readers will work with many different situations where software development is necessary. Readers should not start by learning Java's eight different primitive types or its five different control statements. They should start by seeing how to develop software for a particular realistic situation. And they should learn the language features they need for the situation as the need arises.

This book starts by introducing the objects that make drawings. In this context readers will learn to send messages to objects to carry out simple tasks. More importantly, this book shows readers how to "teach" those objects to put together a sequence of simple actions to perform a complex task. These "better-trained" objects have new capabilities in addition to the ones they inherit from the original specifications. This inheritance technique eventually makes the job much easier. Bigger jobs can be completed with less work and less chance of getting it wrong if there are new objects that take over most of the work. When objects are used this way, they should be thought of as the agents or executive assistants.