Пример абстракция: Абстракция — ключ к простому коду / Хабр

Абстракция потенциальной осуществимости – Гуманитарный портал

Абстракция потенциальной осуществимости — это метод мысленного отвлечения, применяемый в рамках одной из наиболее сложных разновидностей идеи бесконечности (см. Бесконечное и конечное) — идеи так называемой потенциальной бесконечности как процесса неограниченных количественных изменений. Представление о неограниченном развитии какого-либо конструктивного процесса, будучи конкретным воплощением этой идеи, требует совершения всевозрастающего количества конструктивных актов, и попытки реального их осуществления, даже в том случае, когда начальные шаги процесса осуществимы фактически, рано или поздно сталкиваются с препятствиями чисто материального характера: для совершения очередного акта недостаёт времени, места или материала. Абстракция потенциальной осуществимости представляет собой решение отвлекаться от всей совокупности осложнений указанного рода, считать их несущественными.

Тем самым шаги, осуществимость которых носит лишь воображаемый характер, начинают мыслиться совместно и равноправно с реально выполнимыми. Так, мысленно рассматривая конструктивный процесс (см. Конструктивный процесс) построения натурального ряда 0, 1, 2, … (процесс принципиально незавершаемый), принимается решение, что совместно и равноправно со всяким натуральным числом n рассматривается и следующее за ним число n + 1. Мысленно осуществляя вывод в рамках какой-либо дедуктивной теории, предполагается считать, что вслед за любым шагом этого вывода может быть совершён ещё один. То же самое абстракция потенциальной осуществимости разрешает делать и в применении к любому конструктивному процессу: представив выполненным определённый этап этого процесса, можно согласиться мыслить процесс продвинутым (согласно правилам его развёртывания) ещё на один шаг.

В логическом аспекте (см. Логика) принятие абстракции потенциальной осуществимости ведёт к обоснованию метода полной (совершенной)

индукции (см.  Индукция). Наряду с абстракцией отождествления (см. Абстракция отождествления) абстракция потенциальной осуществимости является необходимой предпосылкой построения абстрактной теории конструктивных процессов и конструктивных объектов. Это определяет её исключительную роль в методологии математики, в особенности в конструктивном направлении, в котором в качестве объектов рассмотрения допускаются лишь конструктивные объекты, а высказывания об их существовании понимаются как высказывания об их потенциальной осуществимости. Абстракция потенциальной осуществимости применяется и в рамках теоретико-множественной программы Г. Кантора, но в этом случае наряду с этой абстракцией употребляется гораздо более далеко идущая
абстракция актуальной бесконечности
(см. Абстракция актуальной бесконечности). Кроме математики абстракция потенциальной осуществимости играет важную роль при анализе многих ситуаций, возникающих в логике и в других дедуктивных науках. Некоторые её ослабления, учитывающие ограничения на длину процессов, сложность шагов и промежуточных данных и так далее, применяются в ряде смежных разделов теории алгоритмов и теоретической кибернетики.

Термин «абстракция потенциальной осуществимости» был впервые введён в употребление А. А. Марковым в ходе анализа математических абстракций, предпринятого им в связи с разработкой основ конструктивного направления в математике. Отмечая, что абстракция потенциальной осуществимости, как и абстракция актуальной бесконечности, включает в себя известный элемент воображения, он тем не менее указывал на то, что в отношении отхода от действительности абстракции эти находятся на двух качественно различных уровнях.

  • Марков А. А. Теория алгорифмов. — Труды математического института имени В.  А. Стеклова, т. 42. — М., Л., 1954.
  • Марков А. А. О конструктивной математике. — Труды математического института имени В. А. Стеклова, т. 67. — М., Л., 1954.
  • Марков А. А. О логике конструктивной математики. — М., 1972.
  • Марков А. А., Нагорный Н. М. Теория алгорифмов. 2-е издание. — М., 1996.
  • Щанин Н. А. Конструктивные вещественные числа и конструктивные функциональные пространства. — Труды математического института имени В. А. Стеклова, т. 67. — М., Л., 1962.

