Abstraction & Design
Abstraction: Reducing complexity by hiding irrelevant details and focusing on main ideas.
- Data abstraction: Separates abstract properties from concrete representation; gives data a name without exposing implementation details.
- Procedural abstraction: Names a process; method can be used knowing what it does, not how.
- Method decomposition: Break large behaviors into smaller methods to enable code reuse and manage complexity.
- Parameters: Generalize procedures so they work with a range of input values.
Design first: Plan classes (attributes + behaviors) using natural language or diagrams before coding.



