Метод абстрагирования и его формы
Абстрагирование означает отвлечение от каких-то свойств, сторон изучаемого явления и одновременно выделение других каких-то свойств. Оно выступает всеобщим методом познания. Это объясняется тем, что реальные объекты обладают множеством свойств, связей, отношений, которые человек не может воспринимать одновременно, поскольку его способности восприятия и мышления ограничены. В силу этого любой человек может постигать объект, упрощая его, выделяя какие-то одни стороны, игнорируя при этом другие, т.е. методом абстрагирования.
Абстрагирование может быть качественным и количественным. Формами качественного абстрагирования выступают: выделение ряда существенных признаков; обособление отдельного признака, который мыслиться как самостоятельное образование; идеализация. Формами количественной абстракции выступают усреднение, алгоритмизация тенденций.
Метод сравнения
Метод сравнения широко используется во всех областях, включая и процесс выработки решений.
С помощью этого метода сравниваются:
отчетные показатели с плановыми,
плановые показатели с возможными,
плановые показатели с показателями предшествующего периода,
показатели организации со среднеотраслевыми и показателями лучших фирм,
фактические действия с установленными нормами,
фактические качества работников (умения, навыки, знания) с требуемыми: способности работников, их потребности, степень удовлетворения потребностей,
цели, нормы, проекты, ресурсы, эффективность,
фактические оценки с декларируемыми,
имеющиеся методы с используемыми методами,
- имеющаяся информация с необходимой для решения проблем,
новые проблемы с уже известными.
Многие теоретические проблемы эффективности, заключающиеся в неопределенности тех или иных ее аспектов – в частности, области применения, виды, способы измерения, – коренятся в недостаточной конкретизации этого понятия, в непроработанности ее классификации. Отсутствие классификации видов эффективности приводит к тому, что общее понятие используется в различных конкретных ситуациях, без учета его модификации. Однако с его помощью принципиально невозможно описать различия между видами эффективности. Более того, общее понятие эффективности является качественным, а потому и не ориентирует на измерение эффективности.
Из сказанного следует, что понятие “эффективность” необходимо конкретизировать. Оно выработано экономической наукой и означает соотношение затрат и результатов деятельности. Экономическое происхождение понятия “эффективность” до сих пор сказывается на степени его разработанности. В частности, можно отметить, что применительно к коммерческим организациям данное явление не только хорошо изучено, но является и объектом управления.
П. Друкер – теоретик эффективного
менеджмента
5.1. Абстрагирование
Абстрагирование — метод научного познания в форме операции мысленного отвлечения от ряда свойств, связей и отношений исследуемого объекта, которые несущественны для решения поставленных задач. Операция отвлечения равносильна операции выделения в объекте существенных свойств, связей и отношений. Результат процесса абстрагирования называют абстракциями (с лат. — отвлечение) или абстрактными предметами.
Разовый цикл абстрагирования носит двухступенчатый характер.
Подготовка акта абстрагирования (отвлечения) состоит, во-первых, в установлении того, что является общим для многих предметов определенного класса. Так, например, подготовка к формированию абстракции «живое существо» требует обнаружения общего для всех живых существ и в то же время отличающего их от неживых объектов. Таким свойством является способность к обмену веществ. Для абстракции «человек» общим и существенным будут отличительные признаки сознательного отражения среды; для всех существующих товаров, которые могут обмениваться друг на друга, будет понятие меновой стоимости и т.д.
Во-вторых, в установлении независимости или пренебрежимо слабой зависимости изучаемых явлений от определенных факторов. Так, для решения задачи о моменте встречи движущихся друг к другу автомобилей отвлекаются от географического расположения исходных пунктов движения. Здесь важно только расстояние. Решающий задачу отвлечется от марки автомобилей, их масс и вообще от автомобиля, заменив их точками на отрезке пути, поскольку для решения задачи нужна только скорость. Более того, любые задачи окажутся неразрешимыми без процесса абстрагирования.
Вторая ступень абстрагирования, в собственном смысле акт отвлечения, состоит в замещении исследуемого объекта другим, эквивалентным, менее богатым по свойствам, выступающим в качестве «модели» первого.
Операция абстрагирования может применяться многократно как к реальным, так и абстрактным объектам. Переходя от одного уровня абстрагирования к другому, постепенно отвлекаясь от ряда свойств получают (в зависимости от задачи) абстракции все возрастающей степени общности, Так, например, отвлекаясь от множества свойств конкретного человека, можно построить абстрактную цепочку: мужчина — человек — живое существо — материальный объект — биологическая форма материи — материя. Как видно, высшие формы абстракции — это философские категории и их системы.
Исходя из различия целевых характеристик, в современной науке наиболее широкое применение находят абстракции следующих основных типов:
1. Изолирующая абстракция. Предполагает выделение свойств и отношений, присущих тому или иному предмету, мысленное отделение этих свойств и отношений от самого предмета, придание им статуса самостоятельного существования. Примерами таких абстрактных предметов могут служить понятия: растворимость, устойчивость надежность, красота, простота, белизна и т.д.2. Обобщающая абстракция. Здесь отвлекаются от индивидуальных особенностей и черт предметов с выделением таких их общих признаков, которые позволяют вводить в рассмотрение классы предметов. Так, используемые в металлообработке резцы, сверла, фрез протяжки, напильники, ножовки и т.п. с помощью обобщающей абстракции образуют понятие класса «металлорежущий инструмент».
3. Абстракция потенциальной осуществимости, при которой отвлекаются от реальных границ конструктивных возможностей человеческого сознания, связанных с ограниченностью жизни человека в пространстве и времени. С этой точки зрения бесконечность выступает уже не как непосредственно данная, актуальная, а как потенциально осуществимая. Эта абстракция лежит в основе конструктивной математики, теории алгоритмов, абстрактных автоматов и других теорий.
4. Абстракция как продукт идеализации, образованная посредством предельного абстрагирования от свойств реальных предметов. Полученные абстракции (идеализированные объекты) широко распространены в науке: точка, прямая, инерция, точечный электрический заряд, абсолютно черное тело, несжимаемая жидкость, сплошная среда, идеальный газ. Идеализированные объекты составляют важный арсенал понятий научного знания, без которого оно функционировать не может.
Система абстракций образует научный язык, посредством которого формируются и формулируются понятия: научный факт, научная проблема, научная идея, научная гипотеза, научный закон, научная теория.
Документация JDK 19 — Главная
- Главная
- Ява
- Java SE
- 19
Обзор
- Прочтите меня
- Примечания к выпуску
- Что нового
- Руководство по миграции
- Загрузить JDK
- Руководство по установке
- Формат строки версии
Инструменты
- Технические характеристики инструментов JDK
- Руководство пользователя JShell
- Руководство по JavaDoc
- Руководство пользователя средства упаковки
Язык и библиотеки
- Обновления языка
- Основные библиотеки
- HTTP-клиент JDK
- Учебники по Java
- Модульный JDK
- Руководство программиста API бортового регистратора
- Руководство по интернационализации
Технические характеристики
- Документация API
- Язык и ВМ
- Имена стандартных алгоритмов безопасности Java
- банок
- Собственный интерфейс Java (JNI)
- Инструментальный интерфейс JVM (JVM TI)
- Сериализация
- Проводной протокол отладки Java (JDWP)
- Спецификация комментариев к документации для стандартного доклета
- Прочие характеристики
Безопасность
- Руководство по безопасному кодированию
- Руководство по безопасности
Виртуальная машина HotSpot
- Руководство по виртуальной машине Java
- Настройка сборки мусора
Управление и устранение неполадок
- Руководство по устранению неполадок
- Руководство по мониторингу и управлению
- Руководство по JMX
Client Technologies
- Руководство по специальным возможностям Java
abc — Абстрактные базовые классы — Документация Python 3.
11.2Исходный код: Lib/abc.py
Этот модуль предоставляет инфраструктуру для определения абстрактной базы
классы (ABC) в Python, как указано в PEP 3119 ;
см. PEP, почему это было добавлено в Python. (см. также PEP 3141 и
Модуль номеров
, относящийся к иерархии типов для номеров на основе ABC.)
В модуле коллекций
есть несколько конкретных классов, производных от
азбуки; они, конечно, могут быть получены в дальнейшем. В дополнение collections.abc В подмодуле
есть несколько ABC, которые можно использовать для проверки того,
класс или экземпляр предоставляет определенный интерфейс, например, если он
hashable или если это сопоставление.
Этот модуль предоставляет метакласс ABCMeta
для определения ABC и
вспомогательный класс ABC
для альтернативного определения ABC через наследование:
- класс abc. ABC
Вспомогательный класс, имеющий
ABCMeta
в качестве метакласса. С этим классом, абстрактный базовый класс может быть создан простым производным отABC
избегая иногда запутанного использования метакласса, например:из abc импорта ABC класс MyABC (ABC): проходить
Обратите внимание, что тип
ABC
по-прежнемуABCMeta
, поэтому наследование отABC
требует обычных мер предосторожности в отношении использование метаклассов, так как множественное наследование может привести к конфликтам метаклассов. Можно также определить абстрактный базовый класс, передав метакласс ключевое слово и использоватьABCMeta
напрямую, например:из импорта abc ABCMeta класс MyABC (метакласс = ABCMeta): проходить
Новое в версии 3.4.
- класс абв.ABCMeta
Метакласс для определения абстрактных базовых классов (ABC).
Используйте этот метакласс для создания ABC. ABC может быть подклассом напрямую, и затем действует как смешанный класс. Вы также можете зарегистрировать несвязанный бетон классы (даже встроенные классы) и несвязанные ABC как «виртуальные подклассы» — эти и их потомки будут считаться подклассами регистрируемого ABC встроенной функцией
issubclass()
, но регистрация ABC не будет отображаться в их MRO (приказе разрешения метода) и не будет реализации, определенные регистрирующим ABC, могут быть вызваны (даже черезсупер()
). 1Классы, созданные с помощью метакласса
ABCMeta
, имеют следующий метод:- регистр( подкласс )
Зарегистрируйте подкласс как «виртуальный подкласс» этого ABC. Для пример:
из abc импорта ABC класс MyABC (ABC): проходить MyABC.register(кортеж) утверждать issubclass (кортеж, MyABC) утверждать isinstance((), MyABC)
Изменено в версии 3. 3: возвращает зарегистрированный подкласс, чтобы его можно было использовать в качестве декоратора класса.
Изменено в версии 3.4: Чтобы обнаружить вызовы
register()
, вы можете использовать методФункция get_cache_token()
.
Вы также можете переопределить этот метод в абстрактном базовом классе:
- __subclasshook__( подкласс )
(Должен быть определен как метод класса.)
Проверить, считается ли подкласс подклассом этого ABC. Это означает что вы можете настроить поведение
issubclass
далее без необходимо вызватьregister()
для каждого класса, который вы хотите рассмотреть подкласс АВС. (Этот метод класса вызывается из__subclasscheck__()
метод Азбуки.)Этот метод должен возвращать
True
,False
илиNotImplemented
. Если он возвращаетTrue
, подкласс считается подклассом этого ABC. Если он возвращаетFalse
, подкласс не считается подклассом эту азбуку, даже если она обычно была бы одной. Если он вернетсяNotImplemented
, проверка подкласса продолжается обычным механизм.
Для демонстрации этих концепций посмотрите на этот пример определения ABC:
класс Foo: def __getitem__(я, индекс): ... защита __len__(я): ... защита get_iterator (я): вернуть его (себя) класс MyIterable(ABC): @абстрактный метод защита __iter__(я): в то время как Ложь: урожайность защита get_iterator (я): вернуть себя.__iter__() @классметод защита __subclasshook__(cls, C): если cls MyIterable: если есть ("__iter__" в B.__dict__ для B в C.__mro__): вернуть Истина вернуть нереализованный MyIterable.register(Foo)
ABC
MyIterable
определяет стандартный итерируемый метод,__iter__()
, как абстрактный метод. Данная реализация здесь все еще можно вызывать из подклассов. Методget_iterator()
также является частью абстрактного базового классаMyIterable
, но не имеет для переопределения в неабстрактных производных классах.Определенный здесь метод класса
__subclasshook__()
говорит, что любой класс который имеет__iter__()
в своем__dict__
(или в одном из его базовых классов, доступ к через список__mro__
) также считаетсяMyIterable
.Наконец, последняя строка делает
Foo
виртуальным подклассомMyIterable
, хотя он не определяет метод__iter__()
(он использует итерируемый протокол старого стиля, определенный в терминах__len__()
и__getitem__()
). Обратите внимание, что это не сделаетget_iterator
доступен как методFoo
, поэтому предоставляется отдельно.
Модуль abc
также предоставляет следующий декоратор:
- @abc. abstractmethod
Декоратор, указывающий абстрактные методы.
Для использования этого декоратора требуется, чтобы метакласс класса был
ABCMeta
или происходит от него. Класс, имеющий метакласс, производный отABCMeta
не может быть создан, если все его абстрактные методы не и свойства переопределяются. Абстрактные методы можно вызывать с помощью любого нормальных «супер» механизмов вызова.abstractmethod()
можно использовать объявлять абстрактные методы для свойств и дескрипторов.Динамическое добавление абстрактных методов в класс или попытка изменить статус абстракции метода или класса после его создания поддерживается с помощью функции update_abstractmethods() .
abstractmethod()
влияет только на подклассы, полученные с использованием обычных наследование; «виртуальные подклассы», зарегистрированные в регистре ABC()
метод не влияет.Когда
abstractmethod()
применяется в сочетании с другим методом дескрипторов, он должен применяться как самый внутренний декоратор, как показано на следующие примеры использования:класс С(АВС): @абстрактный метод def my_abstract_method(я, arg1): . .. @классметод @абстрактный метод def my_abstract_classmethod (cls, arg2): ... @статический метод @абстрактный метод Def my_abstract_staticmethod (arg3): ... @свойство @абстрактный метод Def my_abstract_property (я): ... @my_abstract_property.setter @абстрактный метод def my_abstract_property (я, значение): ... @абстрактный метод защита _get_x (я): ... @абстрактный метод защита _set_x (я, значение): ... х = свойство (_get_x, _set_x)
Чтобы правильно взаимодействовать с механизмом абстрактного базового класса, дескриптор должен идентифицировать себя как абстрактный, используя
. Дескриптор класса__isabstractmethod__
. В общем случае этот атрибут должен бытьTrue
если какой-либо из методов, используемых для составления дескриптора, является абстрактным. Для Например, встроенное в Python свойство: . .. @свойство def __isabstractmethod__(я): вернуть любой (getattr (f, '__isabstractmethod__', False) для f in (self._fget, self._fset, self._fdel))
Примечание
В отличие от абстрактных методов Java, эти абстрактные методы могут иметь реализацию. Эта реализация может быть вызывается через механизм
super()
из класса, который переопределяет его. Это может быть полезно в качестве конечной точки для супервызов во фреймворке, использующем совместный множественное наследование.
Модуль abc
также поддерживает следующие устаревшие декораторы:
- @abc.abstractclassmethod
Новое в версии 3.2.
Устарело, начиная с версии 3.3: теперь можно использовать
classmethod
сabstractmethod()
, что делает этот декоратор излишним.Подкласс встроенного
classmethod()
, указывающий на абстрактный метод класса. В остальном это похоже наabstractmethod()
.Этот особый случай устарел, так как декоратор
classmethod()
теперь правильно идентифицируется как абстрактный при применении к абстрактному метод:класс С(АВС): @классметод @абстрактный метод def my_abstract_classmethod (cls, arg): ...
- @abc.abstractstaticmethod
Новое в версии 3.2.
Устарело, начиная с версии 3.3: теперь можно использовать статический метод
abstractmethod()
, что делает этот декоратор излишним.Подкласс встроенного
staticmethod()
, указывающий на абстрактный статический метод. В остальном это похоже наабстрактный метод()
.Этот особый случай устарел, так как декоратор
staticmethod()
теперь правильно идентифицируется как абстрактный при применении к абстрактному метод:класс С(АВС): @статический метод @абстрактный метод def my_abstract_staticmethod (аргумент): . ..
- @abc.abstractproperty
Устарело, начиная с версии 3.3: теперь можно использовать свойство
property.getter()
,property.setter()
иproperty.deleter()
сabstractmethod()
, что делает этот декоратор излишним.Подкласс встроенного
property()
, указывающий на абстрактный свойство.Этот особый случай устарел, так как декоратор
property()
теперь правильно идентифицируется как абстрактный при применении к абстрактному метод:класс С(АВС): @свойство @абстрактный метод Def my_abstract_property (я): ...
В приведенном выше примере определяется свойство только для чтения; вы также можете определить абстрактное свойство чтения-записи путем соответствующей маркировки одного или нескольких базовые методы как абстрактные:
класс С(АВС): @свойство защита х (я): . .. @x.setter @абстрактный метод защита х (я, значение): ...
Если только некоторые компоненты являются абстрактными, только эти компоненты должны быть обновлено для создания конкретного свойства в подклассе:
класс Д(С): @C.x.setter защита х (я, значение): ...
Модуль abc
также обеспечивает следующие функции:
- abc.get_cache_token()
Возвращает текущий токен кэша абстрактного базового класса.
Токен — это непрозрачный объект (поддерживающий проверку на равенство), идентифицирующий текущая версия кэша абстрактного базового класса для виртуальных подклассов. Маркер изменяется при каждом вызове
ABCMeta.register()
на любом ABC.Новое в версии 3.4.
- abc.update_abstractmethods( cls )
Функция для пересчета статуса абстракции абстрактного класса. Этот функция должна быть вызвана, если абстрактные методы класса были реализованы или изменены после его создания.