Abstraction is the process of recognizing and focusing on important characteristics of a situation or object and leaving/filtering out the un-wanted characteristics of that situation or object.
Let’s take a person as example and see how that person is abstracted in various situations
· A doctor sees (abstracts) the person as patient. The doctor is interested in name, height, weight, age, blood group, previous or existing diseases etc. of a person.
· An employer sees (abstracts) a person as Employee. The employer is interested in name, age, health, degree of study, work experience etc. of a person.
It’s through abstraction we define the essential aspects of a system. The process of identifying the abstractions for a given system is called as Modelling (or object modelling).
In the above example, the doctor may not be interested in characteristics of a person on which the employer is interested in and vice versa.
Both employer and doctor will not be interested in all the characteristics of a person (like the color of dress the person wears on a particular day, the food the person takes, the relatives of the person etc.).
But however some elements are common to both doctor and the employer (like name, age, height etc.). This common element gives way to generalization. i.e., if we eliminate enough details of an abstraction, it become so generalized that it can be applied wide in range of situations.
In real world, there are millions of abstractions possible and many are complex in nature.
The complexities of abstractions are handled by systematically classifying and generalizing the abstractions based on some pre-defined criteria. This process is known as classification.
Classification builds up a hierarchy and it called as abstract hierarchy.
A "person" abstraction for a hospital information system would be different from a person abstraction for a library information system and even with hospital information system, person abstraction may be different for different projects.