В рамках моего обучения я думаю, что лучший ответ (со смыслом) для определения абстракции, который я нашел, взят из stackoverflow:
Кроме того,
В рамках текущего онлайн-курса cs61B Fall 2006, Беркли, я изучил приведенное ниже определение ADT, близкое к приведенному выше определению, но добавив дополнительное слово «инвариант». Должен ли я считать это слово следствием приведенного выше определения? или Является ли это слово частью определения?
_Abstract_Data_Type_ (ADT) — это класс с четко определенным интерфейсом, но детали его реализации надежно скрыты от других классов. Таким образом, вы можете изменить реализацию класса, не ставя под угрозу программы, которые от него зависят. Класс Date является ADT.
ADT позволяет применять инварианты.
Инвариант — это факт о структуре данных, который всегда истинен (при условии, что код не содержит ошибок), независимо от того, какие методы вызываются внешними классами. Например, Date ADT применяет инвариант, согласно которому объект Date всегда представляет допустимую дату. Инвариант применяется, разрешая доступ к определенным полям только через вызовы методов.