Abstraction is a technique employed by programmers to make problems and programs easier to understand.
The simple definition of abstraction is to “remove detail that isn’t needed to make the problem easier to solve”.
But how do we know what detail is not needed?
The easiest was to identify an ‘abstracted model’ is to ask ourselves if the explanation would now describe the general problem instead of a specific one.
For example, this photograph of a cat could be used to describe to someone what a cat is. But if we used this photograph alone to describe what a cat is, we run the risk that they may think all cats have green eyes, white paws, and are tabbies.
That isn’t true, so we would need to remove the details that don’t apply to all cats to create our model.
Instead, we could describe our cat by it’s shape, size, number of legs, and ears. By just keeping the important details, we have created a ‘model’ that can be applied to solve our problem.