Абстракция отождествления — Психологос

01 октября 2022 г., 21:23

Абстракция отождествления — один из видов абстракции, когда мысленно отвлекаются от несходных, различающихся свойств предметов и одновременно вычленяют общее свойство рассматриваемых предметов. То есть отождествляют эти предметы в каком-то отношении. Это не значит, что исследуемые предметы или явления полностью тождественны. Для абстракции отождествления достаточно частичного тождества. Установление полного тождества означает, что перед исследователем находится один и тот же объект. Абстракция отождествления применяется, например, в том случае, когда отождествляются одинаковые слова и при этом отвлекаются от имеющихся различий между ними. В результате такого отождествления (уподобления) предметов, находящихся в отношении равенства, и отвлечения от всех различий создается возможность более глубокого изучения предмета. Этот вид абстракции считается в математике и математической логике одним из основных видов абстракции. В дореволюционных учебниках логики данный вид абстракции иногда называли обобщающей абстракцией.

Применение абстракции отождествления в математике показано на примере образования понятия «число». Процесс абстрагирования начинается с установления отношения равенства между исследуемыми множествами объектов. Для определения числа это означает прежде всего нахождение взаимнооднозначного соответствия между множествами, которое характеризуется тремя важнейшими свойствами: симметричностью, транзитивностью и рефлексивностью. Когда установлено, что между определенными объектами существует отношение со свойствами, симметричности, транзитивности и рефлексивности, то с помощью такого отношения, которое аналогично отношению равенства, выделяется некоторое общее свойство, присущее всем этим объектам.

  • Философские термины
  • Философия

Комментарии (0):

Материалы по теме:

01 окт. 2022 г.

Абстрагирование

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

0Подробнее

01 окт. 2022 г.

Абстракция

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

0Подробнее

Содержание

Новые статьи:

  • Семь нот счастья. Офицеры.
  • Установить ребенку границы
  • Я покупаю много лишнего
  • Культура жалости и культура благотворительности
  • Современный гуманизм порождает больное общество

Популярные статьи:

  • Интерактивная игра «Дорогой, давай поженимся!»
  • Как воспитать достойного человека. Опыт А.С. Макаренко
  • Читаем стихи, тренируем интонации: «Песнь о мудрой жене»
  • Дорога к морю
  • Волшебный душ

Хиты недели:

  • Читаем стихи, тренируем интонации: «Песнь о мудрой жене»
  • Я покупаю много лишнего
  • Как правильно формулировать цель в работе над собой
  • Дорога к морю
  • Лучшие мультики в духе синтон-подхода

Абстракция данных в Python — Темы масштабирования

Введение

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

Пример, который мы видели выше, является одним из примеров абстракции в реальной жизни. В объектно-ориентированном программировании мы будем называть это «абстракцией данных». Давайте определим абстракцию данных:

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

Основное внимание в абстракции данных уделяется разделению интерфейса и реализации программы.

Прежде чем приступить к этой статье, вы должны иметь некоторое представление о следующих темах программирования на Python:

  • Класс в Python
  • Абстрактный класс в Python
  • Концепции ООП в Python

Абстракция данных в ООП

Абстракция действительно полезна для упрощения сложных задач и кодов при использовании в объектно-ориентированном программировании. Это снижает сложность для пользователя, делая соответствующую часть доступной и пригодной для использования, оставляя ненужный код скрытым. Кроме того, бывают случаи, когда мы не хотим раскрывать конфиденциальные части нашей реализации кода, и именно здесь абстракция данных также может оказаться очень функциональной.

С точки зрения программиста, если мы думаем об абстракции данных, это нечто большее, чем просто сокрытие ненужной информации. Еще один способ думать об абстракции — это синоним обобщения. Если, например, вы хотите создать программу, которая умножает восемь на семь, вы не будете создавать программу, которая будет умножать только эти два числа.

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

