Product Design, Manufacturing & Innovation Resources
Home » Abstraction (OOP programming)

Abstraction (OOP programming)

1970
  • Barbara Liskov
Software engineer coding abstract classes in a modern IDE environment.

(generated image for illustration only)

Abstraction in OOP is the concept of hiding complex implementation details and showing only the essential features of the object. It focuses on what an object does instead of how it does it. This is achieved through abstract classes and interfaces, which define a blueprint for other classes without providing a complete implementation, simplifying complex systems.

Abstraction is a process of managing complexity. In programming, it involves creating a simplified representation of a system or component. In OOP, this is primarily done using abstract classes and interfaces. An abstract class is a class that cannot be instantiated on its own and is meant to be subclassed. It can contain abstract methods (methods without a body) that subclasses must implement. An interface is a similar concept but is purely abstract; it can only define method signatures, not implementations. A class can then ‘implement’ an interface, promising to provide the functionality defined in it.

This allows programmers to define a common contract or API that multiple different classes can adhere to. For example, an interface ‘Storable’ could define ‘save()’ and ‘load()’ methods. Different classes like ‘Document’, ‘Image’, and ‘UserSettings’ could all implement the ‘Storable’ interface, each providing its own logic for saving and loading. Code that works with ‘Storable’ objects doesn’t need to know the specific type of object it’s dealing with; it only needs to know that it can call ‘save()’ and ‘load()’. This decouples the client code from the specific implementations, making the system more modular, flexible, and easier to understand at a high level.

UNESCO Nomenclature: 1203
– Computer science

Type

Abstract System

Disruption

Foundational

Usage

Widespread Use

Precursors

  • mathematical abstraction
  • the concept of subroutines and functions as a form of procedural abstraction
  • abstract data types (adt) theory
  • the need to manage complexity in large-scale engineering projects

Applications

  • database access layers (DALs) that hide the specific SQL queries
  • device drivers abstracting hardware complexity from the operating system
  • graphical user interface (GUI) libraries providing high-level widgets
  • network protocols like HTTP abstracting the underlying TCP/IP communication
  • the standard template library (stl) in C++

Patents:

NA

Potential Innovations Ideas

Due to scrapping bot traffic, currently more than 40k per day, this content is reserved to community members.
> Login < or > Register < (100% free) to access this, so as all other restricted content and tools.

Related to: abstraction, interface, abstract class, API, information hiding, complexity, OOP, contract, decoupling, modularity.

Historical Context

Abstraction (OOP programming)

1967
1967
1970
1970
1970
1970-01-01
1975-06-01
1960
1967
1970
1970
1970
1970
1973
1980

(if date is unknown or not relevant, e.g. "fluid mechanics", a rounded estimation of its notable emergence is provided)

Related Invention, Innovation & Technical Principles

Full size images and downloads are only available, 100% free, for registered members.

> Login <