Абстракция и абстрактные типы данных.
Вот сколько читаю, но ни как не могу понять что это такое и с чего его едят. Может быть какие то темы упустил для понимания... но всё же.. . Можете нормальным человеческим языком объяснить что такое абстракция и абстрактные типы данных в программировании. А точнее в паскале. Определений из википедии и тому подобных я насмотрелся.
А что тебе непонятно в Википедии? Там простым человеческим языком описано.
Могу простой пример привести: треугольник можно задать двумя сторонами и углом между ними, тремя сторонами, стороной и двумя углами и т. д. Представь себе, что у тебя есть тип Triangle, в котором можно стандартными функциями выставлять длины сторон, считать площадь и т. д. ; но ты не знаешь, хранит он все стороны или только две и угол, как считает площадь - это все делают известные тебе функции, а ты абстрагируешься от реализации.
Еще более простой пример: ты знаешь, как работает функция length для строки? Это тебе мешает пользоваться строками?
Есть встроенные типы данных, которые уже определены разработчиками языка. Есть пользовательские типы данных, которые определяет (составляет) сам пользователь. Пользовательские типы данных могут включать в своё описание как встроенные типы данных, так и другие пользовательские типы данных.
Как создаются пользовательские типы данных? Пользователь, решая некоторую задачу, делает её компьютерную модель. Данные этой модели он интерпретирует как некое множество, которое называется классом (структурой) . Для этого множества определяются, также, и функции, которые работают с данными этого множества. И эти функции, также, включается в описание класса (структуры) . А каким образом пользователь сопоставляет реальную задачу и записи программного кода. Что он для этого использует? Чем он пользуется? А пользуется он своими мыслями, знаниями и соответствующим уровнем абстракции. Поэтому и эти пользовательские типы данных и называют абстрактными типами данных.
в общем если есть несколько классов в одинаковыми функциями, определяют интерфейс и наследуют от него классы. если реализация функций одинаковая, то определяют абстрактный класс и там выписывают общие функции. а абстрактный он потому что его самого создавать не надо