abstraction

Abstraction

Return to Abstraction (computer science), Data Abstraction, Liskov Substitution Principle, Object-Oriented Programming

TLDR: Abstraction refers to the process of simplifying complex systems by focusing on high-level concepts while hiding implementation details. Widely used in computer science and engineering, it enables developers to design modular, reusable, and flexible systems by emphasizing functionality over complexity.

The concept of abstraction has roots in mathematics and philosophy, where it was used to generalize problems and solutions. In computing, it emerged prominently during the development of early programming languages in the 1950s. For instance, Fortran, introduced in 1957 by IBM, allowed programmers to write code without worrying about low-level hardware operations, marking one of the earliest examples of computational abstraction.

Abstraction is a cornerstone of software design, exemplified by layered architectures. Operating systems like UNIX, developed in 1969 by Ken Thompson and Dennis Ritchie, separate user interactions from hardware operations using layers such as the kernel and Virtual File System (VFS). This separation simplifies system management and development.

In database systems, abstraction is achieved through SQL, which provides a high-level interface for interacting with data while concealing underlying storage mechanisms. This abstraction is critical for cloud database technologies, enabling scalable and distributed data management without exposing users to system complexities.

The principle of abstraction is equally significant in robotics and automation. For example, robotic control algorithms abstract sensor data into actionable insights, allowing robots to navigate and interact with environments without requiring explicit details of sensor mechanics. This modularity supports real-time decision-making and system flexibility.

Through its application in software, hardware, and systems engineering, abstraction remains integral to technological advancement. By simplifying complex systems, it fosters innovation across domains, from computing to robotics, making technology more accessible and adaptable.

https://en.wikipedia.org/wiki/Abstraction_(computer_science)


Abstraction is a core principle in computer science and software engineering, especially within the realm of object-oriented programming (OOP). It involves simplifying complex realities by modeling classes appropriate to the problem, and working with instances of these classes rather than the details of their implementation. The main purpose of abstraction is to hide the unnecessary details from the users and focus on aspects that are relevant to the context of use. This enables developers to reduce programming complexity and effort by separating the interface (what operations can be performed) from the implementation (how those operations are internally carried out). Abstraction allows for simplifying the interaction with objects, making the software development process more efficient and less error-prone by emphasizing what an object does rather than how it does it.

Abstraction in computer programming is a way to reduce complexity and allow efficient design and implementation in complex software systems. It hides the technical complexity of systems behind simpler APIs.

Advantages of Data Abstraction

Fair Use Source: https://developer.mozilla.org/en-US/docs/Glossary/Abstraction

Snippet from Wikipedia: Abstraction (computer science)

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

  • the usage of abstract data types to separate usage from working representations of data within programs;
  • the concept of functions or subroutines which represent a specific way of implementing control flow;
  • the process of reorganizing common behavior from groups of non-abstract classes into abstract classes using inheritance and sub-classes, as seen in object-oriented programming languages.
Snippet from Wikipedia: Liskov substitution principle

The Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called strong behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address titled Data abstraction and hierarchy. It is based on the concept of "substitutability" – a principle in object-oriented programming stating that an object (such as a class) may be replaced by a sub-object (such as a class that extends the first class) without breaking the program. It is a semantic rather than merely syntactic relation, because it intends to guarantee semantic interoperability of types in a hierarchy, object types in particular. Barbara Liskov and Jeannette Wing described the principle succinctly in a 1994 paper as follows:

Subtype Requirement: Let ϕ ( x ) {\displaystyle \phi (x)} be a property provable about objects x {\displaystyle x} of type T. Then ϕ ( y ) {\displaystyle \phi (y)} should be true for objects y {\displaystyle y} of type S where S is a subtype of T.

Symbolically:

S T ( x : T . ϕ ( x ) y : S . ϕ ( y ) ) {\displaystyle S\leq T\to (\forall x{:}T.\phi (x)\to \forall y{:}S.\phi (y))}

That is, if S subtypes T, what holds for T-objects holds for S-objects. In the same paper, Liskov and Wing detailed their notion of behavioral subtyping in an extension of Hoare logic, which bears a certain resemblance to Bertrand Meyer's design by contract in that it considers the interaction of subtyping with preconditions, postconditions and invariants.


Abstraction is a process or result of generalization, removal of properties, or distancing of ideas from objects.

abstraction - “The principle of ignoring those aspects of a subject that are not relevant to the current purpose in order to concentrate solely on those that are. The application of this principle is essential in the development and understanding of all forms of computer system. See data abstraction, procedural abstraction.” (Fair Use ODCS)