Абстракция данных в Python

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

Наследование в ООП — это способ, посредством которого один класс наследует атрибуты и методы другого класса. Класс, свойства и методы которого наследуются, называется родительским классом. И класс, который наследует свойства от родительского класса, является дочерним классом/подклассом.

Основной синтаксис для реализации наследования в Python:

 
 class parent_class:
тело родительского класса
класс дочерний_класс (родительский_класс):
тело дочернего класса
 

Давайте теперь поговорим об абстрактных классах в Python:

Абстрактные классы в Python

Абстрактный класс: Классы, которые не могут быть созданы. Это означает, что мы не можем создавать объекты абстрактного класса, и они предназначены только для наследования. Затем объект производного класса используется для доступа к функциям базового класса. Они специально определены, чтобы заложить основу для других классов, демонстрирующих общее поведение или характеристики.

Абстрактный класс — это интерфейс. Интерфейсы в ООП позволяют классу наследовать данные и функции от базового класса, расширяя его. В Python мы используем NotImplementedError, чтобы ограничить создание экземпляра класса. Любой класс, имеющий эту ошибку внутри определений методов, не может быть создан.

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

Рассмотрим пример создания абстрактного класса Fruit. Мы получаем два класса Mango и Orange от класса Fruit, которые реализуют методы, определенные в этом классе. Здесь класс Fruit является родительским абстрактным классом, а классы Mango и Apple становятся подклассами/дочерними классами. Мы не сможем получить доступ к методам класса Fruit, просто создав объект, нам придется создавать объекты производных классов: Mango и Apple для доступа к методам.

Зачем использовать абстрактный базовый класс?

Определение абстрактного базового класса позволяет нам создать общий интерфейс прикладного программирования (API) для нескольких подклассов. Это полезно при работе в больших командах и базах кода, так как нет необходимости запоминать все классы, а также предоставлять их в виде библиотеки третьими лицами.

Работа с абстрактным классом

В отличие от других языков программирования высокого уровня, Python не предоставляет сам абстрактный класс. Для этого мы используем модуль abc Python, который предоставляет базу и необходимые инструменты для определения абстрактных базовых классов (ABC). ABC дают возможность виртуальных подклассов, которые являются классами, которые не наследуются от класса и все же могут быть распознаны

 
 экземпляр()
 

и

 
 issubclass()
 

С помощью этого модуля мы можем создавать собственные ABC.

 
 из abc импорта ABC
класс MyABC (ABC):
проходить
 

Модуль abc предоставляет метакласс ABCMeta для определения ABC и вспомогательный класс ABC для альтернативного определения ABC посредством наследования. Модуль abc также предоставляет декоратор @abstractmethod для обозначения абстрактных методов.

ABC определяется таким образом, что абстрактные методы в базовом классе создаются путем декорирования ключевым словом @abstractmethod, а конкретные методы регистрируются как реализации базового класса.

Конкретные методы в абстрактном базовом классе Python

Теперь мы знаем, что используем абстрактные классы в качестве шаблона для других классов с аналогичными характеристиками. Используя это, мы можем определить структуру, но не обязательно предоставлять полную реализацию для каждого метода, например:

 
 from abc import ABC, abstractmethod
класс MyClass(ABC):
 @абстрактный метод
 определить мой метод (я):
  #пустое тело
  проходить
 

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

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

 
 из abc import ABC, abstractmethod
Родительский класс (ABC):
  #общая функция
  определение common_fn (я):
    print('В общем методе Parent')
 @абстрактный метод
  def abs_fn(self): #предполагается, что в дочерних классах должна быть другая реализация
    проходить
класс Child1 (родитель):
  деф abs_fn (я):
    print('В абстрактном методе Child1')
класс Child2 (родитель):
  деф abs_fn (я):
    print('В абстрактном методе Child2')
 

