• Decouple the nitty-gritty lower level details from the higher level implementation

Abstraction Barrier

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

Limited Impact of Changes

Changes made within the module doesn’t require other modules to get modified

Leverage On Others

Using a set of concepts without the need to know the nitty gritty

Reduced Flexibility

If we want to modify the Computation 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

2 Aspects of Abstraction

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

Programming Abstraction