2.1 Deciding What Belongs in a Class2.1.1 Grouping Methods into Classes2.1.2 Organizing Code to Allow for Easy Changes2.2 Creating Classes That Have a Single Responsibility2.2.1 An Example Application: Bicycles and Gears2.2.2 Why Single Responsibility Matters2.2.3 Determining If a Class Has a Single Responsibility2.2.4 Determining When to Make Design Decisions2.3 Writing Code That Embraces Change2.3.1 Depend on Behavior, Not Data2.3.2 Enforce Single Responsibility Everywhere2.4 Finally, the Real Wheel2.5 Summary