Абстрактный класс может иметь как абстрактные, так и конкретные методы.

Теперь мы можем получить доступ к конкретному методу абстрактного класса, создав экземпляр объекта дочернего класса. С его помощью мы также можем получить доступ к абстрактным методам дочерних классов. Следует иметь в виду следующие интересные моменты:

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

Примеры абстракции данных

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

 
 из abc импорта ABC, абстрактный метод
 
класс животных (ABC):
 
    #бетонный метод
    определение сна (я):
        print("Я скоро пойду спать")
 
    @абстрактный метод
    звук определения (я):
print("Эта функция предназначена для определения звука любого животного")
        проходить
 
класс Змея (Животное):
    звук определения (я):
        print("Я могу шипеть")
 
класс Собака(Животное):
    звук определения (я):
        print("Я умею лаять")
 
класс Лев(Животное):
    звук определения (я):
        print("Я умею рычать")
       
класс Кошка(Животное):
    звук определения (я):
        print("Я умею мяукать")
 

Наш абстрактный базовый класс имеет конкретный метод sleep(), который будет одинаковым для всех дочерних классов. Таким образом, мы не определяем его как абстрактный метод, что избавляет нас от повторения кода. С другой стороны, звуки, которые издают животные, все разные. Для этой цели мы определили метод sound() как абстрактный метод. Затем мы реализуем его во всех дочерних классах.

Теперь, когда мы создаем экземпляр объекта дочернего класса, мы можем получить доступ как к конкретным, так и к абстрактным методам.

 
 с = Кошка()
с.спать()
c.звук()
 
с = Змея ()
c.звук()
 

Это даст вывод как:

 
 Я собираюсь спать через некоторое время
я могу мяукать
я могу шипеть
 

Теперь, если мы хотим получить доступ к функции sound() самого базового класса, мы можем использовать объект дочернего класса, но нам придется вызывать его через super().

 
 класс Кролик (Животное):
    звук определения (я):
        ультразвук()
        print("Я умею пищать")
 
с = Кролик ()
c.звук()
 

Это даст следующий результат:

 
 Эта функция предназначена для определения звука любого животного. 
я могу пищать
 

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

 
 класс Олень (Животное):
    звук определения (я):
        проходить
 
с = Олень ()
c.звук()
с.спать()
 

Это приведет к следующей ошибке:

 
 Трассировка (последний последний вызов):
  Файл "F:/Python/Test/Parent.py", строка 38, в 
    с = Олень ()
TypeError: не удается создать экземпляр абстрактного класса Deer с помощью абстрактных методов.
 

ПРИМЕЧАНИЕ: Если в базовом классе было более одного абстрактного метода, все они должны быть реализованы в дочерних классах, иначе возникает ошибка.

Почему важна абстракция данных?

Теперь, когда мы знаем, что такое абстракция данных в Python, мы можем сделать вывод, насколько она важна.

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

Заключение

Теперь, когда мы узнали об абстракции данных в Python, вспомните и попытайтесь ответить на некоторые вопросы для лучшего понимания:

  • Попробуйте придумать пример «абстракции» из вашей повседневной жизни.
  • Как вы думаете, почему абстракция данных может быть полезна?
  • Как можно добиться абстракции в Python?
  • Что следует помнить об абстрактных и конкретных методах при работе с абстрактными классами?

См. также:

  • Итераторы в Python.
  • Декораторы Python.
  • Я в Python.

Лестница абстракции — Ешьте

«Лестница абстракции» — одна из моих любимых концепций, помогающих написать что-то, что стоит прочитать. Пишете ли вы научную статью, пост в Facebook или стихотворение, в какой-то степени вы уже можете использовать лестницу абстракции, не улучшая свое письмо. Тем не менее, понимание концепций поможет вам пересмотреть и обдумать свое письмо по-новому.

Определение некоторых терминов

