Abstraction

What is abstraction?

Abstraction (from the Latin abs, meaning away from and trahere, meaning to draw) is the process of taking away or removing characteristics from something in order to reduce it to a set of essential characteristics.

Pablo Picasso and Abstraction

In 1945, Pablo Picasso produced a series of 12 lithographs entitled The Bull, in which he began with a realistic drawing of the animal, progressing through gradual removal of superfluous elements of the creature to reach a simple linear abstraction. This piece, showing the stages of abstraction, is in many ways emblematic of Picasso’s approach to the abstract; a daring experiment in reduction and non-conventional forms of representation, but one that never completely abandons the real.

Abstraction in programming

A simplification of something much more complicated that is going on under the covers.

The history of computer programming has been a story of increasingly sophisticated abstractions that let the programmer solve problems without worrying too much about how the underlying machine actually works.

That makes programs easier to write and perhaps more portable. But for many programs, access to the hardware, and precise control of how the program is executed, are more important.

As it turns out, a lot of computer programming consists of building abstractions.

Through the process of abstraction, a programmer hides all but the relevant data about an object in order to reduce complexity and increase efficiency. Abstraction is related to both encapsulation and data hiding.

In the same way that abstraction sometimes works in art, the object that remains is a representation of the original, with unwanted detail omitted. The resulting object itself can be referred to as an abstraction, meaning a named entity made up of selected attributes and behavior specific to a particular usage of the originating entity.

Abstraction in OOP

Exposing only essential information about an object to the outside world, hiding the complex implementation details.

It simplifies the interaction with objects by providing a simplified view, making it easier to understand and use them.

For example, when using a car, you interact with the steering wheel, pedals, and gear shift, without needing to know the intricate details of the engine’s operation.

Tags

  1. The Law of Leaky Abstractions
  2. Zero Cost Abstractions