In software engineering and computer science, abstraction is the process of generalizing concrete details,[1] such as attributes, away from the study of objects and systems to focus attention on details of greater importance.[2] Abstraction is a fundamental concept in computer science and software engineering, especially within the object-oriented programming paradigm.[3] Examples of this include: