Abstraction is a way to do decomposition productively by changing the level of detail to be considered.

There are four kinds of abstractions:

  1. Procedural abstraction: Introduce new operations
  2. Data abstraction: Introduce new data types
  3. Iteration abstraction: Iterate over new items in a collection without revealing details of how items are obtained
  4. Type hierarchy: Abstract from individual types to families of related type

Procedural Abstraction