Abstraction (computer science)

abstractiondata abstractionabstractabstractionsabstractedabstractingabstractsAbstraction in computer scienceabstraction layercontrol abstraction
In software engineering and computer science, abstraction is:wikipedia
260 Related Articles

Software engineering

software engineersoftware engineerssoftware
In software engineering and computer science, abstraction is:
Thus the division between "hardware" and "software" began with abstraction being used to deal with the complexity of computing.

Programming language

programming languageslanguagedialect
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:
One common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction.

Software architecture

The software is structured in architectures to enable humans to create the enormous systems by concentrating on a few issues at a time.
As an example, consider a strictly layered system, where each layer can only use services provided by the layer immediately below it.

Leaky abstraction

The software engineer and writer Joel Spolsky has criticised these efforts by claiming that all abstractions are leaky — that they can never completely hide the details below; however, this does not negate the usefulness of abstraction.
In software development, a leaky abstraction is an abstraction that leaks details that it is supposed to abstract away.

Lambda calculus

beta reductionλ-calculusuntyped lambda calculus
Lambda calculus (also written as λ-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution.

Object-oriented programming

object-orientedobject orientedobject-oriented programming language
In object-oriented programming theory, abstraction involves the facility to define objects that represent abstract "actors" that can perform work, report on and change their state, and "communicate" with other objects in the system.
They provide a layer of abstraction which can be used to separate internal from external code.

Scripting language

The language abstraction continues for example in scripting languages and domain-specific programming languages.
Scripting languages typically use abstraction, a form of information hiding, to spare users the details of internal variable types, data storage, and memory management.


C++ programming languageC++98C with Classes
C++ introduces object-oriented programming (OOP) features to C. It offers classes, which provide the four features commonly present in OOP (and some non-OOP) languages: abstraction, encapsulation, inheritance, and polymorphism.

Abstract data type

abstract data typesabstract data structureabstract
For example, one could define an abstract data type called lookup table which uniquely associates keys with values, and in which values may be retrieved by specifying their corresponding keys.
The notion of abstract data types is related to the concept of data abstraction, important in object-oriented programming and design by contract methodologies for software development.

Cognitive dimensions of notations

Cognitive dimensionsHidden dependencyViscosity
The Cognitive dimensions framework includes the concept of abstraction gradient in a formalism.
; Abstraction gradient : What are the minimum and maximum levels of abstraction exposed by the notation?

Abstraction principle (computer programming)

abstraction principleAbstraction principle (programming)abstraction
In software engineering and programming language theory, the abstraction principle (or the principle of abstraction) is a basic dictum that aims to reduce duplication of information in a program (usually with emphasis on code duplication) whenever practical by making use of abstractions provided by the programming language or software libraries.

View (SQL)

viewviewsdatabase view
The system may provide many views for the same database.
Just as a function (in programming) can provide abstraction, so can a database view.

Data independence

data independentlyphysical data independence
This is referred to as physical data independence.
The data independence and operation independence together gives the feature of data abstraction.

Function overloading

overloadedoverloadingmethod overloading
C++ exemplifies another extreme: it relies heavily on templates and overloading and other static bindings at compile-time, which in turn has certain flexibility problems.

Semantics (computer science)

semanticsformal semantics of programming languagesformal semantics
When discussing formal semantics of programming languages, formal methods or abstract interpretation, abstraction refers to the act of considering a less detailed, but safe, definition of the observed program behaviors.
It is also possible to relate multiple semantics through abstractions via the theory of abstract interpretation.

Data modeling

data modellingmodelingmodeled
A semantic data model is an abstraction which defines how the stored symbols relate to the real world.

Computer science

computer scientistcomputer sciencescomputer scientists
In software engineering and computer science, abstraction is:


abstractabstract thinkingabstractions
Abstraction, in general, is a fundamental concept to computer science and software development.

Software development

developmentdevelopedapplication development
Abstraction, in general, is a fundamental concept to computer science and software development.


The process of abstraction can also be referred to as modeling and is closely related to the concepts of theory and design.


design processdesign firmdesigning
The process of abstraction can also be referred to as modeling and is closely related to the concepts of theory and design.

Conceptual model

Models can also be considered types of abstractions per their generalization of aspects of reality.


real worldrealreality-based
Models can also be considered types of abstractions per their generalization of aspects of reality.

Abstraction (mathematics)

abstractabstractionAbstraction in mathematics
Abstraction in computer science is also closely related to abstraction in mathematics due to their common focus on building abstractions as objects, but is also related to other notions of abstraction used in other fields such as art.