5.1. Абстрагирование
Абстрагирование — метод научного познания в форме операции мысленного отвлечения от ряда свойств, связей и отношений исследуемого объекта, которые несущественны для решения поставленных задач. Операция отвлечения равносильна операции выделения в объекте существенных свойств, связей и отношений. Результат процесса абстрагирования называют абстракциями (с лат. — отвлечение) или абстрактными предметами.
Разовый цикл абстрагирования носит двухступенчатый характер. На первой ступени абстрагирования определяются несущественные свойства и связи, которыми можно пренебречь, отделить существенное от несущественного, вычленить наиболее важное и интересное для исследователя. Объективным основанием для такого вычленения является относительная независимость или пренебрежимо слабая зависимость изучаемых явлений и их составляющих от определенных факторов.
Подготовка акта абстрагирования (отвлечения) состоит, во-первых, в установлении того, что является общим для многих предметов определенного класса.
Во-вторых, в установлении независимости или пренебрежимо слабой зависимости изучаемых явлений от определенных факторов. Так, для решения задачи о моменте встречи движущихся друг к другу автомобилей отвлекаются от географического расположения исходных пунктов движения. Здесь важно только расстояние. Решающий задачу отвлечется от марки автомобилей, их масс и вообще от автомобиля, заменив их точками на отрезке пути, поскольку для решения задачи нужна только скорость. Более того, любые задачи окажутся неразрешимыми без процесса абстрагирования.
Вторая ступень абстрагирования, в собственном смысле акт отвлечения, состоит в замещении исследуемого объекта другим, эквивалентным, менее богатым по свойствам, выступающим в качестве «модели» первого. Так, в рассмотренном выше примере задача с автомобилями замещается схемой движения двух точек, которая упрощает исследуемое явление и позволяет рассмотреть процесс в «чистом» виде.
Операция абстрагирования может применяться многократно как к реальным, так и абстрактным объектам. Переходя от одного уровня абстрагирования к другому, постепенно отвлекаясь от ряда свойств получают (в зависимости от задачи) абстракции все возрастающей степени общности, Так, например, отвлекаясь от множества свойств конкретного человека, можно построить абстрактную цепочку: мужчина — человек — живое существо — материальный объект — биологическая форма материи — материя. Как видно, высшие формы абстракции — это философские категории и их системы.
Исходя из различия целевых характеристик, в современной науке наиболее широкое применение находят абстракции следующих основных типов:
1. Изолирующая абстракция. Предполагает выделение свойств и отношений, присущих тому или иному предмету, мысленное отделение этих свойств и отношений от самого предмета, придание им статуса самостоятельного существования. Примерами таких абстрактных предметов могут служить понятия: растворимость, устойчивость надежность, красота, простота, белизна и т.д.
2. Обобщающая абстракция. Здесь отвлекаются от индивидуальных особенностей и черт предметов с выделением таких их общих признаков, которые позволяют вводить в рассмотрение классы предметов. Так, используемые в металлообработке резцы, сверла, фрез протяжки, напильники, ножовки и т.п. с помощью обобщающей абстракции образуют понятие класса «металлорежущий инструмент».3. Абстракция потенциальной осуществимости, при которой отвлекаются от реальных границ конструктивных возможностей человеческого сознания, связанных с ограниченностью жизни человека в пространстве и времени. С этой точки зрения бесконечность выступает уже не как непосредственно данная, актуальная, а как потенциально осуществимая. Эта абстракция лежит в основе конструктивной математики, теории алгоритмов, абстрактных автоматов и других теорий.
Система абстракций образует научный язык, посредством которого формируются и формулируются понятия: научный факт, научная проблема, научная идея, научная гипотеза, научный закон, научная теория.
Что такое абстрагирование – метод, приём или мышление :: SYL.ru
В ситуации, когда от человека ждут объяснения непонятной ему по содержанию картины (причины этого могут быть самыми разными), можно услышать реплику: «Нечто абстрактное (если читать между строк – искусство ради искусства без смысловой нагрузки)». Однако задумывался ли когда-нибудь Человек-читающий, что подразумевается под словом «абстракция» и так ли редко приходится прибегать к абстрагированию в обыденной жизни?
Как проявляется абстрагирование в жизни человека
Термин «абстрагирование» имеет латинские корни. Образован при помощи приставки ab – «от» и слова traho – переводится как «тянуть», «влечь». Вот и получается, что разговор идёт об отвлечении. В энциклопедиях и словарях можно встретить разъяснение слова как метод исследования, научного познания, процесс отвлечения какого-либо предмета от его несущественных признаков. Для прояснения ситуации достаточно обратиться к истокам.
С появлением человека на свет запускается процесс формирования личности. Одним из главных факторов развития ребёнка является постепенное (от простых к сложным формам) становление мыслительных операций (мышления). Мышление – это процесс познания окружающего мира, представленный в трёх основных формах: понятие, суждение и умозаключение. Существует прямая взаимосвязь развития мышления и освоения языка.
Так, в младенческом возрасте ребёнок только осваивает человеческую речь, поэтому при восприятии и исследовании окружающего мира он опирается на самый примитивный вид мышления – конкретно-действенный или практический. Суть его в том, что ребёнок познаёт предметный мир путём сбора о нём как можно большего количества информации (цвет, форма, твёрдость, мягкость, можно разбить или можно бросать на пол без последствий, вкус, съедобность и т.д.). Этот процесс заложен природой на генетическом уровне, поэтому маленькие дети часто ведут себя «рискованно»: тянут всё в рот (за исключением момента появления зубов), бросают, мнут, трясут практически всё, что попадает в руки. Однако познание практического применения вещей заканчивается примерно к 2-3,5 годам (при нормальном развитии), а следующий этап развития мышления длится примерно до 5-6,5 лет.
К трём годам расширяется словарный запас малыша, интонационный репертуар, он старательно подражает поведению значимых взрослых. Это хорошая почва для формирования конкретно-образного (наглядно — образного) или художественного вида мышления. Накоплен достаточный багаж знаний об окружающем мире в виде образов: лиса – рыжая, живёт в лесу, хитрая; курочка – птица, живёт дома, источник яиц и т.д. Ребёнок уверенно оперирует известными ему образами, поэтому речь становится более плавной, оформленной предложениями, а не короткими фразами, но самостоятельное выделение причинно-следственных связей сюжета сказки будет доступно только на следующем этапе развития мышления (достаточное количество свидетельств этому утверждению можно найти в книге Корнея Чуковского «От трёх до пяти»).
Пятилетний дошкольник, опираясь на конкретно-образное мышление, с успехом осваивает словесно-логическую или абстрактную форму. Ребёнок самостоятельно может определять и различать виды, роды, категории. Его речь совершенствуется, включая разного рода пояснения («потому что»…), логические заключения и выводы. Строение используемых в речи предложений значительно усложняется, появляются «отвлечения», фантазирования.
Можно сделать вывод, что к абстрагированию человек приходит раньше, чем узнаёт значение этого термина.
Существует ли абстрактное мышление
Многие ресурсы интернета расписывают абстрактное мышление как некое сверхценное образование (при этом подменяя понятия и вводя читателя в заблуждение). На самом деле так иногда для сокращения называют словесно-логическое мышление, особенности которого были описаны выше. Стоит отметить, что отсутствие словесно-логических операций у детей шестилетнего возраста трактуется при диагностическом обследовании как задержка развития, а при некоторых обстоятельствах — и интеллектуальная недостаточность. Полное отсутствие данного вида мышления или его нарушенное формирование наблюдается у всех людей с олигофренией.
Абстрагирование как метод и художественный приём
Что такое абстрагирование в истории? В исторической ретроспективе оно обнаруживает себя впервые у Древних греков. Естественно, что проявляется это в употреблении абстрактных категорий при описании предметов, например: твёрдый — в предметно-конкретном словаре «подобный камню», круглый – «подобный луне». Способствовало формированию и развитию метода абстрагирования и ораторское искусство (почитаемое в греческих полисах) – умение формулировать логические заключения и убеждать слушателей в их правильности.
Что такое абстрагирование в научном познании? Это отвлечение от несущественных для решаемых в данный момент задач свойств и связей объекта. Как результат изучения выступает абстракция или абстрактный предмет.
Что такое абстрагирование в среде ваятелей? В изобразительном искусстве абстрагирование вылилось в абстракционизм, который стал своеобразным продолжением импрессионизма. Если импрессионисты (от французского «впечатление») передавали свои эмоции, переживания, в основном, сохраняя узнаваемую форму предметов, то абстракционисты стремились выработать универсальный визуальный язык форм и цветов, выходящий за пределы физических и культурных границ зрителя. Картины художников – это своеобразная передача идей и эмоций через взаимосвязанный ритм цвета, формы, фактуры. У истоков этого искусства стояли Василий Кандинский, Казимир Малевич, Пит Мондриан.
Классификация типов абстрагирования
Что такое абстрагирование с точки зрения научного познания? Постепенно отвлекаясь от ряда свойств объекта, можно получить абстрактную цепочку: медоед – животное – живое существо – материальный объект – материя, в которой высшей формой абстрагирования являются категории философии. По решаемым задачам, процесс абстрагирования можно разделить на следующие типы:
- идеализирующее абстрагирование – предусматривает вычленение «идеальной модели объекта», в обыденной жизни проявляется в таких понятиях, как «идеальный учитель», «идеальный ученик, работник». Часто востребовано как пример для подражания;
- абстрагирование обобщение — происходит отвлечение от индивидуальных характеристик объекта с опорой на принадлежность к тем или иным классам, например: кастрюля, сковорода, ковш, сотейник становятся «кухонной посудой»;
- изолирующее абстрагирование – это выделение одного из признаков объекта, и придание ему самостоятельности в виде определённой категории, например: «устойчивость», «растворимость», «магнетизм», «красота» и т. д.
В приведённых примерах абстрагирования можно заметить основной принцип – исключение индивидуальных характеристик предметов и объектов с целью выведения каких-либо закономерностей, поэтому данный метод называется элиминативным (дословный перевод с латинского – изгонять, исключать, удалять).
Теории абстрагирования
Существуют две теории абстрагирования:
- элиминативная;
- продуктивная.
Продуктивное абстрагирование основывается на постулатах:
— Абстракция является новым объектом, а «универсальные абстракции» — существуют независимо от нашего сознания в так называемом «мире идей».
— Формальная логика не властна над продуктивными абстракциями, которые тяготеют больше к «логике целого» (такое утверждение основывается на понятии идеи в продуктивной абстракции, как множества более мелких идей, по отношению к которым основная является скорее «целым», нежели «общим»). Эрнст Кассирер называет такую идею «функцией». Однако стоит отметить, что логика продуктивных абстракций изучена недостаточно, поэтому сравнение абстрагирования элиминативного и продуктивного временно не представляется возможным.
Сферы применения абстрагирования
Нетрудно заметить, что в основном понятийный аппарат описываемого явления составляет научный язык. Следовательно, абстракция является ведущим научным методом (как в гуманитарных, так и в естественных областях).
Происходит это в связи с возможностью построения абстрактных схем и сценариев протекания реальных процессов, раскрывающих неявные закономерности.
Что такое абстрактный класс?
- Александр С. Гиллис, Технический писатель и редактор
Абстрактный класс — это определение шаблона методов и переменных в определенном классе или категории объектов. В программировании объекты представляют собой единицы кода, и каждый объект превращается в общий класс.
Абстрактные классы — это классы, которые содержат одно или несколько абстрактных поведений или методов. Объекты или классы могут быть абстрагированы, что означает, что они суммируются в характеристики, относящиеся к текущей работе программы. Абстрактные классы используются во всех объектно-ориентированных (ООП) языках, включая Java, C++, C# и VB.NET.
Абстрактные классы не требуются в программировании, но эта концепция предназначена для того, чтобы сделать код чище и сделать программирование более эффективным, поскольку ненужные детали не упоминаются постоянно. Абстрактные классы также полезны при создании иерархий классов.
Объявление класса абстрактным означает, что он не может быть непосредственно создан, что означает, что из него нельзя создать объект. Это защищает код от неправильного использования. Абстрактные классы требуют подклассов для дальнейшего определения атрибутов, необходимых для индивидуальной реализации. Все подклассы, которые расширяются от абстрактного класса, имеют атрибуты этого абстрактного класса, а также свои собственные атрибуты, специфичные для каждого подкласса.
Классы, производные от абстрактных классов, используют концепцию, называемую наследованием, которая разделяет набор атрибутов и методов. Когда это делается много раз, это приводит к иерархии классов, в которой абстрактный класс считается корневым или базовым классом.
Абстрактные классы могут быть созданы следующими способами, в зависимости от языка:
- с использованием ключевого слова abstract в определении класса;
- наследуется от абстрактного типа; и
- включая абстрактный метод в определение класса.
Абстрактные классы контрастируют с конкретными классами, которые являются типом по умолчанию. Конкретный класс не имеет абстрактных методов и может быть создан и использован в коде. Абстрактные классы также можно сравнить с общедоступным классом, который используется для информации и методов, которые должны быть доступны в любой части кода программы, а также с суперклассом, который представляет собой класс, от которого происходят подклассы.
Что такое абстрактный метод?Абстрактные классы могут иметь абстрактные и обычные методы. Абстрактные методы имеют сигнатуру без тела реализации. Абстрактные методы могут использоваться только в абстрактных классах и используются для указания, когда подкласс должен реализовать метод. Хотя абстрактные методы не имеют кода в базовом классе, вместо этого код предоставляется подклассом.
В производных классах абстрактные методы реализуются с тем же модификатором доступа, типом аргумента, числом и типом возвращаемого значения, что и базовый класс.
Абстрактные методы также могут использоваться для указания интерфейсов для некоторых языков программирования.
Абстрактные классы и интерфейсыИнтерфейс — это еще один аналогичный способ создания абстракции. Как и абстрактные классы, интерфейсы не могут быть созданы. Но в отличие от абстрактных классов, метод интерфейса может быть установлен как абстрактный.
Абстрактные классы также могут иметь конечные, нефинальные, статические и нестатические переменные, тогда как интерфейс имеет только статические и конечные переменные. Кроме того, абстрактные методы могут определять общедоступные, защищенные и частные конкретные методы, в то время как интерфейсы имеют все поля автоматически как общедоступные, статические и окончательные.
Аналогично реализована реализация в Java. Например, ключевое слово реализует для создания интерфейса Java, а ключевое слово расширяет для создания абстрактного класса.
Абстракция и инкапсуляцияИнкапсуляция в объектно-ориентированном программировании — это процесс упаковки всей важной информации, содержащейся внутри объекта, и раскрытие только выбранной информации. Реализация и состояние каждого объекта хранятся внутри определенного класса. Другие объекты не имеют доступа к этому классу или прав на внесение изменений; они могут вызывать только список общедоступных функций или методов. Эта характеристика сокрытия данных обеспечивает большую безопасность программы и предотвращает непреднамеренное повреждение данных, а также упрощает поддержку и повторное использование кода.
Инкапсуляция выполняется путем объявления всех переменных в классе как частных при написании методов, объявленных как общедоступные, для установки и извлечения значений переменных.
В то время как абстракция — это процесс сокрытия нежелательных данных, инкапсуляция — это процесс сокрытия данных с целью защиты этой информации. В то время как абстракция достигается с помощью абстрактных классов или интерфейсов, инкапсуляция реализуется с помощью модификатора доступа.
Примеры абстрактных классов и методовАбстрактные классы создаются по-разному, в зависимости от языка. Например, абстрактные классы могут быть созданы с помощью ключевого слова, такого как abstract , путем наследования абстрактного типа или включения абстрактного метода.
В следующем фрагменте кода есть два класса: FileLogger и DbLogger . FileLogger отвечает за запись данных в файл, а DbLogger записывает данные в базу данных:
Здесь показан пример избыточного кода, который можно упростить с помощью абстрактного класса.К сожалению, в коде есть избыточность. В этом примере программистам потребуется дважды написать одну и ту же логику, чтобы проверить допустимые сообщения журнала — по одному для каждого из двух классов.
В следующем примере создается абстрактный класс для упрощения кода.
Здесь показано использование абстрактного класса, упрощающего код за счет абстрагирования избыточного кода IsLogMessageValid.В этом примере реализация метода IsLogMessageValid перемещена в абстрактный класс, что помогает устранить избыточность.
Узнайте больше об абстракции и о том, как она помогает разработчикам избежать возможных ошибок кода с помощью концепции, называемой рефакторингом .
Последнее обновление: февраль 2023 г.
Продолжить чтение Об абстрактном классе- Разбивка концепций объектно-ориентированного программирования
- Исправление спагетти-кода и других антипаттернов теории пасты
- Разработчики хотят повысить производительность и эффективность Java 20
- Как использовать абстрактные репозитории при внедрении зависимостей
- Функциональное и объектно-ориентированное программирование: основы
абстракция данных
Автор: Роберт Шелдонобъект
Автор: Петр ЛошинПонимание запахов кода и как рефакторинг может помочь
Автор: Джойдип Канджилалкласс
Автор: TechTarget Contributor
- Микросервисы против безголовой архитектуры: краткий обзор
Микросервисы и безголовые архитектуры — это методы, способные обеспечить гибкость и модульность, но как сделать. ..
- Как создать смарт-контракт с помощью Ethereum
Solidity — это мощный язык для программирования и развертывания смарт-контрактов в сети Ethereum. Вот как начать…
- 9языки программирования для разработки смарт-контрактов
Существуют языки специально для разработки смарт-контрактов, но вы также можете использовать языки общего назначения, такие как C++ и Java. …
- OKR против целей SMART в разработке программного обеспечения
OKR и SMART — это два подхода к постановке целей. Знание их различий и того, как реализовать каждое из них, необходимо для управления …
- Бесплатная вкладка Atlassian Jira DevSecOps открывает двери для расширения
Данные об управлении уязвимостями от партнеров Atlassian отображаются на новой вкладке «Безопасность в Jira» для облачных клиентов, устанавливая …
- Появляющееся удобство использования ChatGPT в разработке программного обеспечения
В руках творческого разработчика ChatGPT может стать полезным инструментом кодирования. Но генеративный ИИ вскоре может достичь …
- Сократите задержки с помощью правильной группы размещения AWS
При определении приоритета задержки в AWS оцените преимущества и ограничения групп размещения и то, как они подходят для желаемого облака…
- Облачная разработка все еще находится в стадии разработки для компаний
Пол Нашавати из Enterprise Strategy Group анализирует последний опрос исследовательской фирмы о состоянии облачных приложений…
- Эксперты по облачным технологиям оценивают состояние FinOps
Удивлены счетом за облачные услуги? Эксперты оценивают растущую популярность FinOps, искусство построения стратегии FinOps и …
- Правительственные учреждения США взломаны с помощью уязвимости MoveIt Transfer
Директор CISA Джен Истерли заявила, что «несколько» агентств США пострадали от вторжений через их экземпляры MoveIt Transfer, но не. ..
- Риск и повторение: Mandiant проливает свет на ESG-атаки Barracuda
Barracuda Networks попыталась исправить критическую уязвимость нулевого дня ESG, но китайская национальная государственная угроза смогла …
- Китайский национальный государственный деятель стоит за атаками Barracuda ESG
Компания Mandiant заявила, что атаки нулевого дня на устройства Barracuda Email Security Gateway были частью «широкомасштабной кампании в …
- AWS Control Tower стремится упростить управление несколькими учетными записями
Многие организации с трудом управляют своей огромной коллекцией учетных записей AWS, но Control Tower может помочь. Услуга автоматизирует…
- Разбираем модель ценообразования Amazon EKS
В модели ценообразования Amazon EKS есть несколько важных переменных. Покопайтесь в цифрах, чтобы убедиться, что вы развернули службу. ..
- Сравните EKS и самоуправляемый Kubernetes на AWS
Пользователи AWS сталкиваются с выбором при развертывании Kubernetes: запускать его самостоятельно на EC2 или позволить Amazon выполнять тяжелую работу с помощью EKS. См…
Абстрактные классы и методы — видеоучебник по Java
Из курса: Java Essential Training: Objects and APIs
Абстрактные классы и методы
“— [Рассказчик] Абстракция — это основной принцип объектно-ориентированного программирования. Абстракция определяется как нечто, существующее в теории, но не имеющее конкретного существования. В Java у нас есть зарезервированное слово abstract, которое не является модификатором доступа, который можно использовать в классах и методах. Он используется, когда вы хотите определить шаблон для класса или метода, но не собираетесь использовать его как есть. Абстрактный класс не предназначен для создания экземпляров. Он предназначен для расширения, тем самым перекладывая бремя реализации на подкласс. Например, форма — это абстрактное понятие. Возможно, он может указать некоторые общие поведения, которые будет иметь тип формы, но это слишком абстрактная концепция, чтобы на самом деле определить, каким должно быть это поведение. Таким образом, этот класс не может быть создан, но его цель состоит в том, чтобы служить суперклассом для расширения более конкретных подклассов. Абстрактный метод не имеет тела. Определяется только сигнатура метода. И он не предназначен для запуска как есть. Он предназначен для перезаписи подклассом. В этом случае мы знаем, что нужно уметь вычислять площадь фигуры, но то, как это делается, зависит от типа фигуры. Нет такой формулы, которую можно было бы добавить в тело метода вычисления площади в классе формы, потому что ее буквально не существует. Это должно быть шаблоном для установки стандарта, согласно которому любой подкласс формы должен обеспечивать поведение для этого метода. Здесь у нас есть класс формы, и мы определим абстрактный метод вычисления площади. Для этого нам нужно использовать зарезервированное слово abstract, которое не является модификатором доступа. Затем мы указываем тип возвращаемого значения, за которым следует имя метода. Затем добавляем список параметров. В нашем случае нам не нужны никакие параметры, поэтому мы оставим это поле пустым. И мы заканчиваем определение метода точкой с запятой. Вот и все. Вам не нужны фигурные скобки или тела для абстрактных методов. Но обратите внимание, что у нас есть ошибка. Это говорит о том, что абстрактный метод находится в неабстрактном классе. И если мы наводим курсор на ошибку класса, это говорит о том, что класс должен быть либо объявлен абстрактным, либо реализовать его абстрактные методы.