Прежде чем мы перейдем к этой лестнице, давайте определим несколько понятий. Во-первых, слово «абстрактный»: согласно онлайн-словарю Google прилагательное «абстрактный» означает «существующий в мысли или в виде идеи, но не имеющий физического или конкретного существования». Абстрактные идеи — великие. Это понятия, которые нельзя потрогать или попробовать на вкус — их нужно визуализировать. Любовь, справедливость, честь, красота, свобода, грация, богатство, доброта, истина, счастье и т. д. Если вы можете поставить перед словом «то, что есть» и написать об этом целую книгу, то это довольно абстрактно.

Во-вторых, мы должны определить антоним абстрактного, «конкретный». Опять же, согласно Google, бетон означает «существующий в материальной или физической форме; настоящий или твердый; не абстрактно». Конкретные слова — это осязаемые вещи, которые мы понимаем с помощью наших органов чувств. Клавиатура, на которой я это пишу, — это конкретный объект. Ключи в моем кармане. Пряный гамбо, который я съел на ужине, на который я ходил прошлой ночью.

Лестница абстракции

Итак, теперь Лестница абстракции, концепция, впервые предложенная С.И. Хаякавой в его книге   Язык в мыслях и действиях. Хаякава заметил, что письмо можно разбить на абстрактные и конкретные идеи, а лестница помогает показать различные уровни абстракции. Например, на картинке выше самым конкретным является конкретная осязаемая вещь: моя копия «Убить пересмешника ». Но по мере того, как вы поднимаетесь по лестнице, это становится все более и более общим и охватывает все больше и больше вещей.

Система классификации животных — хороший пример лестницы абстракции:

Домен гораздо более абстрактен, вид наиболее конкретен. Хотя если бы вы видели конкретного волка, то могли бы получить более конкретную, даже тогда систему классификации. Если бы вы хотели обсудить достоинства всех живых существ, в том числе и волков, и это было бы более абстрактно.

Допустим, я иду на прогулку к леднику Менденхолл в Джуно, Аляска, мой родной город. Год 2006. Зима, и за озером я вижу волка.

«Эй, смотри, это Ромео!» Я говорю. (Если вам интересно, читайте больше о Ромео здесь). Ромео был особенным волком, одним индивидуальным существом, самой нижней ступенью лестницы абстракции.

«Интересно, что за волк Ромео?» Я мог бы спросить себя. Я иду к периодической таблице и узнаю, что он из рода серых волков. В мире есть много других серых волков, так что это ступенька вверх по лестнице. Я вижу, что Ромео играет с соседскими собаками. Почему собаки? Что ж, на следующей ступени находится его род, canis, в который входят собаки. Они являются частью одного рода. Во всяком случае, вы получаете картину.

Поскольку абстрактное и конкретное — две противоположные стороны спектра, ваша лестница может иметь столько ступеней, сколько вы хотите. Для простоты в лестнице Хаякавы было четыре ступени.

  Четвертый уровень:   Абстракции   Примеры : Жизнь, красота, любовь, время, успех, сила, зло, добро
  Третий уровень: Широкая группа имен с небольшой спецификацией   Примеры : Люди, женщины, молодежь, промышленность, цели, вещи, телевидение
  Второй уровень:   Более определенные группы   Примеры : подростки, средний класс, швейная промышленность, университетский городок, телевизионные драмы, комнатные растения
  Первый уровень:   Конкретные, идентифицируемые существительные   Примеры : Nike Air Jordan; моя черно-белая собака Соло; Дилемма всеядного; Новый ребенок моего друга.

 

И что?

 (@drletizia)

 

Так почему я болтаю об абстракции, конкретике и этой чертовой лестнице?

По словам Яна Стревера: «Большая часть письма содержит ряд уровней абстракции, но успешных профессиональных писателей активно используют абстракции первого уровня . Изощренность мысли имеет дело с областью абстракции, но изощренность письма достигается за счет поддержки этих абстракций конкретными деталями» (Чунг).

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *