Abstraction
Abstraction is the process of describing entities and processes in simple terms by removing non-essential characteristics. A physical or abstract entity may have many characteristics but for the purpose of some application or domain, not all of them are important. By abstracting entities into simple models (that make sense for the application domain), we can build simpler and more efficient programs.
Let's consider the example of an employee. An employee is a person. A person has a name; a birthday; body characteristics, such as height, weight, hair color, and eye color; relatives and friends; likes and hobbies (such as food, books, movies, and sports); an address; properties (such as a house or apartment and cars or bikes); one or more phone numbers and email addresses; and many other things that we could fill pages listing.
Depending on the kind of application we are building, some of these are relevant and some are not. For instance, if we build a payroll...