что такое абстрактные темы
Абстракция — что это такое и как абстрактное мышление (абстрагирование) помогает увидеть суть
Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Вспомните скучные уроки в школе или университете, на которых вам хотелось спать. Что в них было общего? Обилие научных понятий, общих тезисов (что это такое?) и размытых формулировок.
Вводный теоретический урок предполагает работу с абстракциями. Из-за них он такой обобщённый, как бы оторванный от предмета.
Что такое абстракция? Зачем она нужна? И как она связана с другими сложными понятиями: абстрагированием, абстрактным мышлением? В этой статье мы разберём все вопросы по полочкам. Поехали!
Абстракция и абстрагирование — это упрощение реальности
Абстракция – это мысль, которая родилась в процессе абстрагирования (процесса исключения и отделения несущественного в данный момент, чтобы увидеть главное). Разочарованный читатель, наверное, подумал: «Ну вот, опять нет чёткого определения, а только размытая фраза». Наберитесь терпения, до истины (что это?) осталось совсем чуть-чуть.
У слова «abstractio» три варианта перевода с латыни:
Это мыслительные операции, которые проводит мозг над объектами реального мира в процессе абстрагирования. И появляются абстракции.
Вот несколько примеров для понимания.
Чтобы этого не произошло, вы отвлекаетесь от несущественных сторон, свойств и связей объекта. Выбрасываете из головы слои атмосферы, химический состав и формируете общую мысль – «небо».
Так вот, «небо» — это и есть абстракция. Вы можете пойти дальше и выделить другие существенные признаки объекта: цвет, погоду, время суток. Тогда возникнут такие абстрактные понятия: «голубое небо», «пасмурное небо», «ночное небо».
Например, связи с банковским учреждением и работодателем. Разве вам интересно, какой длинный путь прошли титульные знаки перед тем, как оказались в вашем кошельке? Вряд ли. Важно то, что это деньги.
Таким образом, вы постоянно занимаетесь абстрагированием и порождаете абстракции. Без этого процесса голова бы просто лопнула от мыслей.
Тогда почему так трудно высидеть на скучных лекциях?
Абстрактные понятия — это высшая форма абстракции
Обобщать можно не только объекты реального мира, но и сами абстракции. Так формируются абстракции высокого порядка – абстрактные понятия. Ими оперируют фундаментальные и точные науки, чтобы описывать сложные закономерности.
Рассмотрим упрощённый пример того, как рождается абстрактное понятие.
На землю выпали атмосферные осадки из кристалликов льда. Это снег. Небо полностью закрыто облаками. Небо и снег белые. На улице белизна.
«Белизна» — это абстрактное понятие. Попробуйте его обобщить. Не получится. Другие примеры абстрактных понятий: истина, справедливость, время, вещество, информация.
От простой абстракции до её высшей формы иногда проходит так много мыслительных этапов, что абстрактное понятие оказывается сильно оторванным от реальности и сложным для восприятия.
Поэтому так трудно слушать теоретические лекции преподавателя.
Виды абстракций
Абстрагирование – это мыслительный процесс, который преследует определённую цель. Вычленить какой-то существенный признак, получить общую картину явления или выработать идеальную схему.
В зависимости от цели абстрагирования выделяют три вида абстракций.
Цель – получить общую картину явления. Для этого вы отвлекаетесь от частных признаков. Пример обобщающей абстракции – это математические уравнения. Они решаются по определённым правилам. Нет смысла мысленно «дробить» математические уравнения на цифры, плюс, минус, знак равенства, переменную.
Цель – выработать идеализированную схему объекта, отбросив несущественные реальные атрибуты. Идеализация – это метод познания, без которого не обходятся точные и естественные науки. Вспомните пресловутого «сферического коня в вакууме».
В реальности нет изолированных точек, прямых линий, времени. В отрыве от конкретного объекта их нельзя потрогать, измерить. Это абстракции, которые используются в математике и физике для описания закономерностей реальных явлений.
Что такое абстрактное мышление
Если абстрагирование – это процесс выработки абстракций, то абстрактное мышление – это оперирование ими.
Строгий экзаменатор критикует молодого человека, отвечающего слишком пространно: «Давайте ближе к предмету билета».
Почему студент так бросается умными фразами? Чтобы скрыть пробелы в знаниях, а то и полное их отсутствие. И в этом кроется суть абстрактного мышления.
Знания человека о реальном мире не являются полными, исчерпывающими, конкретными. Но ему нужно как-то ориентироваться среди неизвестных явлений и вещей, поэтому он мыслит абстрактно.
Если бы не было понятия времени, то как бы люди договаривались о встречах? Как бы учёные описывали новые галактики, не имея представления о форме, расстоянии, скорости, веществах? А как бы без общих понятий взаимодействовали науки?
Абстрактное мышление – это форма познания, которая позволяет выйти из интеллектуального тупика, хотя бы на обобщённом уровне описать неизвестные явления. С его помощью строят догадки и видят проблему с разных углов.
Вы стали свидетелем семейной ссоры. Вашему другу на телефон звонит жена, плачет, кричит, ругается. Какие выводы делает мозг?
Краткое резюме
Итак, если говорить совсем уж простым языком, то термин, вынесенный в заголовок этой статьи, представляет из себя общую мысль, которая приближает нас к сути объекта (явления).
Абстракция – это посредник между человеком и сложным миром с его тайнами, законами.
Глупо противопоставлять конкретные понятия абстрактным, потому что без последних невозможен сам процесс познания.
Автор статьи: Наталья Белоусова
Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru
Эта статья относится к рубрикам:
Комментарии и отзывы (8)
Спасибо за развернутую и крайне понятную подачу материала, выручили!
Автор статьи явно молодец.
Абстрактное мышление может быть очень полезно при решении любых задач, причем как теоретических, так и практических. Жаль только, что в школах и других учебных заведениях толком не учат правильным и эффективным методикам.
Мы можем мыслить абстрактно, чтоб объяснить для себя некоторые неосязаемые категории, однако дальше этого, навыки мышления идут редко.
Это всё здорово, но вот когда так называемый художник выплескивает на полотно свои абстрактные идеи, вот тут не по себе становится. Одно дело создание абстракции для решения задач, совсем же другое, когда абстракция создается ради самой абстракции или для подтверждения бредовых идей.
Примеры и области применения абстрактного мышления человеком
В процессе познания мира человек столкнулся с точными значениями, величинами, определениями.
Однако для того, чтобы составить полную картину того или иного явления, этого часто оказывается недостаточно.
Более того – часто приходится оперировать неизвестными или неточными данными, обобщать и систематизировать информацию по каким-либо отдельным свойствам, строить различные гипотезы и догадки.
Именно в таких случаях человек пользуется абстрактным мышлением.
Абстракция – что это в психологии?
Абстракция – это такой процесс познания, при котором происходит отвлечение от несущественных свойств, параметров, связей явлений или предметов с целью выявить их более важные обобщающие закономерности.
Иными словами, это обобщение, которое можно сделать над предметами или явлениями, процессами, отвлекаясь от некоторых их свойств.
С абстракцией связаны следующие понятия:
Об основных положениях и идеях гештальтпсихологии читайте здесь.
Понятие абстрактного мышления
Что такое абстрактное мышление простыми словами? Что значит абстрактно мыслить?
Прежде, чем подробно рассмотреть абстрактное мышление, следует учесть, что существуют следующие типы мышления:
При этом всю мыслительную деятельность человека можно представить в виде следующих умственных операций:
Говоря обычными словами, абстрактное мышление задействуется, когда человек не располагает какой-либо точной информацией, наглядными примерами, не контактирует с реальными предметами, но вынужден строить догадки и делать определенные выводы.
Такое мышление присуще ученым-теоретикам, математикам, экономистам, программистам.
Они усваивают информацию в виде числовых значений, кодов и преобразовывают ее при помощи формул и математических операций – то есть, работают с тем, что невозможно увидеть, осязать, услышать, воспринять с помощью органов чувств.
Формы
Существуют такие формы абстрактного мышления:
Умозаключение включает в себя три этапа – предпосылку (исходные суждения), вывод (логический мыслительный процесс над исходными суждениями) и заключение (сформированное окончательное суждение).
Примеры
Наглядный пример абстрактного мышления – математика.
При решении примеров мы оперируем только лишь цифрами, не имея представления, о каких предметах идет речь – имея ввиду только какую-то цифровую величину.
Тем не менее, совершая с этой величиной определенные действия и приходя к какому-то выводу.
Также абстрактное мышление проявляется при планировании. Человек ставит перед собой какие-либо цели, просчитывает собственные возможные шаги и ситуации, к которым они приведут.
В этом случае предполагаемая ситуация не существует в реальности, однако на основе умозаключений жизнь человека становится более предсказуемой, целенаправленной и организованной.
И все же абстрактное мышление не всегда приводит к верной оценке ситуации.
Например, женщина, которая получила негативный опыт общения с несколькими партнерами-мужчинами, может сделать суждение о том, что все представители мужского пола обладают определенными отрицательными качествами – ленью, грубостью, безразличием.
Как развить?
Применение ребенком абстрактного мышления начинается еще в дошкольном возрасте.
Как правило, это совпадает с тем временем, когда он начинает говорить.
Он сравнивает свои игрушки, находит отличия одного вида животных от других, учится писать и считать.
В школьный период уверенно мыслить абстрактно уже является необходимостью, так как появляются такие предметы, как математика, физика.
При этом, чем больше внимания было уделено развитию абстракции в детстве, тем более легко человек использует данный тип мышления и во взрослом возрасте.
Развитое абстрактное мышление дает человеку следующие преимущества:
Хотя большое значение имеет развитие абстрактного мышления в детстве, даже взрослому человеку возможно натренировать его, выполняя определенные упражнения.
Важно, чтобы они имели систематический характер – только постоянные занятия могут привести к ощутимым результатам.
Задачи
Задачи на абстрактное мышление:
Это достаточно тяжелое упражнение, поэтому лучше всего брать произведения с простым сюжетом.
Абстрагирование
Абстрагирование в психологии – это такой фокус внимания человека на ту или иную ситуацию, при котором он воспринимает ее из третьей позиции, то есть, не участвуя в ней, находясь над ней.
Абстрагирование задает общее направление, помогает правильнее сформулировать цель, отбросить несущественные факторы в ситуации, сконцентрировав внимание на более важных нюансах.
Недостаточное умение абстрагироваться от ситуации может привести к стрессу, чувству морального неудовлетворения, низкой самооценке и проблемам с коммуникацией.
Как научиться абстрагироваться?
Применяя не очень сложные психологические приемы, можно научиться абстрагироваться от того, что может мешать вам поставить собственные цели и достигнуть их:
От общества
Длительное пребывание в одном и том же обществе может негативно сказываться на человеке как на личности – постепенно в его жизнь входят социальные нормы этого общества, шаблоны мышления и восприятие тех или иных ситуаций. Это уменьшает гибкость поведения и реагирования в различных ситуациях.
Для того, чтобы абстрагироваться от общества, попробуйте дольше оставаться в одиночестве. При этом постарайтесь не вспоминать ваше окружение. Сконцентрируйте внимание на ваших собственных желаниях.
Выберите то занятие, которое вам больше по душе – прогулка по лесу, собирание грибов, рыбалка, медитация, чтение книги – такое, которое не требует присутствия рядом другого человека.
Смените род деятельности – новые впечатления заставят вас отвлечься от привычных шаблонов и переключиться на ваше собственное восприятие.
От человека
Некоторые люди, несмотря на то, что не воспринимаются нами как неприятные, могут значительно влиять на наше мировоззрение.
При этом на наши собственные идеи и желания могут накладываться желания этого человека.
Для того, чтобы абстрагироваться от какого-то определенного человека, можно на время поменять круг общения.
Желательно, чтобы новые знакомые симпатизировали вам, а общение доставляло приятные эмоции.
Проанализируйте, чем данный человек отличается от ваших новых знакомых и определите отличия. Также можно побыть в одиночестве, занимаясь своим любимым делом.
От неприятных людей
Бывает, что приходится находиться в обществе неприятных вам людей, избежать которого не удастся – например, на работе. При этом действия или поведение данных людей могут мешать сконцентрироваться на выполняемой задаче.
Для того, чтобы абстрагироваться от них, не пытайтесь исключить их из своего внимания, не воспринимайте их речь как то, что можно прекратить, а представьте, что это фоновый шум, который может исчезнуть сам собой.
Как, например, вы можете часто не слышать тиканья часов или не вдумываться в то, что происходит на экране постоянно включенного телевизора.
От ситуации
В затруднительных ситуациях ваши мысли могут путаться, а эмоции мешать принятию рассудительного хладнокровного решения.
В таких случаях нужно сосредоточиться на дыхании и сосчитать, например, до десяти.
Верная оценка может прийти только со временем.
Также попытайтесь представить себе, что вы находитесь вдали от данного места, или что ситуация происходит с другим человеком. Попробуйте откинуть незначительные отвлекающие детали, сконцентрировав внимание на самых важных вопросах.
Помочь научиться абстрагироваться может привычка планировать свои дела заранее, четкая постановка цели и следование ей.
В любой ситуации пытайтесь выделить важные и второстепенные моменты – возможно, для этого сначала придется проанализировать несколько случаев и выписать выводы в блокнот. Учитесь последовательности – не стремитесь выполнить несколько дел одновременно.
Абстрактное мышление используется нами во многих жизненных ситуациях, поэтому нельзя игнорировать умение быстро и правильно мыслить абстрактно.
Примите за должное, что мыслительные процессы сходны со спортивными физическими упражнениями – регулярные занятия помогут вам значительно развить ваши способности.
Об абстрактном мышлении человека в этом видео:
Что такое абстракция и как её понять
Термин может применяться к искусству, в основе которого лежит объект, фигура или ландшафт, где формы были упрощены или представлены схематично. Он также применяется к искусству, использующему такие формы, как геометрические фигуры или жестовые знаки, которые вообще не имеют источника во внешней визуальной реальности.
Некоторые художники этой «чистой» абстракции предпочитают такие термины, как «конкретное искусство» или «необъективное искусство», но на практике слово «абстракция» используется повсеместно, и различие между ними не всегда очевидно.
Абстрактное искусство часто рассматривается как несущее моральное измерение в том смысле, что оно выступает за такие добродетели, как порядок, чистота, простота и духовность. С начала 1900-х годов абстрактное искусство сформировало центральный поток современного искусства.
Василий Кадинский
Казаки
1910-1911
В начале 20-го века экспрессионистские работы включали в себя интенсивный цвет и не натуралистическую кисть, часто основанную на внутренних чувствах художника.
Кандинский видел в своих абстрактных картинах альтернативный путь к духовной реальности.
Хуан Гри
Бутылка рома и газеты
Кубизм всегда начинался с предмета из реальности (часто это объекты и фигуры), а затем его элементы разбивались на отдельные области или плоскости, показывая разные точки зрения в одно и то же время.
Кубизм непосредственно влиял на другие формы абстракции.
Соня Делоне
Электрические призмы
1913
Орфизм. Название происходит от музыканта Орфея из древнегреческих мифов, так как считалось, что живопись должна быть как музыка. Главные художники Роберт Делоне и Соня Делоне также использовали термин симултанизм для описания своих работ этого периода.
Казимир Малевич
Динамический супрематизм
1915 или 1916
Супрематизм. Малевич создал новую форму абстракции, чтобы освободить искусство от реального мира. Помимо «супрематического квадрата», Малевич разработал целый ряд форм, часто производимых в насыщенных цветах, плавающих на обычно белом фоне.
Моррис Луи
Альфа-Фи
1961
Невозможно догадаться, но на этой картине изображено поместье Морриса Луи. Пост-живописная абстракция. Эта форма абстракции больше, чем когда-либо, фокусировалась на основных элементах живописи: форме, цвете, фактуре, масштабе, композиции и была безжалостной, отвергая мистику и любые ссылки на внешний мир.
Виктор Вазарели
Баня
1964
Идея, выведенная древнегреческим философом Платоном, о том, что высшая форма красоты заключается не в формах реального мира, а в геометрии, также используется в обсуждении абстрактного искусства, как и идея абстрактного искусства, поскольку она не представляют материальный мир, можно увидеть, чтобы представлять духовный.
что такое абстрактные понятия? если можно, привести примеры
Это крация о твоей докладе, работе и. т. д. Можно сказать резюме. Вот вам пример:
Аннотация
Ученик в своей научном проекте изучил содержание и изменение системной передачи природных способностей от поколения к поколению. В работе приведены убедительные доказательства.
Предположение ученика: если человеку свойственны присущие способности, то в период передачи их следующему поколению, наблюдается определенная закономерность. С точки зрения генетики, философии, психологии всё это связано с медицинской наукой и генетической генеалогией.
Исследование проведено в три этапа. Первый этап — начальный, где с применением философской и психологической методической литературы выполнен всесторонний анализ.
Второй этап — методический эксперимент, третий этап — подведение итогов.
В проект включены результаты психолого-познавательной и генеалогической эксперимента, который был проведен с учениками школы в анонимном виде через схематический опрос. Исследование проведено по философско-познавательной теории. Автор изучив способности одного ученика к математике и составив генеалогическое древо его семьи, убедительно доказал свою точку зрения.
В работе дана также схема путей наследственной передачи способностей. В проекте приведены итоги эксперимента и даны предложения по данной теме.
Блочные схемы, составленные автором Туленбаевым Мейржаном, могут применятся на уроках биологии.
Причуды абстракций
Что такое абстракция?
Википедия определяет абстракцию и процесс абстрагирования следующим образом:
Абстра́кция (от лат. abstractio — отвлечение) — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.
В европейской философии и логике абстрагирование трактуется как способ поэтапного продуцирования понятий, которые образуют всё более общие модели — иерархию абстракций. Наиболее развитой системой абстракций обладает математика. Степень отвлечённости обсуждаемого понятия называется уровнем абстракции. В зависимости от целей и задач, можно рассуждать об одном и том же объекте на разных уровнях абстракции.
Гради Буч определяет понятие абстракции значительно проще, но смысл тот же:
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других объектов.
Зачем нужна абстракция?
Абстракции выполняют защитную функцию и помогают нам не сойти с ума от переизбытка информации. Представьте, как бы нам жилось, если при письме шариковой ручкой пришлось бы думать о том, что миллиарды молекул чернил взаимодействуют с молекулами бумаги, чтобы получилась буква. Другими словами, не тратя время на ненужные подробности, мы можем ухватить самую суть — взглянуть на проблему «сверху».
Если бы не фотография с высоты птичьего полета, можно ли было бы себе представить насколько правильно спроектирована Барселона? Кстати, про пример с шариковой ручкой, читать бы тоже не получилось — начертания одной и той же буквы на письме отличаются даже у одного человека.
Абстрактное мышление — это механизм, который позволяет нам перерабатывать и усваивать кучу новых сведений. Если бы не было абстракции, то единственный вариант для нас — это остаться очень примитивными существами.
В Бразилии живет племя небольшое племя индейцев Пираха. Представители этой народности обладают крайне скудным абстрактным мышлением. Их алфавит состоит из трех гласных и восьми согласных. У них нет слов, обозначающих цифры, вместо цифр у них два понятия — несколько и много. У них нет цветов — только понятия светлый и темный, времени и истории — они живут только сегодняшним днем и помнят только то. что помнит старейший из ныне живущих; нет — религии, ремесел, искусства. У них еще много чего нет в нашем привычном понимании. И это все потому, что не развито абстрактное мышление. Правда, справедливости ради, стоит отметить, что при этом они себя ощущают абсолютно счастливыми людьми!
Итак, абстрагирование нам нужно как способ познания и описания окружающего мира, для обмена информацией друг с другом. Абстракции позволяют провести декомпозицию предметной области на набор понятий и связей между ними.
На картинке изображен Legoland в Лондоне. Несмотря на то, что все предметы собраны из детского конструктора, мы без труда узнаем в них дома, окна, двери, городские кварталы, людей.
Барьеры и побочные эффекты абстракций
Чтобы понять ключевые свойства абстракций проведем аналогию с построением проекций на плоскость.
Предположим, что у нас есть три фигуры: шар, цилиндр и параллелепипед, при этом ось симметрии цилиндра, проходящая через центры окружностей в основании, параллельна какой-нибудь оси симметрии параллелепипеда. Очевидно, что можно выбрать две плоскости для построения проекций таким образом, что шар и цилиндр спроецируются в окружности, а цилиндр и параллелепипед — в прямоугольники.
Проекция в нашем примере иллюстрирует абстракцию объекта — геометрической фигуры. Что мы видим — на одной плоскости не отличишь проекции шара и цилиндра, а на другой — цилиндра и параллелепипеда. Этот эффект называется барьером абстракции. Абстракция представляет не весь объект целиком, а только лишь его существенный набор характеристик.Нужно быть готовым к тому, что некоторые очень непохожие друг на друга объекты, могут стать неразличимыми. Если это неудобно, то нужно выбирать другой набор абстракций.
С другой стороны, как мы видим из примера, цилиндр, может проецироваться и в окружность, и в прямоугольник — объекты с различными геометрическими свойствами, отличными от тех, что есть у цилиндра. Наличие у абстракции собственных свойств, отличных от свойств абстрагируемого объекта, называется побочным эффектом абстракции.
На самой первой картинке изображены две фигуры, собранные из щепок, так что при определенном освещении они отбрасывают «человеческие тени». Мне, например, кажется, что там один силуэт мужской, а другой — женский. Это тоже побочный эффект абстракций. Теперь мы можем классифицировать все фигуры по их тени.
Примеры абстракций
Сфера применения | Абстракция | Комментарий |
---|---|---|
Целые числа | Число из кольца Zp, где p = 2^разрядность (8, 16, 32, 64 бита) | Данная абстракция позволяет представить целые числа только из отрезка –p/2+1 до p/2. Побочный эффект – проблема переполнения. |
Вещественные числа | Числа с плавающей точкой | Вещественных чисел несчетное число, а чисел с плавающей точкой — всего лишь конечное. Это значит, что несчетное количество вещественных чисел представлены одним числом с плавающей точкой. Побочный эффект – ошибка округления, из-за который два числа нельзя сравнивать с помощью операции сравнения, а лишь по модулю некоторого маленького epsilon |a-b| a == b, или a/b*1000 может сильно отличаться от a*1000/b. Появилась даже целая дисциплина в математике – численные методы, которая изучает как организовать вычисления с плавающей точкой так, чтобы результаты не сильно отличались от вычислений с вещественными числами. |
Деньги | Числа с плавающей точкой | Погрешность округления чисел с плавающей точкой делает, если не невозможным их использование для финансовых операций, то, по крайней мере, сильно усложняет жизнь. В любом случае, я бы сначала подумал в сторону написания отдельного класса для денежных единиц. |
Изображение | Машинная графика | Машинная графика развивается семимильными шагами, чтобы сделать изображение на экране компьютера все более реалистичным. |
Программное обеспечение | Процедура | Процедура является базовым элементом декомпозиции в процедурном программировании. Побочный эффект — процедура жестко заданная последовательность команд, которую невозможно изменить без переписывания самой процедуры. |
Программное обеспечение | Класс | О классах будем говорить ниже. |
Предметная область | Абстракция сущности и связи между сущностями | Побочный эффект — отражает представление, заблуждения, предубеждения и т.д. о предметной области конкретного субъекта. |
Бизнес-логика | Процедура | Как уже говорилось выше — побочный эффект процедуры — жесткая последовательность команд. Бизнес-логика же подвержена изменениям, как правило содержит много исключений, о которых пользователи обычно забывают рассказать. Попытка представить бизнес-операцию в виде процедуры часто делает терпит неудачу. |
Программное обеспечение | Поток для распараллеливания операций | Многопоточное программирование получилось настолько сложным для восприятия, что немного людей в нем разбирается. |
Квадрат — это прямоугольник, у которого все стороны равны. | Класс квадрат нельзя наследовать от прямоугольника. | Классы — это абстракции. У них есть свои собственные свойства, которые отличаются от математических объектов и которые делают невозможным наследование. |
Классы
Гради Буч так определяет ООП:
Объектно-ориентированное программирование — это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
В этом определении самый важный момент — это иерархия наследования. Потому что именно наследование отличает ООП от всех других методологий.
Два основных принципа человеческого мышления — это группировка и обобщение. Классы — это, по сути, абстракции механизмов группировки и обобщения человеческого мозга. Естественно, со своими побочными эффектами и барьером. При этом группировка достигается тем, что похожим объектам сопоставляется один класс, а обобщение в ООП достигается за счет иерархии классов. Иерархии классов реализуются через полиморфизм.
ООП, кстати, интересно еще хотя бы и тем, что это, пожалуй, последняя парадигма программирования на данный момент, которая поддерживается на аппаратном уровне.
Главный побочный эффект классов — они отражают опыт, стереотипы, предубеждения того программиста, который их написал. Отсюда следует, что разные люди получат разный набор классов для одной и той же задачи. Более того, один и тот же человек, решая одну и туже задачу, но в разные моменты времени, получит разный набор классов, просто потому что его жизненный опыт меняется.
Второй побочный эффект, который стоит отметить — чужой код всегда менее понятный, чем свой собственный.
Разберемся почему так происходит. Когда человек пишет код, для него естественнее двигаться снизу вверх — от более низкоуровневых компонент к более высокоуровневым. Сначала написали один класс, потом второй, который зависит от первого, затем третий, который зависти от первого и второго, четвертый — от третьего и т.д.
Когда же человек пытается понять чужой код, он как раз двигается наоборот — сверху вниз. То есть сначала понимает общую суть, затем разбивает на компоненты, потом пытается понять суть каждого компонента и т.д. Часто эти движения мысли снизу вверх и сверху вниз у разных людей не совпадают. Естественно, что изучающему чужой код было бы легче, если разбиение кода на компоненты совпадало с его собственными убеждениями, как надо делать. Если это не так, придется затрачивать определенные усилия, чтобы понять ход мыслей разработчика. Поэтому, когда кто-то говорит, что здесь «полный хардкод», но если я перепишу, то будет все проще и понятнее. Это всегда 100% правда… Но только для него, для остальных ценность переписывания уже не так очевидна.
Кстати, если ничего не предпринимать специально, то при разработке снизу вверх, код становится сильно связанным между собой, то есть не повторно используемым. Чтобы побороть этот эффект надо следовать принципу инверсии зависимостей (The Dependency Inversion Principle).
Проиллюстрируем как проявляется описанный побочный эффект на простом примере. Многие жители крупных городов закупаются в крупных супермаркетах. Предположим, что жена отправляет мужа за покупками и, чтобы он не забыл, как обычно, чего-нибудь, составляет список «для тех кто в танке».
Постараемся проследить ход ее мыслей:
— Так чего я сегодня буду готовить на ужин?
— Надо приготовить чего-нибудь вкусненькое, чтобы побаловать ребенка.
— Так, нужна будет мука, молоко.
— Кажется в миксере сели батарейки.
— Стоп! Ребенку нужны витамины. Морковь. Буду делать морковный сок. и мандарины. Скоро же Новый год!
— А хлеб дома есть? Нет, кажется, нет.Значит, надо купить!
— Еще надо купить масло.
— Забыла про ребенка — витамины. Купить яблоки.
— Чего-то ручка плохо пишет. Наверное скоро кончатся чернила. Надо купить!
— Так, ребенку надо купить сока.
— А еще игрушку — пусть порадуется.
— Картошка у нас есть на борщ? На борщ хватит, но на неделю нет. Значит тоже надо купить.
— Чуть не забыла учительница просила принести две тетради.
— К борщу нужна сметана.
— Вроде сахар кончился.
— Ребенок любит виноград.
— И еще надо купить бутилированной воды.
Когда приходит муж в магазин то, что он обнаруживает? Указанные в списке товары оказываются в разных частях магазина. Обычно список длинный, поэтому запомнить что-либо, что было уже куплено достаточно трудно. На это накладывается, что какие-то отделы временно закрыты — идет выгрузка товаров, какого-то товара нет в продаже, плюс толчея, зимняя одежда. Более опытные товарищи ходят с карандашом или ручкой с очень озабоченным видом и постоянно смотрят в свой список. Но, в итоге, все равно, что-нибудь да забудешь купить. По своему опыту могу сказать, что это «что-нибудь» окажется самым важным, из-за чего вообще и стоило ехать в магазин.
Еще одно важное наблюдение — невозможно по самим абстракциям определить насколько удачными они получились. Это можно сделать, только если мы попытаемся их использовать на практике. И тут уж выясняется, что одни абстракции лучше подходят для задачи, а другие — хуже. А если еще немного изменить исходные условия, то и прежний «хороший» набор абстракций уже может не работать. Например, второй список покупок из примера перестанет работать, если прийти с ним в другой магазин с иным порядком выкладки товаров. Он станет ничем не лучше, чем первый.
Отсюда вывод — невозможно придумать набор классов, который подойдет на все случаи жизни. В статье The Open-Closed Principle это называется стратегическая замкнутость.
Естественный вопрос, а как сразу создавать хорошие абстракции. Увы, но на этот счет нет точного ответа. Зато со временем выработался набор практик, который говорит, как надо поступать, и обещает, что в этом случае будет хороший результат. К таким практикам относится рефакторинг, стандарты кодирования, code review, объектная гимнастика и т.д. Цель данных практик — направить ход мыслей группы разработчиков в одном направлении, тогда шансов, что чужой код будет понятнее, станет больше. Отношение к каждой из практик у отдельно взятого человека зависит лишь от приобретенного им опыта использования практики. Часто слова «Это не работает» надо интерпретировать как «Я пробовал — у меня не получилось». Нет никаких объективных аргументов «ЗА», равно как и «ПРОТИВ».
Так зачем нужно тогда ООП?
Проведем параллели между естественным языком и ООП
естественный язык | ООП |
---|---|
Слово | класс |
Правила | Синтаксис |
Жанр | Архитектура |
литературные приемы | паттерны |
ООП — это инструмент, который создавался с прицелом на большие по размеру программы. Но, это всего лишь один из инструментов, который потребуется, чтобы написать крупный проект.
Меня всегда удивляют, статьи в стиле Почему я люблю X или Почему я не люблю X. Все прекрасно понимают, что X — инструмент. Ведь нет же таких статей про лопату. Хотя, кто знает, ведь ООП существует несколько десятилетий, а лопата несколько тысяч, и быть может где-нибудь в в каменном веке шли жестокие холивары на тему, что лучше лопатка мамонта или мотыга из камня?