Abstraction (computer science)
Technique for arranging complexity of computer systems / From Wikipedia, the free encyclopedia
Dear Wikiwand AI, let's keep it short by simply answering these key questions:
Can you list the top facts and stats about Abstraction (computer science)?
Summarize this article for a 10 years old
In software engineering and computer science, abstraction is:
- The process of removing or generalizing physical, spatial, or temporal details[2] or attributes in the study of objects or systems to focus attention on details of greater importance;[3] it is similar in nature to the process of generalization;
- the creation of abstract concept-objects by mirroring common features or attributes of various non-abstract objects or systems of study[3] – the result of the process of abstraction.
The essence of abstraction is preserving information that is relevant in a given context, and forgetting information that is irrelevant in that context.
Abstraction, in general, is a fundamental concept in computer science and software development.[4] The process of abstraction can also be referred to as modeling and is closely related to the concepts of theory and design.[5] Models can also be considered types of abstractions per their generalization of aspects of reality.
Abstraction in computer science is closely related to abstraction in mathematics due to their common focus on building abstractions as objects,[2] but is also related to other notions of abstraction used in other fields such as art.[3]
Abstractions may also refer to real-world objects and systems, rules of computational systems or rules of programming languages that carry or utilize features of abstraction itself, such as:
- the usage of data types to perform data abstraction to separate usage from working representations of data structures within programs;[6]
- the concept of procedures, functions, or subroutines which represent a specific way of implementing control flow in programs;
- the rules commonly named "abstraction" that generalize expressions using free and bound variables in the various versions of lambda calculus;[7][8]
- the usage of S-expressions as an abstraction of data structures and programs in the Lisp programming language;[9]
- the process of reorganizing common behavior from non-abstract classes into "abstract classes" using inheritance to abstract over sub-classes as seen in the object-oriented C++ and Java programming languages.