Давайте начнем с нуля. Прежде всего, что такое абстракция?
Проблема / Мотив
Когда вы программируете, вам часто приходится решать очень детализированные задачи.
Основной мотив абстракции - это когда вы можете оказаться в ситуации, когда ваша программа обрабатывает всю проблему как единое целое, со множеством отдельных мелких особенностей, требующих внимания и понимания. Проблема здесь в том, что людям трудно обрабатывать такие огромные объемы данных одновременно.
Решение: абстракция
Чтобы вы могли понять, что вам нужно для реализации своей идеи , вы извлекаете подробные решения в упрощенные абстракции .
Например, давайте посмотрим на ORM (объектно-реляционное отображение), где SQL абстрагируется в объекты.
Чтобы вставить новый элемент в базу данных без абстракций, программист должен знать SQL. Таким образом, чтобы вставить новый элемент, программист должен запомнить синтаксис SQL для вставки нового элемента в таблицу:
INSERT INTO Items (field1, field2) VALUES (value1, value2)
Но с абстракциями, программист должен знать только о том, что он хочет делать. Объектно-ориентированная абстракция может выглядеть так:
Item item = new Item(value1, value2)
Вы можете даже пойти немного дальше и подумать о том факте, что SQL сам по себе является огромной абстракцией для множества сложных структур и алгоритмов хранения данных, которые полностью в ваших руках по цене изучения простого декларативного языка.
Противоположность абстракции
Основываясь на том, что мы сейчас определили, что абстракция на самом деле сводится к тому, чтобы сделать ее достаточной только для того, чтобы знать наиболее существенную концепцию, имеющуюся под рукой, мы можем легко сделать вывод, что противоположность абстракции на самом деле является эзотерикой , где использование или понимание влечет за собой наличие своего рода специализированных знаний о особенности предмета.