Абстрактные типы данных (АТД)

Абстракция – это упрощенное представление реальной сущности, где выделяются важные для данного контекста характеристики, а второстепенные игнорируются. Существуют абстракции процессов (например, подпрограммы) и абстракции данных. Абстракция данных определяет:

Пользователь абстракции данных не нуждается в информации о внутреннем устройстве абстракции и не имеет возможности манипулировать этой информацией. Ему достаточно знать название типа и смысл доступных операций. Инкапсуляция обеспечивает принцип сокрытия информации: каждый программный компонент должен максимально скрывать от пользователей информацию о своем внутреннем устройстве.

Абстрактный тип данных (АТД) – это синтаксический контейнер, включающий определение данных только одного типа и подпрограммы, которые обеспечивают операции для этого типа. АТД, определяемый программистом, удовлетворяет двум условиям:

Примеры реализации АТД на разных языках программирования:

Пример инкапсуляции: представление целых и вещественных чисел в языках программирования. Программист может работать с числами, не зная деталей их реализации и представления в памяти.

Параметрический полиморфизм в АТД позволяет создавать АТД, которые могут работать с разными типами данных. Примеры реализации:

Абстрактный класс – это класс, в котором определены методы без реализации. Дочерний класс должен реализовать абстрактные методы, прежде чем на его основе смогут создаваться объекты. Весь класс может быть абстрактным, даже если в нем нет абстрактных методов. На основе абстрактного класса нельзя создать объект, но его можно использовать как родительский класс для наследования.