To take full advantage of Java, or of any of today's object-oriented languages, programmers must learn fundamental design principles as well as the syntax of code. This tutorial teaches program design in a format even beginning programmers can understand. You'll learn to use a design notation system that makes it easier to represent the design features of a program. Unlike conventional texts in software design, this book starts with concrete solutions and uses examples to demonstrate theory and abstract principles. This approach is aimed at hands-on programmers who learn best by working through problems in step-by-step fashion.