Disambiguation:

Abstraction may also refer to:

See also


Return to Glossaries, C plus plus glossary | C++ glossary, Programming glossary

In C++

Abstraction is the act of specifying a general interface hiding implementation details. Classes, abstract classes, and templates are the primary abstraction mechanisms in C plus plus C++. See also: encapsulation.”

Fair Use Source: http://www.stroustrup.com/glossary.html

Programming: Programming languages

Variables and Data Types, Control Structures, Functions and Methods, Object-Oriented Programming (OOP), Functional Programming, Procedural Programming, Event-Driven Programming, Concurrent and Parallel Programming, Error Handling and Debugging, Memory Management, Recursion, Algorithms, Data Structures, Design Patterns, Software Development Life Cycle (SDLC), Version Control Systems, Database Programming, Web Development, Mobile App Development, Game Development, Machine Learning and AI Programming, Network Programming, API Development, Security in Programming, Testing and Quality Assurance, User Interface and User Experience Design, Scripting Languages, Assembly Language, High-Level Programming Languages, Low-Level Programming Languages, Compiler Design, Interpreter Design, Garbage Collection, Regular Expressions, Graphical User Interface (GUI) Programming, Command Line Interface Development, Cross-Platform Development, Cloud Computing in Programming, Blockchain Programming, IoT Programming, Embedded Systems Programming, Microservices Architecture, Serverless Architecture, Big Data Technologies, Data Visualization, Data Mining and Analysis, Natural Language Processing (NLP), Computer Graphics Programming, Virtual Reality (VR) Development, Augmented Reality (AR) Development, Cryptography in Programming, Distributed Systems, Real-Time Systems Programming, Operating System Development, Compiler and Interpreter Development, Quantum Computing, Software Project Management, Agile Methodologies, DevOps Practices, Continuous Integration and Continuous Deployment (CI/CD), Software Maintenance and Evolution, Software Licensing, Open Source Development, Accessibility in Software Development, Internationalization and Localization, Performance Optimization, Scalability Techniques, Code Refactoring, Design Principles, API Design, Data Modeling, Software Documentation, Peer-to-Peer Networking, Socket Programming, Front-End Development, Back-End Development, Full Stack Development, Secure Coding Practices, Code Reviews, Unit Testing, Integration Testing, System Testing, Functional Programming Paradigms, Imperative Programming, Declarative Programming, Software Architecture, Cloud-Native Development, Infrastructure as Code (IaC), Ethical Hacking for Developers, Artificial Intelligence Ethics in Programming, Software Compliance and Standards, Software Auditing, Debugging Tools and Techniques, Code Optimization Techniques, Software Deployment Strategies, End-User Computing, Computational Thinking, Programming Logic and Techniques, Advanced Data Management

Agile, algorithms, APIs, asynchronous programming, automation, backend, CI/CD, classes, CLI, client-side, cloud (Cloud Native-AWS-Azure-GCP-IBM Cloud-IBM Mainframe-OCI), comments, compilers, concurrency, conditional expressions, containers, control flow, databases, data manipulation, data persistence, data science, data serialization, data structures, dates and times, debugging, dependency injection, design patterns, DevOps, distributed software, Docker, error handling, file I/O, frameworks, frontend, functions, functional programming, GitHub, history, Homebrew, IDEs, installation, JetBrains, JSON, JSON Web Token (JWT), K8S, lambdas, language spec, libraries, linters, Linux, logging, macOS, methods, ML, microservices, mobile dev, modules, monitoring, multi-threaded, network programming, null, numbers, objects, object-oriented programming, observability, OOP, ORMs, packages, package managers, performance, programmers, programming, reactive, refactoring, reserved words, REST APIs, RHEL, SDK, secrets, security, serverless, server-side, Snapcraft, SQL, StackOverflow, standards, standard library, statements, scope, scripting, syntax, systems programming, TDD, testing, tools, type system, web dev, variables, versions, Ubuntu, unit testing, Windows; topics-courses-books-docs. (navbar_programming - see also navbar_variables, navbar_programming_libraries, navbar_data_structures, navbar_algorithms, navbar_software_architecture, navbar_agile)


Cloud Monk is Retired ( for now). Buddha with you. © 2025 and Beginningless Time - Present Moment - Three Times: The Buddhas or Fair Use. Disclaimers

SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.


abstraction.txt · Last modified: 2025/02/01 07:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki