Объяснение абстракции непрограммисту - PullRequest
12 голосов
/ 27 мая 2010

Абстракция - это концепция, которую сложно объяснить, не возвращаясь к использованию терминологии программирования. Я много думал об этом и не могу придумать удовлетворительного ответа. У кого-нибудь есть очень общие, но очень уместные объяснения?

Приветствуются метафоры, сравнения и т. Д.

Ответы [ 12 ]

21 голосов
/ 27 мая 2010

Автомобиль.

Вы взаимодействуете с автомобилем посредством абстракций - педаль газа, рулевое колесо, которые используются, чтобы скрыть сложность транспортного средства.

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

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

Еще одним хорошим примером являются автоматические коробки передач.

8 голосов
/ 27 мая 2010

Абстракция

Игнорирование деталей того, как что-то работает.

например, при повороте ключа в автомобиле запускается автомобиль, в котором рассматриваются такие детали, как стартер, аккумулятор, иммобилайзер, бензобак ...

6 голосов
/ 27 мая 2010

Большинство людей проводят весь день, абстрагируя подходящие детали от сложных вещей, поэтому я не думаю, что найти пример ужасно сложно.

Если я скажу вам, что я дам вам 10 секунд, чтобы что-то нарисовать, то, когда я скажу: "Начните! Нарисуйте дом", вы вряд ли придумаете что-то отличное от моего рисунка:

 /\
/  \
|  |
 --

Потому что ваш мозг абстрагировал самые важные детали о вашем доме: крышу, стены - и если у вас было время - двери, окна.

Мы абстрагируем детали от всего просто потому, что это облегчает понимание. Мы не изучаем каждую мелочь в деталях того, как построен стул - мы просто идем в Ikea и покупаем тот, который выглядит хорошо. Есть много хороших примеров.

4 голосов
/ 27 мая 2010

Абстракция может означать написание правил (или процедур), которые могут применяться к более широкому кругу обстоятельств.

Вы можете написать рецепт пиццы Маргариты, который требует: помидоры, сыр моцарелла, белая мука, вода, базилик, сахар, соль, оливковое масло и дрожжи.

Или вы могли бы сделать рецепт пиццы, который требует теста и начинки. Это абстрактный рецепт.

Затем вы можете сделать тесто из белой муки, воды, сахара, соли, оливкового масла и дрожжей.

Вы также можете приготовить топпинг из томатов, сыра моцарелла, базилика и оливкового масла.

Но вы также можете выбрать другие начинки (например, пепперони и перец чили) и другие виды теста (например, муку из непросеянной муки или кукурузную муку).

3 голосов
/ 24 мая 2016

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

1 голос
/ 27 мая 2010

Если вы имеете в виду абстракцию, как это предусмотрено библиотеками / фреймворками:

Использование программного уровня, который абстрагирует что-то, можно рассматривать как найм кого-то, кто работает на вас, чего вы не можете или не хотите делать сами.

Немного сложнее объяснить абстрагирование вещей в типичные программные структуры, такие как классы и объекты ...

0 голосов
/ 27 мая 2010

Цифр.

Что общего между тремя коровами, тремя стульями и тремя вишневыми деревьями? В чем проблема с тем, что у них общего? Вы не можете нарисовать это, и даже объяснить концепцию сложно, но она все еще полезна.

Цитата Алиса в стране чудес, Льюис Кэролл:

    "[doormice that were drawing everything that begins with an M, 
such as mousetraps, and the moon and memory, and muchness — [..]
 did you ever see such a thing as a drawing of a muchness ?"
0 голосов
/ 27 мая 2010

абстракция - это концепция или идея, не связанная с каким-либо конкретным экземпляром

0 голосов
/ 27 мая 2010

Почему бы просто не сделать "жилье".

Как в «24a Posh Towers» это «пентхаус с четырьмя спальнями в доков», это «лондонская квартира», это «дом», это жилище.

«Синяя палатка рядом с эфиопской вегетарианской продовольственной палаткой» - это «моя палатка в Гластонбери» - это «временный дом», а также «жилище»

0 голосов
/ 27 мая 2010

Автомобиль слишком продвинут для меня. Как насчет корзины? Вы нажимаете, он движется.

...