Абстракция пример: Понятие, виды и примеры абстракции. Абстрактное мышление — Новости Оптом
Понятие, виды и примеры абстракции. Абстрактное мышление — Новости Оптом
Содержание статьи:
Философия в представлении многих людей является наукой, которой свойственно переливание из пустого в порожнее, как говорится в народной поговорке. То есть в глазах обывателей, философы только и делают, что рассуждают, не принося никакой пользы. Такое представление о науке сложилось во многом по причине ее непонятности, из-за использования сложных специфических терминов и долгих, однообразных описаний их значений.
Между тем многие философские понятия вполне актуальны в обычной жизни. Например, абстракция. Это слово можно услышать очень часто. Причем в разговорах люди применяют его для обозначения отвлеченности или же «туманности» того, о чем идет речь. Но чем является абстракция с научной точки зрения?
Что это такое? Определение
Вам будет интересно:Философия возраста. Семилетние циклы жизни человека
Название этого термина происходит от латинского слова abstractio, которое переводится на русский язык, как «отвлечение». Именно в этом и заключается суть данного философского понятия.
Абстракция есть не что иное, как отвлечение, мысленный отход в сторону от рассматриваемого, изучаемого или же обсуждаемого предмета, проводимый с целью определения и выделения наиболее важных, существенных моментов, признаков, элементов путем обобщения.
Вам будет интересно:Абсолютный дух: понятие, теория
Говоря простым языком, это способ мысленного устранения ненужного, помогающий акцентировать внимание на главном. При этом важность может иметь как обобщенное, так и детальное.
Также данное понятие определяется как обобщение, достигнутое путем абстрагирования.
Какой может быть абстракция? Примеры в жизни
Как правило, категория воспринимается лишь как часть каких-либо пространных диалогов. На самом же деле каждый человек прибегает к ней ежедневно и не по одному разу.
Самым простым примером является ход мыслей, возникающий при взгляде на небо. Каждый современный человек знает о том, что над его головой находится атмосфера, представляющая собой несколько чередующихся слоев. Известно всем и о том, что состоит она из углекислого газа, кислорода и азота.
Но что возникает в голове при взгляде вверх? Просто слово «небо». Это пример естественной абстракции, не требующей специальных усилий. При этом в мозгу происходит отвлечение от известных смотрящему в небо человеку, но в данный момент времени ненужных подробностей и деталей. То есть нужный элемент определяется и вычленяется путем обобщения.
Вам будет интересно:Сознание, его происхождение и сущность. Проблема сознания в истории философии
Если же при взгляде вверх возникает в мыслях слово «тучи», то это уже более сложная абстракция. В ней задействуется не только обобщение, но и выделение конкретного, важного элемента. Однако она тоже является естественной, не требующей специального усилия.
Примеры абстракции сознательной люди в повседневной жизни тоже видят достаточно часто. В любом разговоре, в котором для объяснения чего-либо рассказчик прибегает к отвлеченным аналогиям, задействована эта категория. То есть если человек приводит в пример случай из жизни, поясняя им то, что хочет сказать, он прибегает к абстракции и делает это сознательно.
Чем является абстрагирование? Определение
Примеры абстракции демонстрируют наличие определенных приемов в общении и, разумеется, образа мыслей. Совокупность этого и называется в философии абстрагированием. У этого понятия имеются два основных значения, которые являются родственными по смыслу, перекликаются между собой. Первое определяет данное понятие как сам процесс отвлечения или же способ, а второе – как метод.
То есть абстрагирование – это использование способа отвлечения в процессе познания или объяснения, рассуждения.
Отвлечение происходит от всего несущественного, не имеющего значения в конкретный отрезок времени, от лишнего, мешающего правильно понять суть. Результатом этого процесса становится формирование отвлеченного понятия.
Абстрактное и конкретное
Примеры абстракции, как осмысленной, так и естественной, демонстрируют достижение некоего результата. Именно его и называют в философии отвлеченным понятием.
Это может быть почти все, что угодно, лишенное четкой детализации, например цвет, свет, кривизна, уродство или красота. То есть если озвучить лишь сам результат абстрагирования, вне контекста, например слово «небо», то понимание его у каждого человека будет своим.
Иными словами, это понятие несет в себе смысл, имеет значение, однако не передает никаких точных характеризующих деталей, конкретизирующих и сужающих его. Именно наличием точных характеристик и отличаются абстрактные и конкретные понятия. То есть если при получении информации ее можно воспринять совершенно по-разному, то она абстрактна. Конкретное понятие не допускает различных вариантов толкования, оно предельно точно.
Виды абстракции
Как это ни парадоксально, но этой категории присущи как четкая классификация по цели, так и весьма обширный и размытый перечень условных типов.
В соответствии с целью абстракция бывает:
- содержательной;
- формальной.
Содержательная форма подразумевает выделение частного через общее. То есть, вспоминая упомянутый выше пример, если при взгляде на небо в голову приходит слово «туча», то это содержательная абстракция.
Формальная же выделяет те элементы, которые сами по себе не существуют, например цвет. Формальная абстракция является основой в усвоении и передаче описаний внешних свойств, а также служит базой для теоретических размышлений.
К основным видам или же типам этой категории относятся:
- чувственная примитивная;
- обобщающая;
- идеализирующая;
- изолирующая;
- конструктивизирующая.
Отдельно учеными выделяется так называемая абстракция актуальной бесконечности. Выделяется она потому, что примеры абстракции основных типов можно найти в повседневной жизни, а вот наблюдать этот вид невозможно. То есть данная философская категория – это полностью теоретическое понятие. В чем его суть? В том, чтобы мысленно отвлечься от аксиомы о том, что нельзя зафиксировать каждый из компонентов бесконечного множества. И тогда это множество станет конечным. Эта философская теория хоть и напоминает утопию, весьма серьезно рассматривается математиками. Вполне возможно, что в будущем она еще окажется востребованной на практике, например в процессе освоения космического пространства.
Что понимается под абстрактным мышлением?
Нередко приходится слышать, как о ком-то говорят, что он мыслит абстрактными категориями. При этом понятно, что речь идет о человеке, не отличающимся приземленностью и ординарностью, о том, кто склонен размышлять и рассуждать без какой-либо четкости и конкретики. Но что подразумевается под этим в философии?
Абстрактное мышление, это, простыми словами говоря, не что иное, как разновидность познавательной деятельности. То есть это тип мозговой деятельности человека, для которого свойственны образование специфических отвлеченных понятий и дальнейшее оперирование ими.
То есть индивиду с таким типом мышления присуща абстракция картины восприятия окружающего мира, какого-либо явления или же понятия. В рассуждениях и диалогах он отходит от привычной системы правил и аксиом. Это позволяет доносить или же принимать информацию, идеи или мысли без излишней нагрузки, использовать символы и образы. Однако при этом утрачивается точность и, разумеется, для верного понимания мысли необходим контекст либо общеизвестный символ.
В чем польза отвлеченных понятий и мышления?
Общее понятие абстракции, принятое в науке, совершенно не раскрывает практической пользы этого явления. Между тем оно необходимо для развития мыслительных возможностей человека. Например, именно с помощью абстракций и их сопоставлений дети начинают познавать мир.
Отвлеченные понятия – неотъемлемая часть мыслительной деятельности людей. Они способствуют раскрытию связей и отношений между явлениями, предметами, элементами, понятиями. С помощью абстрактного мышления люди синтезируют имеющиеся представления и формируют новые типы взаимосвязей и соотношений между рассматриваемыми предметами, тем самым развивая собственное сознание.
То есть с помощью отвлечения происходит прогресс познавательной, мыслительной деятельности человека.
Помимо этого, абстракции неразрывно связаны с языковыми навыками. Обучение речи малышей происходит с помощью этого типа мышления.
В искусстве
Не только философии, но и искусству свойственно такое понятие, как «абстракция». Картины многих известных художников написаны в этом жанре.
Абстракционизм является направлением в искусстве, которое характеризует отказ от передачи чего-либо в виде реалистичного отображения. Это в первую очередь касается форм изображений в живописи и скульптуре. Однако абстрактным может быть любое произведение, например рассказ, стихотворение, театральные декорации, костюмы и многое другое.
Основоположником этого жанра принято считать российского живописца Василия Кандинского, а первым абстрактным произведением – его акварельную работу «Без названия», написанную в 1910 году.
Источник
Абстракция искусство и мышление | Журнал Ярмарки Мастеров
При абстрактном мышлении человек думает приблизительно. Здесь нет ни конкретики, ни деталей. Используются обобщенные слова: «жизнь», «мир», «в общем», «по большому счету».
Абстрактное мышление полезно в тех ситуациях, когда человек не может найти выход (интеллектуальный тупик). В силу отсутствия информации или знаний он вынужден рассуждать, догадываться. Если абстрагироваться от ситуации с ее конкретными деталями, тогда можно рассмотреть в ней то, что не замечалось до этого.
Абстрактное мышление отличается от линейного тем, что человек не думает причинно-следственными связами. Он абстрагируется от деталей и начинает рассуждать в общем. Самое примечательное здесь заключается в том, что только после общего видения дел человек может перейти к деталям, которые важны в ситуации. А когда детали не помогают в решении проблемы, тогда возникает необходимость абстрагироваться, выйти за пределы происходящего.
Абстрактное мышление позволяет находить новое, творить, создавать. Если бы человек был лишен подобного мышления, тогда не смог бы создать колесо, автомобиль, самолет и прочие технологии, которыми теперь многие пользуются. Умение быстро перестраиваться и адаптироваться в неизменных обстоятельствах происходит благодаря абстрактному мышлению.
Что такое абстракция?
Википедия определяет абстракцию и процесс абстрагирования следующим образом:
Абстра́кция (от лат. abstractio — отвлечение) — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.
В европейской философии и логике абстрагирование трактуется как способ поэтапного продуцирования понятий, которые образуют всё более общие модели — иерархию абстракций. Наиболее развитой системой абстракций обладает математика. Степень отвлечённости обсуждаемого понятия называется уровнем абстракции. В зависимости от целей и задач, можно рассуждать об одном и том же объекте на разных уровнях абстракции.
Гради Буч определяет понятие абстракции значительно проще, но смысл тот же:
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других объектов.
Зачем нужна абстракция?
Абстракции выполняют защитную функцию и помогают нам не сойти с ума от переизбытка информации. Представьте, как бы нам жилось, если при письме шариковой ручкой пришлось бы думать о том, что миллиарды молекул чернил взаимодействуют с молекулами бумаги, чтобы получилась буква. Другими словами, не тратя время на ненужные подробности, мы можем ухватить самую суть — взглянуть на проблему «сверху».
Если бы не фотография с высоты птичьего полета, можно ли было бы себе представить насколько правильно спроектирована Барселона? Кстати, про пример с шариковой ручкой, читать бы тоже не получилось — начертания одной и той же буквы на письме отличаются даже у одного человека.
Абстрактное мышление — это механизм, который позволяет нам перерабатывать и усваивать кучу новых сведений. Если бы не было абстракции, то единственный вариант для нас — это остаться очень примитивными существами.
В Бразилии живет племя небольшое племя индейцев Пираха. Представители этой народности обладают крайне скудным абстрактным мышлением. Их алфавит состоит из трех гласных и восьми согласных. У них нет слов, обозначающих цифры, вместо цифр у них два понятия — несколько и много. У них нет цветов — только понятия светлый и темный, времени и истории — они живут только сегодняшним днем и помнят только то. что помнит старейший из ныне живущих; нет — религии, ремесел, искусства. У них еще много чего нет в нашем привычном понимании. И это все потому, что не развито абстрактное мышление. Правда, справедливости ради, стоит отметить, что при этом они себя ощущают абсолютно счастливыми людьми!
Итак, абстрагирование нам нужно как способ познания и описания окружающего мира, для обмена информацией друг с другом. Абстракции позволяют провести декомпозицию предметной области на набор понятий и связей между ними.
Если возьмете фотоапарат в руки—это реальность, если вы попытаетесь увидеть свое в абстрактных картинах—это ваша индивилуальность! Пытайтесь,дерзайте и заказывайте абстракцию! это изменит Ваш мир !
Причуды абстракций / Блог компании LLC Tik-Tok Coach / Хабр
За годы преподавания и коммерческой разработки я повстречал много студентов и разработчиков, которые не до конца понимают смысл слова абстракция. Из многочисленных попыток разъяснить смысл этого термина получилась настоящая статья. Что Вы найдете под катом:
- Определение понятия абстракции и объяснение откуда оно взялось в ООП.
- Объяснение на простых примерах, что такое барьер абстракции, побочный эффект абстракции.
- Как получается хардкод.
Что такое абстракция?
Википедия определяет абстракцию и процесс абстрагирования следующим образом:
Абстра́кция (от лат. abstractio — отвлечение) — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.
В европейской философии и логике абстрагирование трактуется как способ поэтапного продуцирования понятий, которые образуют всё более общие модели — иерархию абстракций. Наиболее развитой системой абстракций обладает математика. Степень отвлечённости обсуждаемого понятия называется уровнем абстракции. В зависимости от целей и задач, можно рассуждать об одном и том же объекте на разных уровнях абстракции.
Гради Буч определяет понятие абстракции значительно проще, но смысл тот же:
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других объектов.
Зачем нужна абстракция?
Абстракции выполняют защитную функцию и помогают нам не сойти с ума от переизбытка информации. Представьте, как бы нам жилось, если при письме шариковой ручкой пришлось бы думать о том, что миллиарды молекул чернил взаимодействуют с молекулами бумаги, чтобы получилась буква. Другими словами, не тратя время на ненужные подробности, мы можем ухватить самую суть — взглянуть на проблему «сверху».
Если бы не фотография с высоты птичьего полета, можно ли было бы себе представить насколько правильно спроектирована Барселона? Кстати, про пример с шариковой ручкой, читать бы тоже не получилось — начертания одной и той же буквы на письме отличаются даже у одного человека.
Абстрактное мышление — это механизм, который позволяет нам перерабатывать и усваивать кучу новых сведений. Если бы не было абстракции, то единственный вариант для нас — это остаться очень примитивными существами.
В Бразилии живет племя небольшое племя индейцев Пираха. Представители этой народности обладают крайне скудным абстрактным мышлением. Их алфавит состоит из трех гласных и восьми согласных. У них нет слов, обозначающих цифры, вместо цифр у них два понятия — несколько и много. У них нет цветов — только понятия светлый и темный, времени и истории — они живут только сегодняшним днем и помнят только то. что помнит старейший из ныне живущих; нет — религии, ремесел, искусства. У них еще много чего нет в нашем привычном понимании. И это все потому, что не развито абстрактное мышление. Правда, справедливости ради, стоит отметить, что при этом они себя ощущают абсолютно счастливыми людьми!
Итак, абстрагирование нам нужно как способ познания и описания окружающего мира, для обмена информацией друг с другом. Абстракции позволяют провести декомпозицию предметной области на набор понятий и связей между ними.
На картинке изображен Legoland в Лондоне. Несмотря на то, что все предметы собраны из детского конструктора, мы без труда узнаем в них дома, окна, двери, городские кварталы, людей.
Барьеры и побочные эффекты абстракций
Чтобы понять ключевые свойства абстракций проведем аналогию с построением проекций на плоскость.
Предположим, что у нас есть три фигуры: шар, цилиндр и параллелепипед, при этом ось симметрии цилиндра, проходящая через центры окружностей в основании, параллельна какой-нибудь оси симметрии параллелепипеда. Очевидно, что можно выбрать две плоскости для построения проекций таким образом, что шар и цилиндр спроецируются в окружности, а цилиндр и параллелепипед — в прямоугольники.
Проекция в нашем примере иллюстрирует абстракцию объекта — геометрической фигуры. Что мы видим — на одной плоскости не отличишь проекции шара и цилиндра, а на другой — цилиндра и параллелепипеда. Этот эффект называется барьером абстракции. Абстракция представляет не весь объект целиком, а только лишь его существенный набор характеристик.Нужно быть готовым к тому, что некоторые очень непохожие друг на друга объекты, могут стать неразличимыми. Если это неудобно, то нужно выбирать другой набор абстракций.
С другой стороны, как мы видим из примера, цилиндр, может проецироваться и в окружность, и в прямоугольник — объекты с различными геометрическими свойствами, отличными от тех, что есть у цилиндра. Наличие у абстракции собственных свойств, отличных от свойств абстрагируемого объекта, называется побочным эффектом абстракции.
На самой первой картинке изображены две фигуры, собранные из щепок, так что при определенном освещении они отбрасывают «человеческие тени». Мне, например, кажется, что там один силуэт мужской, а другой — женский. Это тоже побочный эффект абстракций. Теперь мы можем классифицировать все фигуры по их тени.
Примеры абстракций
Сфера применения | Абстракция | Комментарий |
---|---|---|
Целые числа | Число из кольца Zp, где p = 2^разрядность (8, 16, 32, 64 бита) | Данная абстракция позволяет представить целые числа только из отрезка –p/2+1 до p/2. Побочный эффект – проблема переполнения. |
Вещественные числа | Числа с плавающей точкой | Вещественных чисел несчетное число, а чисел с плавающей точкой — всего лишь конечное. Это значит, что несчетное количество вещественных чисел представлены одним числом с плавающей точкой. Побочный эффект – ошибка округления, из-за который два числа нельзя сравнивать с помощью операции сравнения, а лишь по модулю некоторого маленького epsilon |a-b| < epsilon => a == b, или a/b*1000 может сильно отличаться от a*1000/b. Появилась даже целая дисциплина в математике – численные методы, которая изучает как организовать вычисления с плавающей точкой так, чтобы результаты не сильно отличались от вычислений с вещественными числами. |
Деньги | Числа с плавающей точкой | Погрешность округления чисел с плавающей точкой делает, если не невозможным их использование для финансовых операций, то, по крайней мере, сильно усложняет жизнь. В любом случае, я бы сначала подумал в сторону написания отдельного класса для денежных единиц. |
Изображение | Машинная графика | Машинная графика развивается семимильными шагами, чтобы сделать изображение на экране компьютера все более реалистичным. |
Программное обеспечение | Процедура | Процедура является базовым элементом декомпозиции в процедурном программировании. Побочный эффект — процедура жестко заданная последовательность команд, которую невозможно изменить без переписывания самой процедуры. |
Программное обеспечение | Класс | О классах будем говорить ниже. |
Предметная область | Абстракция сущности и связи между сущностями | Побочный эффект — отражает представление, заблуждения, предубеждения и т.д. о предметной области конкретного субъекта. |
Бизнес-логика | Процедура | Как уже говорилось выше — побочный эффект процедуры — жесткая последовательность команд. Бизнес-логика же подвержена изменениям, как правило содержит много исключений, о которых пользователи обычно забывают рассказать. Попытка представить бизнес-операцию в виде процедуры часто делает терпит неудачу. |
Программное обеспечение | Поток для распараллеливания операций | Многопоточное программирование получилось настолько сложным для восприятия, что немного людей в нем разбирается. |
Квадрат — это прямоугольник, у которого все стороны равны. | Класс квадрат нельзя наследовать от прямоугольника. | Классы — это абстракции. У них есть свои собственные свойства, которые отличаются от математических объектов и которые делают невозможным наследование. |
Классы
Гради Буч так определяет ООП:
Объектно-ориентированное программирование — это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
В этом определении самый важный момент — это иерархия наследования. Потому что именно наследование отличает ООП от всех других методологий.
Два основных принципа человеческого мышления — это группировка и обобщение. Классы — это, по сути, абстракции механизмов группировки и обобщения человеческого мозга. Естественно, со своими побочными эффектами и барьером. При этом группировка достигается тем, что похожим объектам сопоставляется один класс, а обобщение в ООП достигается за счет иерархии классов. Иерархии классов реализуются через полиморфизм.
ООП, кстати, интересно еще хотя бы и тем, что это, пожалуй, последняя парадигма программирования на данный момент, которая поддерживается на аппаратном уровне.
Главный побочный эффект классов — они отражают опыт, стереотипы, предубеждения того программиста, который их написал. Отсюда следует, что разные люди получат разный набор классов для одной и той же задачи. Более того, один и тот же человек, решая одну и туже задачу, но в разные моменты времени, получит разный набор классов, просто потому что его жизненный опыт меняется.
Второй побочный эффект, который стоит отметить — чужой код всегда менее понятный, чем свой собственный.
Разберемся почему так происходит. Когда человек пишет код, для него естественнее двигаться снизу вверх — от более низкоуровневых компонент к более высокоуровневым. Сначала написали один класс, потом второй, который зависит от первого, затем третий, который зависти от первого и второго, четвертый — от третьего и т.д.
Когда же человек пытается понять чужой код, он как раз двигается наоборот — сверху вниз. То есть сначала понимает общую суть, затем разбивает на компоненты, потом пытается понять суть каждого компонента и т.д. Часто эти движения мысли снизу вверх и сверху вниз у разных людей не совпадают. Естественно, что изучающему чужой код было бы легче, если разбиение кода на компоненты совпадало с его собственными убеждениями, как надо делать. Если это не так, придется затрачивать определенные усилия, чтобы понять ход мыслей разработчика. Поэтому, когда кто-то говорит, что здесь «полный хардкод», но если я перепишу, то будет все проще и понятнее. Это всегда 100% правда… Но только для него, для остальных ценность переписывания уже не так очевидна.
Кстати, если ничего не предпринимать специально, то при разработке снизу вверх, код становится сильно связанным между собой, то есть не повторно используемым. Чтобы побороть этот эффект надо следовать принципу инверсии зависимостей (The Dependency Inversion Principle).
Проиллюстрируем как проявляется описанный побочный эффект на простом примере. Многие жители крупных городов закупаются в крупных супермаркетах. Предположим, что жена отправляет мужа за покупками и, чтобы он не забыл, как обычно, чего-нибудь, составляет список «для тех кто в танке».
Постараемся проследить ход ее мыслей:
— Так чего я сегодня буду готовить на ужин?
— Надо приготовить чего-нибудь вкусненькое, чтобы побаловать ребенка.
— Так, нужна будет мука, молоко.
— Кажется в миксере сели батарейки.
— Стоп! Ребенку нужны витамины. Морковь. Буду делать морковный сок. и мандарины. Скоро же Новый год!
— А хлеб дома есть? Нет, кажется, нет.Значит, надо купить!
— Еще надо купить масло.
— Забыла про ребенка — витамины. Купить яблоки.
— Чего-то ручка плохо пишет. Наверное скоро кончатся чернила. Надо купить!
— Так, ребенку надо купить сока.
— А еще игрушку — пусть порадуется.
— Картошка у нас есть на борщ? На борщ хватит, но на неделю нет. Значит тоже надо купить.
— Чуть не забыла учительница просила принести две тетради.
— К борщу нужна сметана.
— Вроде сахар кончился.
— Ребенок любит виноград.
— И еще надо купить бутилированной воды.
В итоге получаем следующий список:
- мука
- молоко
- батарейки
- морковь
- мандарины
- хлеб
- масло
- яблоки
- ручка
- сок
- игрушка
- картофель
- тетради
- сметана
- сахар
- виноград
- вода
Когда приходит муж в магазин то, что он обнаруживает? Указанные в списке товары оказываются в разных частях магазина. Обычно список длинный, поэтому запомнить что-либо, что было уже куплено достаточно трудно. На это накладывается, что какие-то отделы временно закрыты — идет выгрузка товаров, какого-то товара нет в продаже, плюс толчея, зимняя одежда. Более опытные товарищи ходят с карандашом или ручкой с очень озабоченным видом и постоянно смотрят в свой список. Но, в итоге, все равно, что-нибудь да забудешь купить. По своему опыту могу сказать, что это «что-нибудь» окажется самым важным, из-за чего вообще и стоило ехать в магазин.
Какой список был бы удобен мужу? Тот, в котором все товары сгруппированы по отделам, отдельные группы идут в очередности, соответствующей порядку обхода магазина. Например, для магазина, в который хожу я было бы удобно сгруппировать товары следующим образом:
- Батарейки
- Детские тетради
- Ручка
- Вода
- Сок
- Сахар
- Морковь
- Апельсины
- Яблоки
- Виноград
- Картофель
- Масло
- Хлеб
- Молоко
- Сметана
- Мука
- Детская игрушка
Еще одно важное наблюдение — невозможно по самим абстракциям определить насколько удачными они получились. Это можно сделать, только если мы попытаемся их использовать на практике. И тут уж выясняется, что одни абстракции лучше подходят для задачи, а другие — хуже. А если еще немного изменить исходные условия, то и прежний «хороший» набор абстракций уже может не работать. Например, второй список покупок из примера перестанет работать, если прийти с ним в другой магазин с иным порядком выкладки товаров. Он станет ничем не лучше, чем первый.
Отсюда вывод — невозможно придумать набор классов, который подойдет на все случаи жизни. В статье The Open-Closed Principle это называется стратегическая замкнутость.
Естественный вопрос, а как сразу создавать хорошие абстракции. Увы, но на этот счет нет точного ответа. Зато со временем выработался набор практик, который говорит, как надо поступать, и обещает, что в этом случае будет хороший результат. К таким практикам относится рефакторинг, стандарты кодирования, code review, объектная гимнастика и т.д. Цель данных практик — направить ход мыслей группы разработчиков в одном направлении, тогда шансов, что чужой код будет понятнее, станет больше. Отношение к каждой из практик у отдельно взятого человека зависит лишь от приобретенного им опыта использования практики. Часто слова «Это не работает» надо интерпретировать как «Я пробовал — у меня не получилось». Нет никаких объективных аргументов «ЗА», равно как и «ПРОТИВ».
Так зачем нужно тогда ООП?
Проведем параллели между естественным языком и ООП
естественный язык | ООП |
---|---|
Слово | класс |
Правила | Синтаксис |
Жанр | Архитектура |
литературные приемы | паттерны |
Любые свои мысли человек выражает словами естественного языка. Есть два типа задач:
- Для решения надо хорошо знать сам язык. Например, чтобы написать Войну и Мир.
- Сложность не зависит от языка. Неважно сколько и какие языки Вы знаете. Это никак не помогает при решении. Например, теорема Ферма.
ООП — это инструмент, который создавался с прицелом на большие по размеру программы. Но, это всего лишь один из инструментов, который потребуется, чтобы написать крупный проект.
Меня всегда удивляют, статьи в стиле Почему я люблю X или Почему я не люблю X. Все прекрасно понимают, что X — инструмент. Ведь нет же таких статей про лопату. Хотя, кто знает, ведь ООП существует несколько десятилетий, а лопата несколько тысяч, и быть может где-нибудь в в каменном веке шли жестокие холивары на тему, что лучше лопатка мамонта или мотыга из камня?
Литература по теме
1. Гради Буч Объектно-ориентированный анализ и проектирование с примерами приложений на С++
Данная книга в представлении не нуждается. Одна из наиболее цитируемых книг по программированию.
2. Барбара Минто Принципы Пирамиды Минто.
Работая консультантом McKinsey Барбара Минто создала свой собственный метод написания аналитических документов, основанный.на том, как человек воспринимает информацию. В книге достаточно много места уделено принципам группировки и обобщения.
3. Роберт Мартин (Uncle Bob)
Роберт Мартин написал серию статей и книг про принципы ООП. Наиболее известные из них S.O.L.I..D. На русском языке вышла книжка Роберт Мартин Быстрая разработка программ. Принципы, примеры, практика, в которой описаны эти принципы. Но на мой взгляд про них лучше прочитать в статьях The Single Responsibility Principle, The Open-Closed Principle, The Liskov Substitution Principle, The Interface Segregation Principle, The Dependency Inversion Principle.
Основы Абстрактологии. Абстракция, абстрактное мышление, применение, примеры
Абстрактология основывается на очень простом понятии — абстракция, и ее производной — абстрактный подход.
По сути, абстрактология — это изложение абстрактного подхода.
Абстрактный подход — это допущение за’предел’ьного, в любом процессе. Его можно противопоставить конкретному подходу, о’предел’енному подходу.
Абстрактный подход заключается и в том, что любая вещь, любое явление может восприниматься как абстракция.
То есть, с позиции абстрактологии, любая вещь, явление, которые человек считает конкретным, определенным, на самом деле — абстрактны. И здесь нет никакого противоречия. Так как абстрактный подход подразумевает, что любая вещь, любое явление может одновременно существовать и не существовать. Это не теорема или аксиома. Это также следует из того, что существование — тоже абстракция.
Абстракция в переводе означает отвлечение. Отвлечение играет важную роль в абстрактном подходе. Отвлечение прежде всего касается направленного действия, в котором действие направлено на цель. Любая цель в «определенном подходе», которым руководствуется обычный человек начала 21 века, является определенной. И любые действия, связанные с ним, таким образом также являются определенными, и, соответственно, ограниченными. Мышление людей — линейно, построено на причинно-следственной модели, и диапазон их восприятия очень узок. В абстрактном подходе любая цель — абстрактна. Соответственно, она существует и не существует одновременно. Действия не являются конкретными в отношении ее, а являются отвлеченными. Цель, «в итоге», может оказаться совсем не той, какой человек принимал ее. И все, что с ней связано, соответственно. При абстрактном подходе, абстрактными являются и сами действия человека. Вполне реально воспринимамые существующие действия, могут оказаться лишь сном, когда человек просыпается, и подумает, что в реальности он не делал никаких действий. Абстрактолог скажет на это: нет, он и делал и не делал одновременно. Для абстрактолога реальность — тоже абстрактна! И нет никакой гарантии, что наш мир реален. Абстрактолог допускает возможность, что любое действие которое бы он ни делал, он и делает, и возможно, с какой-то другой точки обзора, не делает. И вот так любое действие, любое знание, приобретение знаний, любое развитие, любой опыт — также рассматривается как абстрактные.
Любое явление может быть объяснено с помощью абстрактного подхода. Даже конкретная вещь.
Легкий пример абстракции — цвет. При задании человеку визуализировать синий цвет, он визуализирует форму имеющую синий цвет. Ему сложно визуализировать синий цвет сам по себе.
Более сложный пример. Реально существующий шар, допустим футбольный мяч. Во-первых, пока мы это говорим сейчас, этот мяч все равно абстрактен, ведь его нет. Вся ситуация — уже абстрактна. Все наше рассмотрение — абстрактно. Это существует, но лишь в примере нашего рассмотрения. Но, допустим, все же вы возьмете в руки реальный мяч. Для вас он — реален. Если вы верите то, что это именно футбольный мяч, и с ним можно играть только в футбол — вы определены. Если вы допускаете, что с этим мячем можно делать что угодно другое — то это абстрактный подход. Вот подумайте прямо сейчас. Что вы можете делать с футбольным мячом?…
Если вы сказали: «поиграть в другую игру» — то вы снова определены и ограничены.
Если вы сказали: «разрезать и использовать резину» — то вы снова определены и ограничены.
Если вы сказали: «сесть на него» — то вы снова определены и ограничены.
Если вы сказали: «да что в голову придет» — вы, представьте себе, тоже снова определены и ограничены. Вы ограничены действием — «придет в голову».
Абстрактный подход не связан с поиском способов применения. Просто нужно допустить за’предел’ьное…
Играя в мяч, вы может, на самом деле, привлекаете внимание симпатичной девушки, да мало ли чего еще…
Абстрактные операции — это операции с абстрактным. По сути, все что мы делаем сейчас — это абстрактная операция. Пример с мячом — мы взяли то, чего нет и поработали с этим. Мы взяли абстракцию, и как-будто обозначили ее переменной X, а затем стали проводить с ним операции. Как видите, эти операции вполне могут к чему-либо приводить. Это уже широко используется в науке, программировании. Любую вещь можно представить как несуществующую, пустоту, void (язык Си), поработать с ней, а в нужный момент достать обратно. Абстрактолог видит абстрактные операции во всем, что бы он ни делал… Абстрактный подход — это не есть оперирование с конкретными вещами, которые вы обозначили как абстракцию, а именно так и полагают многие в нынешней науке. Те, кто так делают — находятся в своем внутреннем ограничивающим их «определенном подходе». Их ум сыграл с ними в шутку — «засунул» абстракцию в определенность. А истинный абстрактный подход — это полное отсутствие ограничения. Это постоянное допущение запредельного!…
Самое интересное и парадоксальное в абстрактологии в том, что любое понимание также абстрактно. То есть, все, что вы сейчас читаете, любые понятия об абстрактном, необходимо воспринимать исходя из абстрактного подхода. Не может быть никаких точных о’предел’ений абстрактного. Вам нужно преобрести абстрактное понимание. И всегда предполагать, что вы поняли возможно не так, как поймете это в другой раз…
Из понятия абстрактности цели следует, что в Абстрактологии нет никакой конкретной цели. Это не (только) философия! Не (только) наука. С помощью абстрактного подхода, конечно же, можно филосовствовать на любые темы — хоть о вселенной, хоть о чем, можно выводить любые научные теоремы, можно развивать сознание, достигать просветления… Можно все что угодно! Но это не будет являться самой абстрактологией. В самой абстрактологии, по сути то, и говорить не о чем, кроме как о разъяснении абстрактного подхода, абстрактного мышления и тп… Все, что не относится к этому — лишь основанное на абстрактном подходе…
Некоторые интересные статьи, где мы рассматривали элементы абстрактного подхода:
«от информационности к способностям»
«Что есть Матрица»
Читайте также:
Абстрактное мышление
Применение абстрактного подхода
Есть ли бог?
Примеры абстрактологии:
Я стремлюсь к чему-то и в то же время не стремлюсь ни к чему.
Моя жизнь — и есть и нет.
Я двигаюсь, а возможно при этом не двигаюсь (стою).
Законы есть, и в то же время их и нет.
Все сущее существует, а возможно и не существует ничего.
Ключевые слова абстрактологии:
Предел. Определенность, запредельность.
Отвлечение. Вовлеченность, невовлеченность
Понятия, вопросы:
Абстрактный подход
Абстрактность мнения
Абстрактность цели
Абстрактность действия
Абстрактность опыта
Многоуровневая абстрактность
Что такое абстракция, что такое абстрактное мышление
Применение:
Абстрактология в науке
Абстрактология в развитии общества
Абстрактология в развитии сознания
Разделы :
Понятия
Статьи
Другое
Форум (по обсуждению абстрактологии)
Кратко об абстракциях / Хабр
Бывает так что проект заходит в тупик, и дальнейшее его развитие становится невозможным. Не редко причиной такого провала становится неудачная архитектура, заложенная в начале разработки. Или приходится наблюдать споры о том какой из «двух стульев» лучше, а может даже участвовать и искренне не понимать, как оппонент может так думать!?
Тогда попробуем не много разобраться в абстракциях, откуда они берутся и что с ними делать.
Согласно Википедии Абстракция – это теоретическое обобщение как результат абстрагирования. В свою очередь абстрагирование – это отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков.
Из определения можно сделать вывод, что абстракцией может быть только осмысленное. При этом восприятие является лишь проекцией реального мира. Получается, что все размышления о реальном, являются размышлениями о наших моделях реального.
Абстракции формируют иерархии, и могут отождествляться как с частными сущностями, так и объединять схожие сущности в более высокоуровневые абстракции.
Абстракции в сознании
Кроме призмы восприятия, наши модели подвергаются ещё одному искажению: реальные сущности чрезвычайно сложны и имеют разные аспекты и параметры. При размышлении или разговоре о чём-то, всегда существует контекст, в котором существует модель. Причём иногда бывает так, что у собеседников этот контекст разный. И в довершение, наличие или отсутствие опыта (глобального) приводит к ещё большему изменению наших моделей в соответствие с этим опытом. В итоге у двух разных людей может быть очень разное восприятие одних и тех же сущностей реального мира.
Выходит, что каждый человек постоянно имеет дело с абстракциями, осталось научиться их явно видеть и управлять. Можно выдвинуть тезис, что программный код — это симуляция мышления, основанная на формализованных абстракциях. Поэтому, на мой взгляд, разработка ПО — это один из лучших тренажёров для прокачки абстрактного мышления.
Абстракции в разработке
Программные интерфейсы — это, пожалуй, самая явная формализованная абстракция. Отсекается все лишнее и остаётся только «что оно делает» без «как оно делает».
Реализуя интерфейс, мы создаём более реальную модель поведения или взаимодействия, которая уже может ответить на вопрос «как». Комбинируя интерфейсы между собой, мы можем создать общую архитектуру кода. При должном умении и сноровке архитектура, созданная таким образом, в будущем будет сохранять свою структуру. В то время как реализации составных интерфейсов могут изменяться до неузнаваемости.
Такая архитектура упрощает некоторые моменты в работе. Модульное тестирование сводится к написанию тестовых реализаций «соседних» абстракций и тестовых методов, сравнивающих вход и выход. Изоляция модулей позволяет безопасно проводить рефакторинг. Более того, если рефакторинг прошёл неудачно и всё сломалось, то откатывать придётся всего один модуль. Достаточно абстрагированный модуль может использоваться для схожих, но разных задач. При этом одна плохая реализация не будет влиять на работу других – изоляция говнокода.
Пример
Есть модуль для обработки входных данных, есть несколько вариантов их получения: из базы данных; из файла; по http. Решить эту задачу можно, выделив общий интерфейс для получения данных и сделав по реализации для каждого канала и канал данных для тестирования. Теперь один обработчик с помощью параметра «канал данных» может решать несколько схожих задач. А если выяснится, что одна из реализаций кривая, то её можно будет переделать на затрагивая другие модули.
Абстракций больше не надо
Не бывает идеальных решений, так же и с абстракциями не всё так гладко. Во-первых, абстракции субъективны, они могут вызывать споры о том, где начинается одна и начинается другая. Также существует проблема чрезмерного абстрагирования, когда под каждый вид и тональность чиха создаётся своя абстракция. Во-вторых, это подход повышает сложность кода, добавляя новые сущности, и новые уровни иерархии. Я уверен, что найдутся ещё недостатки этого подхода, часть из них будет субъективными, часть ситуационной, но будут и
Во всём должен быть баланс. Для себя я вывел следующую памятку.
- Если пишется большой и важный модуль – лучше расцеплять его.
- Если модуль используется много и/или в разных местах – лучше скрыть его за абстракцией.
- Если модуль должен распространяться как отдельная библиотека – лучше использовать абстракции.
- Если возможно изменение алгоритмов или путей взаимодействия – лучше реализовывать взаимодействие абстракций.
- Если класс используется в другом классе и нигде больше – можно подумать об их объединении или оставить как есть.
- Если это маленькая «одноразовая» задача – лучше не заморачиваться с её усложнением.
- Если это модуль, который скорее всего никогда не будет меняться – можно вывести его интерфейс и лучше оставить внутри всё как есть.
Итого
Абстракции — это инструмент, встроенный в наше сознание, как и любой другой они имеют свои плюсы и минусы, но знание альтернатив только помогает находить лучший путь.
Что такое абстракция
Что такое абстракция? Каждый человек хотя бы раз в жизни слышал этот термин, но далеко не каждому известно, что именно он подразумевает. В современной науке принято считать, что абстракция представляет собой своеобразный процесс познания внешнего мира, во время которого происходит отвлечение от каких-либо несущественных свойств и сторон явления (или предмета), для того чтобы иметь возможность выделить существенные и закономерные признаки.
В результате такого отвлечения происходит обобщение фактов и выделение важных закономерностей.
Что такое абстракция? Краткий исторический очерк
Само слово «абстракция» в переводе с латыни означает «отвлечение». Впервые этот термин был предложен еще Аристотелем. Так что такое абстракция? Аристотель считал, что это субъективный прием мышления, одностороннее познание и изучение реальности. Кстати, этот философ утверждал, что именно абстракция создает науку. Ведь наука и философия — это обобщенные понятия, которые невозможны без абстрактного мышления. К сожалению, теория знаменитого философа не обрела признания.
В последующие несколько столетий философы и ученые считали, что абстракция — это так называемая универсалия. После того как на смену религии и теологии пришла настоящая наука, полагавшаяся лишь на результаты исследований, это понятие обрело другой смысл. Считалось, что абстракция — это всего лишь психическая особенность человека, рассудок которого не мог иначе познать нераздельную природу вещей.
В начале двадцатого века мнения ученых на счет абстрактного мышления разошлись. Некоторые считают это лишь особенностью сознания, другие же утверждают, что такая форма познания имеет огромное значение в жизни каждого человека.
Абстрактные понятия и абстрагирование
Считается, что абстрактное понятие — это высшая форма обобщенного мышления. Для начала сознание выделяет чувственные свойства предмета, а затем медленно переходит к определению и анализу его нечувственных форм. Таким образом, абстрактные свойства каких-либо предметов определяются после анализа отношений между ними, некой связи. Считается, что высшая форма обобщения помогает выделить все более важные и существенные признаки каких-либо вещей.
Абстрагированием называют мысленное выделение некоторых характеристик элементов одного и того же множества. Таким образом, сознание не только может определить какие-то важные, фундаментальные свойства, но и спрогнозировать какие-то еще неизвестные закономерности.
Формы абстрактного мышления
За несколько тысячелетий изучения подобной формы человеческого познания были выделены некоторые виды абстракции. Например, если говорить о цели обобщенного восприятия, то можно выделить следующие типы:
- Формальная абстракция — это процесс мышления, во время которого человеческое сознание выделяет такие характеристики предмета, которые сами по себе существовать не могут. В качестве примера можно привести форму или цвет элемента. Интересно, что именно так усваивают знания маленькие дети. Формальное абстрагирование является основой теоретического мышления.
- Содержательная абстракция — во время изучения предмета выделяются относительно самостоятельные свойства. Например, выделяют клетки организма (которые существуют сами по себе) как его структурные части.
Существуют и другие типы абстрактного познания:
- Чувственная, или примитивная, абстракция — в процессе познания человек выделяет какие-то одни свойства предмета, при этом не обращая внимания на все остальные. Например, человек выделяет цвет, но не учитывает форму.
- Обобщающая абстракция — во время изучения внимание обращается только на общие свойства предметов, при это какие-то индивидуальные особенности отбрасываются.
На самом деле трудно дать однозначный ответ на вопрос о том, что такое абстракция. Ведь процессы обобщающего мышления могут быть весьма разнообразными и разносторонними.
Абстрактно ориентированный программист / Хабр
Начну с истории о программистах, которую мне приходилось слышать неоднократно.
Я попросил Джо написать простенькую программу, которая делает <xyz>. Работы там было на несколько часов, в худшем случае на день. Ему понадобилось несколько дней, за который он написал гораздо более сложный фреймворк, чем требовалось. Почему он снова так намудрил?
Возможно, дело в том, что Джо – Абстрактно ориентированный программист (АОП) .
Вот несколько шаблонных фраз (snowclones)
Если вы часто усложняете (over-engineer) свои программы, возможно вы АОП.
Если вы проводите больше времени, размышляя о завтрашних проблемах, чем о текущих, возможно, вы АОП>.
Если вам нравится искать глубинные взаимосвязи, ощущать приятную дрожь от бессознательных озарений или рассуждать аналогиями, возможно, вы АОП.
Необходимость абстракций
Разработка программного обеспечения – одно из немногих занятий в котором постоянно приходится иметь дело с абстракциями. Языки программирования, типы данных, графические представления, потоки управления и т.д. являются абстракциями реального мира, абстракциями аппаратного обеспечения и часто абстракциями абстракций.
Резкий рост производительности процессоров (в соответствии с законом Мура) рождает потребность в абстракциях. Я начинал программировать на компьютерах с процессорами, счет транзисторов в которых шел на сотни. У Motorolla 6800 было 4100 транзисторов и тактовая частота 1-2 мегагерца. Zilog Z80 имел 8500 транзисторов и частоту 2-8 МГц. Понимание работы регистров процессора, прерываний и других в каком-то смысле физических процессов очень сильно помогало, когда требовалось заставить эти компьютеры делать что-нибудь действительно полезное.
Сейчас в массовое производство запущены процессоры с миллиардом или около того транзисторов. Например Intel Core i7 содержит около миллиарда транзисторов, и имеет тактовую частоту 2-3.5 ГГц.
Это, примерно, в миллиард раз превосходит вычислительную мощность компьютеров тридцатилетней давности. Человек же так заметно эволюционировать не сумел. Возникла необходимость эффективно использовать прирост мощности процессоров. Тут-то и появились компиляторы, виртуальные машины, сложные интерфейсы, всевозможные оптимизаторы, высокоуровневые языки программирования и другие инструменты. Между аппаратным обеспечением и современными программами лежит множество слоев абстракции. И, конечно же, они необходимы.
Таким образом, нет ничего удивительного в том, что программирование привлекает людей со склонностью к абстрактному мышлению… и, возможно, человек с абстрактным мышлением имеет больше шансов получать удовольствие от работы и добиваться успехов в этой области.
Но, рассуждая подобным образом, очень легко забыть, что не всем людям свойственно абстрактное мышление. Можно даже сделать вывод, что все программисты абстрактно ориентированны или ошибочно заключить, что абстрактное мышление является наилучшим вариантом для них.
Абстрактное мышление
Для начала рассмотрим определения
Абстрактный (прилагательное)
- отвлеченный, не связанный с непосредственным восприятием реального мира (т.е. фактами)
- не прикладной или практический, теоретический
Абстракция (существительное)
- процесс формулирования обобщенных идей или концепций посредством извлечения общих свойств или закономерностей из определенного набора примеров
Абстракции – это по определению упрощение информации, которое достигается рассмотрением большого количества примеров и сжатием их в общий шаблон.
Для некоторых людей естественно абстрактное мышление, в то же время другие предпочитают конкретные факты. Абстрактно выражаясь, речь идет о способе, которым люди обрабатывают информацию.
Рассмотрим индикатор типов личности Майерс-Бриггс, который широко используется в бизнесе. Индикатор позволяет определить четыре типа личности, которые подразделяются на основанные на интуиции и здравом смысле (N и S, если использовать обозначения типологии) – соответственно на абстрактное и конкретное мышление. (Существуют другие психологические исследования с похожим разделением типов личности)
Перечислим некоторые особенности, проявляющиеся при абстрактном и конкретном мышлении.
Ввиду того, что многие люди подстраивают свое поведение под обстоятельства, вы также можете трактовать приведенную информацию как абстрактное или конкретное текущее состояние сознания, хотя считается, что каждый человек имеет доминирующую склонность.
Признаки абстрактного/интуитивного мышления
- Мысли и идеи
- Чтение между строк
- Жизнь будущим – бо́льшая заинтересованность проявляется по отношению к будущим возможностям
- Лучше запоминаются шаблоны, контекст и взаимосвязи
- Комфортно себя чувствуешь, работая с неопределенными размытыми данными, когда приходится угадывать их смысл
- Большее доверие проявляется к абстрактной или теоретической информации, взаимосвязям и шаблонам
Признаки конкретного мышления
- Реальные объекты и вещи
- Чтение самих строк
- Фокусировка на «здесь и сейчас»
- В памяти хранится большое количество деталей и фактов
- Предпочтение отдается четкой и точной информации, не нравится выдвигать догадки, когда нет четких фактов
- Предпочтение отдается информации в настоящем времени, которую можно ощутить одним из пяти чувств
- Недоверие к догадкам, которые, кажется, появились из неоткуда.
Вернемся к Джо
Вернемся к истории о Джо, с которой начиналась данная статья, где он усложнял (over-engineer) код. Для абстрактно ориентированного программиста тут все логично
- Сегодня мы имеем проблему X
- X – это отдельный пример более общего класса задач, который также включает Y и Z
- Чтобы проблемы Y и Z не случились в будущем, я должен написать код, который решает X, Y и Z
Однако, когда во время общения с Джо мы попросили его решить только задачу X, в то время как он знал, что в будущем Y и Z неминуемы, мы обрекли его на расстройство из-за некачественно выполненной работы или даже уверенность, что в будущем его сделают крайним.
Здесь на первый план выходит текущая ситуация. Умение думать наперед может сделать из вас героя. Также умение думать наперед с легкостью превратит вас в обузу. Концентрируясь же исключительно на сиюминутных проблемах, вы станете героем… или обузой.
Весь фокус в понимании, какой подход будет уместным в той или иной ситуации, проще говоря, адаптируйтесь.
Также очень важно согласовывать выбранную стратегию с коллегами, другими словами, общайтесь.
Приведу некоторые отзывы, которые я слышал об абстрактно ориентированных программистах…
Позитив
- Она берется за плохо поставленные задачи и прекрасно с ними справляется
- Он глубоко продумывает проблему, в результате предлагая элегантные решения
- Она постоянно пробует разные приемы в поисках лучшего подхода
- Команда (АОП) неожиданно выдвинула ряд прекрасных идей
Негатив
- Он постоянно сражается с будущими проблемами, я не могу заставить его сделать быструю правку, когда это необходимо
- Она часто сильно усложняет (over-engineer) свой код. Иногда мне нужен просто быстрый хак.
- Он постоянно пытается переписать всю нашу кодовую базу. Унаследованный код работает – просто оставь его в покое.
- Почему она не следует общему плану работ
- Совещания нашей команды (АОП) постоянно уходят от насущных проблем. Конечно, обсуждения получаются интересными, но нам нужно сконцентрироваться на решаемой задаче.
… и то же самое про конкретно ориентированных программистов (КОП)
Позитив
- Он долго не рассуждает. Просто берет задачу и решает ее.
- Она в курсе наших технологических процессов и следует им
- Он демонстрирует здравый смысл
- Эта команда (КОП) постоянно занимается той задачей, которую они могут и должны делать.
Негатив
- Его код решает узкий круг задач. Этого достаточно, чтобы пройти тесты, но мало для реального использования
- Ее код негибок и труден в сопровождении. Каждый раз при добавлении новой функции мы вынуждены все переписывать заново.
- Он ничего не видит за пределами текущей задачи. Его код не протянет долго.
Мини тест
Список А. Сколько из приведенных в нем пунктов описывают вас наилучшим образом? (Отвечайте не задумываясь)
- Вас больше интересует идея в общем, чем тонкости ее реализации
- Вы часто задумываетесь о судьбе человечества
- Вы с легкостью выделяете общие закономерности из конкретных примеров
- Вы часто рассуждаете о сложности жизни
- Вы считаете, что практически все поддается анализу
- Вы с легкостью понимаете новые теоретические принципы
- Вы часто проводите время за размышлениями, как сделать что-либо лучше
- Вы с легкостью просчитываете разные пути, по которым может пойти развитие ситуации
Список Б. Сколько из приведенных в нем пунктов описывают вас наилучшим образом?
- Вам скучно читать теоретические книги
- Вы предпочитаете опираться на свой опыт, а не на теоретические альтернативы
- Для вас важно пробовать сделать что-то своими руками
- Анализируя ситуацию, вы основное внимание уделяете текущему ее состоянию, а не возможным последствиям
- Как правило, текущие занятия волнуют вас больше, чем планы на будущее
Если вы согласились с бо́льшим числом пунктов из списка А, чем Б, вы, должно быть, абстрактно ориентированы. И наоборот, если преобладали утверждения из списка Б, вы относитесь к конкретному типу личности.
[Сразу хочу оговориться. Во-первых, тип личности – это не судьба. Очень часто жизнь требует от нас адаптировать свое поведение ради семьи, работы, друзей и т.п. Во-вторых, вполне может оказаться, что в зависимости от вашей текущей ситуации вы можете отвечать на одни и те же вопросы по-разному. В-третьих, речь идет об описании вашего доминирующего стиля мышления – не нужно воспринимать это как призыв к действию.]
Адаптируем мышление
Несколько лет назад я услышал хорошую аналогию. Вы можете быть правшой или левшой. Большинство людей используют одну руку в качестве основной, некоторые свободно владеют обеими. Но только из того, что кто-то чаще пользуется правой рукой, не следует, что ему вообще не нужна левая. Кроме того, некоторые задачи требуют использования определенной руки – попробуйте воспользоваться ножницами для правшей левой рукой или вести машину, переключая скорости не той рукой, которая предполагалась производителем.
Мы все умеем обращаться как с фактами, так и с обобщенными шаблонами, но чаще имеем склонность к чему-то одному. Точно так же, существуют задачи, для решения которых больше подходит определенный тип мышления. По своему опыту могу сказать, что программисты становятся сильнее, когда понимают свои природные склонности, но учатся адаптироваться при необходимости.
Вот несколько примеров задач, в которых отдается предпочтение определенным типам мышления (все они являются обобщениями)
- Разработка пользовательского интерфейса требует внимания к большому количеству деталей
- Спецификации выигрывают от широкого мышления, но могут быть подкреплены конкретными примерами (в качестве тестов обобщений, удобочитаемость улучшается, когда приводятся конкретные примеры, что позволяет убедиться, что обобщения не потеряли связи с реальностью)
- Масштабируемые системы и архитектуры с большим жизненным циклом требуют абстракций
- Объектно ориентированное программирование ориентировано на абстракции
- Коллеги, не являющиеся программистами, и заказчики могут оказаться с конкретным типом мышления. Абстрактно мыслящий человек, общаясь с конкретно мыслящим, рискует оказаться недопонятым, произвести впечатление летающего в облаках. Если вы мыслите абстрактно, хорошо бы научиться общаться с другими людьми на понятном им языке.
Я не ставил перед собой цели показать, какой стиль мышления лучше. Вместо этого я отстаиваю идею самоосознания и тренировки гибкости в мышлении и общении.
Будучи стопроцентным абстракционистом, хочу закончить прекрасным примером абстрактного мышления
Все обобщения ложны. Включая это. Марк Твен
А Марк Твен был абстрактно ориентированным писателем…
Абстракция на Java | Абстрактный класс и метод с примером
- Home
Testing
- Back
- Agile Testing
- BugZilla
- Cucumber
- Database Testing
9000 J4000
- JUnit
- LoadRunner
- Ручное тестирование
- Мобильное тестирование
- Mantis
- Почтальон
- QTP
9000 JTL Testing 9000
- Назад
- Центр качества (ALM)
- Управление тестированием
- TestLink
SAP
- Назад
- ABAP 900 05
- APO
- Начинающий
- Basis
- BODS
- BI
- BPC
- CO
- Назад
- CRM
- Crystal Reports
- FICO
9000
000 HRM
Заработная плата
- Назад
- PI / PO
- PP
- SD
- SAPUI5
- Безопасность
- Менеджер решений
- Successfactors
- Учебники SAP
Apache
- Назад
- Java
- JSP
- Kotlin
- Linux
- Linux
- Kotlin
- Linux
- Perl
js
- Назад
- PHP
- PL / SQL
- PostgreSQL
- Python
- ReactJS
- Ruby & Rails
- Scala
- SQL
- UML
- VB.Net
- VBScript
- Веб-службы
- WPF
000
0004 SQL
Обязательно учите!
- Назад
- Бухгалтерский учет
- Алгоритмы
- Android
- Блокчейн
- Business Analyst
- Веб-сайт сборки
- CCNA
- Облачные вычисления
- COBOL 9000 Compiler
- 0005
- Ethical Hacking
- Учебные пособия по Excel
- Программирование на Go
- IoT
- ITIL
- Jenkins
- MIS
- Сетевые подключения
- Операционная система
- Назад
- 9000 Встроенный COBOL 9000 Дизайн 9000
Управление проектами Обзоры
- Salesforce
- SEO
- Разработка программного обеспечения
- VB A
- 0005
Big Data
- Назад
- AWS
- BigData
- Cassandra
- Cognos
- Хранилище данных
0005
HBOps
HBOps
.
Абстракция на Java | Реальный пример абстракции в Java
Интерфейс в Java
Инкапсуляция в Java
Абстракция на Java
Абстракция — это концепция раскрытия только необходимых существенных характеристик и поведения по отношению к контексту.
Скрытие данных известно как абстракция данных . В объектно-ориентированном языке программирования это реализуется автоматически при написании кода в форме класса и объекта.
Реальный пример абстракции в Java
Абстракция показывает пользователю только важные вещи и скрывает внутренние детали. Например, когда мы едем на велосипеде, мы знаем только о том, как ездить на велосипеде, но не можем знать, как это работает? А также мы не знаем внутренней функциональности велосипеда.
Другой реальный пример абстракции — банкомат; Все они выполняют операции в банкомате, такие как снятие наличных, перевод денег, получение мини-выписки и т. Д.но мы не можем знать внутренних подробностей об банкомате.
Примечание. Абстракция данных может использоваться для обеспечения защиты данных от несанкционированных методов.
Примечание: В языке Java абстракция данных может осуществляться с помощью класса.
Пример абстракции
класс Клиент { int account_no; float balance_Amt; Имя строки; int age; Строковый адрес; void balance_inquiry () { / * для выполнения запроса баланса только номер счета требуется, что означает оставшиеся свойства скрыты для метода запроса баланса * / } void fund_Transfer () { / * Перенести номер счета фонда и требуется баланс и оставшиеся свойства скрыты для метода перевода средств * / }
Как достичь абстракции?
Есть два способа добиться абстракции в java
- Абстрактный класс (от 0 до 100%)
- Интерфейс (100% абстракция)
Подробнее о классах Interface и Abstract в предыдущем разделе.
Разница между инкапсуляцией и абстракцией в Java
Abstraction занимается сокрытием деталей и показом основных вещей пользователю, тогда как инкапсуляция связывает ваши данные и код как единое целое.
Инкапсуляция не обеспечивает полную безопасность, потому что мы можем получить доступ к закрытому члену класса с помощью API отражения, но в случае абстракции мы не можем получить доступ к статическому, абстрактному члену данных класса.
В java можно сказать, что он берет все ваши методы, переменные и связывает их в один класс.
Абстракция реализована в Java с использованием интерфейса и абстрактного класса, в то время как инкапсуляция реализована с использованием модификаторов доступа private, package-private и protected.
Преимущества абстракции данных в Java
Здесь мы обсуждаем некоторые из его преимуществ, чтобы признать его значение. Преимущества абстракции данных приведены ниже;
- Абстракция данных увеличивает возможность повторного использования кода, избегая любых шансов на избыточность.
- Повышает читаемость кода, так как исключает возможность отображения сложной работы кода.
- С реализацией классов и объектов повышается безопасность. Поскольку абстракция данных — это метод реализации классов и объектов, запрещающий доступ другим классам к элементам данных и функциям-членам базового класса.
- Помогает пользователю писать высокоуровневый код.
- Он разделяет всю программу на код и реализацию, делая ее более понятной.
- Помогает пользователю избежать написания кода низкого уровня.
- Избегает дублирования кода и увеличивает возможность повторного использования.
- Может изменять внутреннюю реализацию класса независимо, не затрагивая пользователя.
- Помогает повысить безопасность приложения или программы, поскольку пользователю предоставляются только важные детали.
Интерфейс в Java
Инкапсуляция в Java
Magenet — лучшая альтернатива AdSense, здесь мы зарабатываем 2 доллара за одну ссылку, здесь мы получаем рекламу ссылок. Magenet
.
Абстракция против инкапсуляции в OOPS с примерами
В этой статье объясняется часто обсуждаемая и обсуждаемая тема «Абстракция против инкапсуляции» в контексте принципов OOPS (объектно-ориентированного программирования).
Слушайте на ходу… Аудиоверсия сообщения в блоге
Что такое абстракция
Абстракция относится к концепции сокрытия сложностей системы от пользователей этой системы.
Пример абстракции. Допустим, у нас есть мобильное приложение для получения последней котировки акций.Для пользователя это так же просто, как ввести название компании или код акций компании в приложении и нажать кнопку «получить». Внутренне приложение будет выполнять последовательность шагов, таких как подключение к подключению к данным / Wi-Fi, а затем вызов RESTful API на внутреннем сервере. Этот внутренний сервер обратится к базе данных или сделает еще один вызов внешнему поставщику услуг котировок акций, чтобы получить котировку акций. Фактическая котировка акций затем перемещается в обратном направлении по цепочке и отображается в приложении.
Для пользователя приложения всего 2 простых шага: ввести код акций и нажать кнопку выборки, но на самом деле вся работа, как объяснено выше, абстрагируется от пользователя.
Что такое инкапсуляция
Инкапсуляция — это языковая конструкция, объединяющая данные и поведение. Кроме того, он ограничивает доступ к этим данным и поведению вместе.
Пример инкапсуляции: Класс в java — это простейший пример инкапсуляции. Он сохраняет вместе данные (переменные) и поведение (методы) объекта. Класс также ограничивает доступ к этим данным и поведению с помощью спецификаторов доступа. Концепция сохранения переменных экземпляра как частных, а затем предоставления улучшенного доступа через геттеры и сеттеры является примером того, что известно как , скрывающие данные .
Где возникает путаница
Идея, при которой большинство разработчиков путается между абстракцией и инкапсуляцией, заключается в том, что они пытаются связать их со скрытием данных.
Абстракция также скрывает, но, как объяснялось выше, абстракция скрывает сложность . С другой стороны, инкапсуляция сохраняет данные / поведение, которые она инкапсулирует, вместе и контролирует доступ к ним. Другими словами, инкапсуляция скрывает конструкции, которые она инкапсулирует .
Подводя итог: абстракция скрывает сложность системы, представляя пользователю упрощенный интерфейс. В то время как инкапсуляция — это объединение связанных данных и поведения вместе при ограничении / контроле доступа к ним и частичном или полном сокрытии этих членов в процессе.
Авторские права © 2014-2020 JavaBrahman.com, все права защищены. .