Level 3: Division into Classes
The division of subsystems into classes is typically needed on any project that takes longer than a few days.
Classes vs. Objects: A key concept in object-oriented design is the differentiation between objects and classes.
An object is the dynamic thing with specific values and attributes you see when you run the program.
Level 4: Division into Routines
The act of fully defining the class’s routines often results in a better understanding of the class’s interface.
Level 5: Internal Routine Design
writing pseudocode, looking up algorithms in reference books, deciding how to organize the paragraphs of code in a routine, and writing programming-language code.
This level of design is always done, though sometimes it’s done unconsciously and poorly rather than consciously and well.