# Abstraction

{% hint style="success" %}
**Abstraction** is the process of removing physical, spatial, or temporal details or attributes in the study of objects or systems in order to focus attention on details of higher importance, it is also very similar in nature to the process of generalization.
{% endhint %}

Abstraction is one of the fundamental ways that we as human scope with complexity. Dahl, Dijkstra, and Hoare suggest that “abstraction arises from a _recognition of similarities_ between certain objects, situations, or processes in the real world, and the decision to concentrate upon these similarities and to ignore for the time being the differences”.

![](https://lh5.googleusercontent.com/ZZjB10iI4WVH9b30Jwb1jajVS4G5kHDXrQKqjIdRsE1qgm0u37qmI7ijPGVJQ8o46pETaFeTY_4oRmikRggLrHc8GH9KmHMiEouGCuo--645bI7LWxjvSPaEQ55xcQJyqtRTCENU1eEeCmtpbg)



Abstractions also **may (or may not) refer to real-world** objects and systems. “There is a spectrum of abstraction, from objects which closely model problem domain entities to objects which really have no reason for existence”:

* Entity abstraction
* Action abstraction (the concept of procedures, functions, or subroutines)
* Virtual machine abstraction (an object that groups operations that are all used by some superior level of control, or operations that all use some junior-level set of operations)
