Что такое абстракция?

Знаю про абстракцию в ООП, и если я правильно понимаю, то это выделение и сосредоточение только на тех деталях объекта, которые позволят нам решить задачу. Но слышал ещё и про уровень абстракции и просто про абстракцию, которая не относится к ООП. Хотелось бы разъяснить данные моменты.


Ответы (1 шт):

Автор решения: CrazyElf

Знаю про абстракцию в ООП, и если я правильно понимаю, то это выделение и сосредоточение только на тех деталях объекта, которые позволят нам решить задачу.

Именно так. Абстракция - это когда мы переходим от конкретных сущностей вроде клубники, бананов и яблок, где каждая отдельная ягода, каждый отдельный фрукт имеет свои особенности, нам не интересные, к обобщённым классам Клубника, Банан, Яблоко с некими общими для любой ягоды или фрукта свойствами, например: цвет, вес, цена. Нас интересуют только эти свойства, а всё остальное мы отбрасываем. Получается тот самый "сферический конь в вакууме", имеющий довольно мало общего с реальным конём, но позволяющий решать некие физические задачи по моделированию поведения коней в природе.

Но слышал ещё и про уровень абстракции и просто про абстракцию, которая не относится к ООП. Хотелось бы разъяснить данные моменты.

Абстракция на самом деле относится к ООП. Это как бы нулевой пункт, предшествующий классической триаде ООП "инкапсуляция, наследование, полиморфизм". Без абстракции ООП невозможно. Иногда её называют вместе с триадой, иногда просто подразумевают, но без неё никуда.

Что касается уровней абстракции, то после описания классов Клубника, Банан, Яблоко мы можем пойти ещё дальше к ещё более абстрактным классам Овощ, Фрукт, Ягода. Потом к ещё более абстрактному классу Еда. Потом к классу Товар. На каждом из этих этапов мы скорее всего будем терять всё больше деталей предмета, который описываем, но зато получать возможность однотипно оперировать всё более разными сущностями.

Впрочем, можно абстрагироваться и не обобщая разные сущности, а моделируя одну и ту же сущность с разной степенью детализации. Уже упоминавшийся "сферический конь в вакууме" - это доведённый до абсурда пример абстрагирования, когда от коня осталась одна характеристика - радиус шара, которым мы его себе представляем, а окружающую коня среду во всей её разнообразности мы заменили на вакуум, то есть отсутствие какой-либо среды.

→ Ссылка