Abstraction drives class design
Data abstraction gives a data type a name without exposing how it is stored. Procedural abstraction gives a process a name so callers do not need to know the implementation. Together they let you design a class by listing attributes and behaviors before writing a single line of code.
