• Decouple the nitty-gritty lower level details from the higher level implementation, achieving ease of use

Control Abstraction

  • We don’t care how a certain thing is done
  • We just know with some inputs, it will get processing done, and return the results we want

Data Abstraction

  • The states/data that is hidden away from us but is used during the processing

Abstraction Barrier

  • Features and the associated data are grouped in a container aka module
  • Providing an interface for other modules to interactive with

Changes made to the modules are limited

Changes made within the module don’t require other modules to get modified, as long as the exposed interface is unchanged.

Easier to build on top

Abstraction allows us to use a set of concepts without the need to know the nitty gritty.

Reduced Flexibility

If we want to modify the features protected by the abstraction barrier. We need to get the one who implemented the nitty gritty to help us. This can be helped with Code for Change.

Programming Abstraction