Абстракция - это упрощенное представление реальной сущности, где учитываются только важные для данного контекста характеристики, а второстепенные игнорируются. Существуют абстракции процессов и абстракции данных.
Абстракции процессов появились первыми. К ним относятся подпрограммы, такие как процедуры и функции. Абстракция данных также использует абстракцию процесса, так как ее важной частью являются операции.
Инкапсуляция - это размещение данных и подпрограмм для их обработки в контейнере, где доступ к данным возможен только через эти подпрограммы. Другими словами, инкапсуляция обеспечивает принцип сокрытия информации.
Принцип сокрытия информации: каждый программный компонент, определяемый программистом, должен максимально скрывать от пользователей информацию о своем внутреннем устройстве.
Инкапсуляция в абстракции означает, что пользователь:
Пример инкапсуляции: представление целочисленных и вещественных типов данных в языке программирования. Программист может использовать эти типы данных, не вникая в детали их реализации и представления в памяти, потому что детали представления чисел скрыты, а манипулировать отдельными битами невозможно.
Абстракция данных определяет:
Пользователю достаточно знать только название типа и смысл доступных операций.
АТД — это синтаксический контейнер, который включает определение данных только одного типа и подпрограммы, которые обеспечивают операции для этого типа.
АТД, определяемый программистом, должен удовлетворять двум условиям: