2.1 Good application design requires an iterative process2.2 Don’t let changes leak out2.3 Iterate to achieve good design2.3.1 Iteration 1: Initial cohesive classes2.3.2 Iteration 2: Encapsulation, delegation, and loose coupling2.3.3 Iteration 3: More kinds of books and their attributes2.3.4 Iteration 4: A better design after backtrackingSummary