Кратко об абстракциях / Хабр
Бывает так что проект заходит в тупик, и дальнейшее его развитие становится невозможным. Не редко причиной такого провала становится неудачная архитектура, заложенная в начале разработки. Или приходится наблюдать споры о том какой из «двух стульев» лучше, а может даже участвовать и искренне не понимать, как оппонент может так думать!?
Тогда попробуем не много разобраться в абстракциях, откуда они берутся и что с ними делать.
Согласно Википедии Абстракция – это теоретическое обобщение как результат абстрагирования. В свою очередь абстрагирование – это отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков.
Из определения можно сделать вывод, что абстракцией может быть только осмысленное. При этом восприятие является лишь проекцией реального мира. Получается, что все размышления о реальном, являются размышлениями о наших моделях реального.
Абстракции формируют иерархии, и могут отождествляться как с частными сущностями, так и объединять схожие сущности в более высокоуровневые абстракции.
Абстракции в сознании
Кроме призмы восприятия, наши модели подвергаются ещё одному искажению: реальные сущности чрезвычайно сложны и имеют разные аспекты и параметры. При размышлении или разговоре о чём-то, всегда существует контекст, в котором существует модель. Причём иногда бывает так, что у собеседников этот контекст разный. И в довершение, наличие или отсутствие опыта (глобального) приводит к ещё большему изменению наших моделей в соответствие с этим опытом. В итоге у двух разных людей может быть очень разное восприятие одних и тех же сущностей реального мира.
Выходит, что каждый человек постоянно имеет дело с абстракциями, осталось научиться их явно видеть и управлять. Можно выдвинуть тезис, что программный код — это симуляция мышления, основанная на формализованных абстракциях. Поэтому, на мой взгляд, разработка ПО — это один из лучших тренажёров для прокачки абстрактного мышления.
Абстракции в разработке
Программные интерфейсы — это, пожалуй, самая явная формализованная абстракция. Отсекается все лишнее и остаётся только «что оно делает» без «как оно делает».
Реализуя интерфейс, мы создаём более реальную модель поведения или взаимодействия, которая уже может ответить на вопрос «как». Комбинируя интерфейсы между собой, мы можем создать общую архитектуру кода. При должном умении и сноровке архитектура, созданная таким образом, в будущем будет сохранять свою структуру. В то время как реализации составных интерфейсов могут изменяться до неузнаваемости.
Такая архитектура упрощает некоторые моменты в работе. Модульное тестирование сводится к написанию тестовых реализаций «соседних» абстракций и тестовых методов, сравнивающих вход и выход. Изоляция модулей позволяет безопасно проводить рефакторинг. Более того, если рефакторинг прошёл неудачно и всё сломалось, то откатывать придётся всего один модуль. Достаточно абстрагированный модуль может использоваться для схожих, но разных задач.
Пример
Есть модуль для обработки входных данных, есть несколько вариантов их получения: из базы данных; из файла; по http. Решить эту задачу можно, выделив общий интерфейс для получения данных и сделав по реализации для каждого канала и канал данных для тестирования. Теперь один обработчик с помощью параметра «канал данных» может решать несколько схожих задач. А если выяснится, что одна из реализаций кривая, то её можно будет переделать на затрагивая другие модули.
Абстракций больше не надо
Не бывает идеальных решений, так же и с абстракциями не всё так гладко. Во-первых, абстракции субъективны, они могут вызывать споры о том, где начинается одна и начинается другая. Также существует проблема чрезмерного абстрагирования, когда под каждый вид и тональность чиха создаётся своя абстракция. Во-вторых, это подход повышает сложность кода, добавляя новые сущности, и новые уровни иерархии.
Я уверен, что найдутся ещё недостатки этого подхода, часть из них будет субъективными, часть ситуационной, но будут иВо всём должен быть баланс. Для себя я вывел следующую памятку.
- Если пишется большой и важный модуль – лучше расцеплять его.
- Если модуль используется много и/или в разных местах – лучше скрыть его за абстракцией.
- Если модуль должен распространяться как отдельная библиотека – лучше использовать абстракции.
- Если возможно изменение алгоритмов или путей взаимодействия – лучше реализовывать взаимодействие абстракций.
- Если класс используется в другом классе и нигде больше – можно подумать об их объединении или оставить как есть.
- Если это маленькая «одноразовая» задача – лучше не заморачиваться с её усложнением.
- Если это модуль, который скорее всего никогда не будет меняться – можно вывести его интерфейс и лучше оставить внутри всё как есть.
Итого
Абстракции — это инструмент, встроенный в наше сознание, как и любой другой они имеют свои плюсы и минусы, но знание альтернатив только помогает находить лучший путь.
абстракция | это… Что такое абстракция?
АБСТРАКЦИЯ (от лат. abstractio — выделение, отвлечение или отделение) — теоретический прием исследования, позволяющий отвлечься от некоторых несущественных в определенном отношении свойств изучаемых явлений и выделить свойства существенные и определяющие. Это вовсе не означает, что несущественные свойства всегда являются такими при всех условиях. В других обстоятельствах несущественное свойство может стать существенным. Например, наблюдая движение воздушного шарика, мы можем отвлечься от сил гравитации, но при изучении падения массивных тел учет этих сил имеет существенное значение. Подобно этому, для установления зависимости между спросом и предложением приходится упрощать реальную ситуацию на рынке и отвлекаться от некоторых факторов. Мы абстрагируемся от них, чтобы легче было исследовать сложный процесс, зависящий от множества условий, и поэтому изучаем их по частям.
В научном познании различают несколько видов абстрагирования, простейшим из которых является «А. отождествления», когда у предметов некоторого класса выделяется определенное общее свойство, а от всех других свойств отвлекаются. Относительно выделенного общего свойства все предметы соответствующего класса являются тождественными, и поэтому оно может быть абстрагировано или отделено от других свойств. В результате этого образуются особые понятия, такие, напр., как тяжесть, стоимость, число.
Для «изолирующей А.» характерно отвлечение некоторых свойств и отношений изучаемых предметов и рассмотрение их как индивидуальных, самостоятельных объектов. Таковы, напр., белизна, яркость, доброта, дружба. Во всех этих примерах конкретное свойство, присущее реальным предметам, рассматривается как самостоятельный абстрактный объект.
Более сложный характер присущ А., связанным с образованием математических понятий, когда приходится отвлекаться от реальной возможности построения соответствующих математических объектов. Напр., в А. «потенциальной осуществимости» допускают осуществимость построения следующего объекта при наличии достаточного времени, пространства и материалов. Напр., вслед за данным натуральным числом N допускается возможность построения следующего за ним натурального числа N+1. На этой основе образуется, во-первых, А. и соответственно понятие «потенциальной бесконечности», а именно потенциальной возможности построения следующего объекта, если задан предыдущий объект. Поэтому натуральный ряд чисел рассматривается как неограниченно продолженный, поскольку допускается возможность прибавления к данному числу единицы и образование следующего натурального числа. Во-вторых, можно применить более сильную А. и образовать понятие «актуальной бесконечности», в котором отвлекаются от реальной возможности построения любого натурального числа и, кроме того, допускают возможность построения неограниченного множества чисел как актуально построенного, завершенного. Тем самым бесконечное множество чисел уподобляется конечному множеству.
Г.И. Рузавин
Любая разумная А. должна обладать определенным гносеологическим смыслом, соответствующим конкретной познавательной задаче.
Акты «чистого отвлечения» представляют собой информационный процесс в собственном смысле — процесс ограничения разнообразия. При этом полнота субъективного образа не превышает полноты наличных данных.
А этого, как правило, недостаточно для построения научных понятий высокого порядка. Следовательно, дальнейшая абстрагирующая работа мышления состоит в завершении (дорисовке) первичного образа, в восполнении результатов чистого отвлечения a priori мыслимым содержанием за счет идеализации или воображения. В этом случае А. выступает как творческий акт, реализующий «рискованный интеллектуальный замысел» (Э. Мах).
Чтобы снять или уменьшить «риск замысла», необходим анализ достаточных оснований, которые бы позволяли информацию, вовлеченную в процесс А., считать фактически независимой от прочих данных, посторонних для данной А. Выяснение того, какие именно характеристики целого (или среды) являются посторонними для абстрактного образа, — один из основных вопросов А. Напр., обоснованная возможность изучать протяженность тел независимо от их массы обеспечила начало геометрии как науки, а та же возможность, но в обратном порядке, — начало механики точки.
Коль скоро А. заявлена как научная, она ограничена в своем произволе не только соответствием фактам, но и условием логической непротиворечивости. Если А. непротиворечива, она обязательно имеет модель. Поэтому проблема выяснения непротиворечивости абстрактных объектов является одной из важнейших для современной теории доказательств. Наличие модели для абстрактных образов высокого порядка позволяет понять генезис А., ее связь с тем, что может быть «привязано» к эмпирическим фактам. Таким образом, ответ на вопрос о постороннем содержании обычно дает опыт. Но его может дать и логика. При этом существенно, что гносеологическое отношен и е может оборачиваться: индуктивный путь «опыт — А. » может заменяться дедуктивным путем « А. — опыт».
Возможность повернуть отношение, сделать А.
Исходная генетическая неполнота А. (в том числе и высокого порядка) обычно дополняется требованием ее адекватности. При этом, в отличие от принципиальной неполноты любого опыта, об А., вообще говоря, этого сказать нельзя. Методологически как раз существенно, то что энтропия опыта преодолевается именно за счет А. Это естественно приводит к гносеологическому понятию интервала А. как меры информационной емкости А., характеризующей ее «модельную реализуемость», а не только свободу (допустимость) отвлечения.
Являясь в целом рациональной предпосылкой познания, А. разнятся по типу их применимости и по особенностям их использования. Однако существуют и общенаучные А., необходимые как на первых шагах образования
Родственной обобщающей является А. отождествления, о которой тоже уже говорилось выше и в основе которой лежит явное указание на свойства отношения типа равенства, сопутствующего объектам, обладающим одинаковыми признаками. А. отождествления (по замыслу) не предполагает иных объектов (сущностей), кроме конструктивных — конкретных, индивидуально определенных. Но использование отношений типа равенства для разбиения любого непустого множества на классы одинаковых объектов, равных в данном отношении, создает, вообще говоря, условия для порождения объектов более общего (теоретико-множественного) вида. Посредством этой процедуры, называемой «принципом А.», формируются многие абстрактные понятия теории множеств.
Еще одной важной общенаучной А. следует считать «А. неразличимости». Эта А. возникает как обобщение классической философской идеи о тождестве неразличимых (principium identitatis indiscernibilium) на случай эмпирических ситуаций, когда отсутствует априорная информация об индивидуации исходных объектов анализа, а суждения об их тождестве и различии всецело зависят от информационных условий познания.
Наконец, к числу частнонаучных следует отнести А., связанные с двумя разными взглядами на бесконечность, поскольку эти взгляды «относятся, главным образом, к области метафизики и математики» (Г. Кантор) и соответствуют известному делению бесконечности на актуальную и потенциальную, о чем тоже упоминалось выше.
Большинство из названных выше А. получили явную формулировку лишь в недавнее время. Но общая научная постановка вопроса об А. восходит к античности, особенно к Аристотелю, для которого А. служила основной предпосылкой научного познания. Он считал, что А. «создает науку», так как наука исследует общее, а общее познается посредством А. Характерное для А. намеренно одностороннее представление реальности Аристотель оправдывал многообразием свойств (аспектов) целого, порою столь разных, что они не могут стать предметом одной науки. Аристотель указал также на важное отличие эмпирических А. от теоретических, полагая, что теоретические А. совершенно необходимы там, где постигаемое мыслью и сама мысль неотделимы друг от друга (как, напр., в математике, где знание и предмет знания по существу совпадают).
Однако аристотелевская концепция А. не получила должного развития ни в эллино-римской и средневековой философии, ни тогда, когда на смену схоластической «книжной науке» пришла опытная наука Нового времени с et императивом обязательного «исключения» А. Лишь к середине 19 в. духовная установка послесхоластической реформации (и лозунг «вместо А. — опыт») постепенно заменяется методологическим компромиссом. В гуманитарной области это относится, в первую очередь, к философскому методу, с помощью которого объективная диалектика развития осознается через развитие субъективной диалектики А. Но и в естественнонаучной методологии тех лет, в сущности далекой от осознанной диалектики понятий, применение абстрактных моделей «достигает поразительных результатов в объяснении явлений природы» (В.И. Вернадский). В результате даже позитивизм в известной мере принял этот компромисс, отводя абстрактным объектам не только руководящую роль в научном исследовании, но и признавая за ними некоторый «род реальности» (Э. Мах).
Научная мысль 20 в. обращается к теме А. Катализатором дискуссий на этот раз послужили А. теории множеств. Ее трансфинитная арифметика вводит абстрактные объекты слишком высокого порядка, чтобы застраховать теорию от парадоксов. А поскольку эта теория вкупе с классической логикой претендует на роль основы для всей математики, возникает определенное «чувство беспокойства относительно зависимости чистой логики и математики от онтологии платонизма» Beth E.W. The foundations of mathematics. Amsterdam, 1959. P. 471).
С этого момента усиливается дифференциация методологических подходов и способов мышления (по типу применяемых А. ) в современном научном (в особенности математическом) познании, стремление преодолеть возникший «кризис оснований» не только техническими средствами усовершенствования научных теорий, но также тем или иным решением гносеологических проблем А.
ММ. Новоселов
Лит.: Горский Д.П. Вопросы абстракции и образование понятий. М., 1961; Розов М.А. Научная абстракция и ее виды. Новосибирск, 1965; Петров Ю.А. Логические проблемы абстракций бесконечности и осуществимости. М., 1967; Яновская С.А. Методологические проблемы науки. М., 1972; Марков А.А. О логике конструктивной математики. М., 1972; Марков А.А., Нагорный Н.М. Теория алгорифмов. М., 1984; Кантор Г. Труды по теории множеств. М., 1985; Новосёлов М.М. Логика абстракций (Методологический анализ). 4.1. М., 2000; Ч. 2. М., 2003; Schneider H.J. Historische und systematische Untersuchungen zur Abstraction. Erlangen, 1970; Vuillemin J. La logique et le monde sensible. Etude sur les theories contemporaines de l’abstraction. P., 1971; Logic and abstraction. Goteborg, 1986; Pollard St. What is abstraction? // Nous. 1987. V. 2\. № 2; RoeperP. Principles of abstraction for events and processes // J. of philos. Logic. 1987. V. 16. № 3.
Энциклопедия эпистемологии и философии науки. М.: «Канон+», РООИ «Реабилитация». И.Т. Касавин. 2009.
Почему мы называем логические понятия абстрактными, когда логика специфична для конкретной ситуации?
Такие вещи, как предложения и предикаты, характерные для определенных логик.
Пример:
Если бы применялась только классическая логика, не все было бы возможно. (ЛЭМ и др.).
Многие логики говорят, что классическая логика неприменима универсально, и/или являются плюралистами, которые говорят, что в некоторых ситуациях применима другая логика.
Но если классическая логика запрещает что-либо быть ни истинным, ни ложным, приходит другая логика и может с этим справиться, мы можем сказать, что может быть то, что запрещает одна или несколько логик.
Таким образом, логика специфична для конкретной ситуации и универсальной логики не существует. А если и есть, то мы их точно не нашли.
Я ошибаюсь, думая, что прозвище «abstract» мешает этому? Абстрактное имплицитно подразумевает некоторое понятие универсальности, всеобщности, вневременности или акаузальности. Но ни одна ситуация не свободна от специфики, времени и причинности. Ни одна логика не применима повсеместно. И ничего нельзя полностью обобщить. То есть, опуская некоторые черты, мы еще не приходим к чему-то универсальному. Так что даже такое использование абстрактного не работает.
Кажется, действительно существуют определенные ситуации, которые мы можем выбирать для изучения. Меня смущают способы использования абстракции, которые я вижу, и я не понимаю, зачем мне это нужно и как это помогает. Меня не смущают предикаты и предложения, абстрагирующие естественный язык. Я сделал это. Но на этом процесс останавливается. Мы не превращаем ВОЛС в универсальное приложение. Все это ограниченные абстракции. Я полагаю (и могу ошибаться), что во многих случаях использования абстрактного подразумевается некое предельное понятие применимости или существования вне конечной ситуации. Почему еще платонические объекты называются абстрактными объектами?
Дополнение: Это как если бы вы рекомендовали конкретную логику, которая является дополнительным знанием, чем сама логика. Но если вы знаете, какую логику порекомендовать, вам не нужна логика напрямую. Если я хочу знать, какая самая высокая гора на моем острове, может быть, нелепо полагать, что кто-то может знать, какую логику использовать, не зная, какая самая высокая гора. Просто скажи им чертова гора.
Похоже, в конечном итоге все рушится и застаивается в ситуации->x. А потом я снова задаюсь вопросом, зачем использовать абстракцию. Как будто на каждый конкретный вопрос есть конкретный ответ.
- логика
- философия логики
- абстракция
1
Предположим, вы логический плюралист.
Несмотря на это, вы, вероятно, считаете, что объекты какой-либо предметной области лучше всего моделируются некоторой логикой L1. Например, вы можете полагать, что квантовая логика верна для физической реальности, что конструктивная вероятностная логика верна для эпистемологии, а классическая логика верна для математики.
*Обратите внимание, что это имеет место не в логическом смысле, а только в предварительном формальном понятии.
Но тогда вы все еще считаете, что каждая логика абстрагируется от деталей в своей конкретной области применения. отсюда и название.
6
Итак, абстракция — это просто форма обобщения, которую можно понимать как общий и расплывчатый процесс привязки коллекций вещей к идентификатору. С лингвистической точки зрения это когда графемы в сжатой форме сопоставляются с морфемами. Например, «х» — это буква, которая может обозначать семантическое выражение, предложение или даже отрывок. Из ВП:
Абстракция в своем основном смысле представляет собой концептуальный процесс, в котором общие правила и концепции выводятся из использования и классификации конкретных примеров, буквальных («реальных» или «конкретных») означающих, первых принципов или других методов. Результатом этого процесса является «абстракция» — понятие, которое действует как имя нарицательное для всех подчиненных понятий и связывает любые связанные понятия как группу, поле или категорию.
Это означает, что логика — это, по сути, изучение закономерностей логического вывода, а когда дело доходит до формальных систем логики, это обычно означает сосредоточение внимания на сильно символизированной версии логики, в которой переменные, отношения и значения представлены в очень простом виде. синтаксис, который отличается от семантики, но связан с семантикой в том, что он экономно представляет идею. Это имеет значение, потому что человеческий разум способен одновременно удерживать в уме так много, психологическая концепция, известная как фрагментация. Меньшее количество символов позволяет лучше запоминать и формирует основу для мнемонических стратегий. Возьмем простой пример:
Сократ на кухне. Если Сократ находится на кухне, мы можем заключить, что он в своем доме, и точно так же, если его нет в доме, мы можем заключить, что его нет на кухне. Если он в доме, и мы ничего больше не знаем, мы не можем с уверенностью заключить, что он на кухне. Он может быть в своей спальне. А если его нет на кухне, мы не можем сделать вывод, есть он или нет в доме. Это очень правдивый и содержательный текст, который направляет наше повседневное мышление, когда мы ищем Сократа или кого-то еще.
Но так получилось, что это можно выразить следующим образом:
- p затем q
- ~q, затем ~p
- q затем p или ~p
- ~p или ~q
Первый пример нашего текста выражен очень конкретно и на естественном языке. Второй пример выражен лаконично, абстрактно и является началом искусственного языка (хотя обычно считается, что языки имеют более сложную грамматику).
Загадка в том, почему это работает? Каким образом мы можем преобразовать естественный язык в краткую символическую форму, выполнить преобразования над выражениями, а затем прийти к форме, которая переводится обратно в естественный язык с часто гарантированным выводом? И что еще более важно, как мы можем продолжать строить формальные системы, которые более точно соответствуют человеческим рассуждениям?
Один из способов — наблюдать больше семантических особенностей в аргументации и добавлять операторы. Например, переходя от сентенциальной логики к логике предикатов первого порядка, становится возможным не только представлять предложения с помощью абстракций, но и предикацию внутри предложения. Теперь можно рассматривать элементы лингвистической модальности естественного языка, создавая модальные логики в широком смысле. И если заметить, что математическое теоретизирование в значительной степени является упражнением в построении языка, то снова можно более полно подражать естественному языку, отбросив некоторые из классических законов, которые когда-то рассматривались как Законы Мышления. Интуиционистская логика — одна из таких программ (и моя личная предвзятость). Продолжая изучать примеры умозаключений, можно увидеть дедукцию, индукцию и абдукцию также как абстракции. И, в конце концов, мы уходим от игрушечных конструкций пропозициональной логики и должны признать, что в неформальной логике существует довольно много предсказуемых рассуждений, которые, как правило, гораздо более специфичны для предметной области с точки зрения выводов. Модель Тулмина гораздо больше работает в семантической области, чем в синтаксической.
Итак, лучше всего рассматривать логику как изучение очень естественного, неформального дискурса, используемого людьми и связанного со здравым смыслом (который имеет серьезные последствия в отношении семантических отношений лингвистических категорий), до очень искусственных, формальных методов. которые допускают описание математическими функциями (которые лучше всего игнорируют семантику). Возможно, одним из самых сложных видов формальных систем являются системы теории моделей, которые включают абстрактные алгебраические методы в сочетании с формальными логическими методами, приводящими к способам делать выводы о наборе структур, чьи входы и выходы являются условиями истинности. Ярким примером интеллектуального вызова, результатом которого является попытка обработать абстракцию, является семантика Крипке.
8
Абстракция зависит от степени. Всякий раз, когда мы выполняем абстракцию, некоторые функции остаются постоянными, а другие обобщаются.
Например, в физике мы можем говорить об электростатической силе между двумя конкретными заряженными частицами. Затем мы можем абстрагироваться от этих конкретных частиц и записать общее выражение для электростатической силы между любой парой частиц с величиной зарядов и расстоянием между ними в качестве переменных. Затем мы можем абстрагироваться и написать некоторые общие уравнения поля, применимые для любого числа частиц. Постоянными здесь остаются интерпретации предикатов «заряд», «расстояние» и «сила». Обобщается область частиц и обстоятельств, в которых применяются предикаты.
Когда дело доходит до логики, мы абстрагируемся от предикатов, имен, функций и области квантификации и сохраняем фиксированными логические константы. Для конкретной логики, такой как классическая логика, константы ¬ ∧ ∨ ⊃ ∀ ∃ и т. д. имеют фиксированное значение, тогда как предикаты, имена и функции требуют интерпретации, чтобы иметь определенное значение. Таким образом, логика иногда описывается как «нейтральная к теме». Дело не в силах и зарядах, а в любых предикатах, которые мы выбираем. Это один из способов разграничения между тем, что является логикой, а что нет.
А теперь самое интересное. Как вы указываете в своем вопросе и комментариях, существует много логики. Если предполагается, что логика абстрагируется от всех обстоятельств, свойств, отношений и т. д., то почему их так много и почему некоторые из них кажутся применимыми в одних случаях, а не в других? Разве логика не должна быть высшим уровнем абстракции?
С плюралистической точки зрения на логику ответ отрицательный или, по крайней мере, неоднозначный. Можно сказать, что разные логики имеют разную семантику. Классическую логику естественно понимать как логику четких, двузначных значений истинности, где каждое предложение однозначно либо истинно, либо ложно, и где аргумент действителен, если он сохраняет истину от предпосылок до заключения. Эта идея о том, что сохраняется от предпосылок до заключения обоснованного аргумента, является полезным способом характеристики различных логик. Интуиционистскую логику можно понимать как имеющую семантику гарантированной утверждаемости, где валидность сохраняет утверждаемость от посылок до заключения. Логика вероятностей сохраняет высокую степень уверенности от посылок до выводов. Трехзначная логика сохраняет назначенные значения. Логике релевантности можно придать естественную семантику передачи информации, при которой действительный аргумент сохраняет целостность информации. Логика доказуемости сохраняет то, что доказуемо в рамках формальной системы. Линейная логика имеет несколько видов естественной семантики, одним из которых является сохранение целостности взаимодействия, связанного с ресурсами.
Мы могли бы задаться вопросом, есть ли над всем этим уровень абстракции, своего рода металогика, которая включает в себя все остальные? Возможно, эту роль могла бы выполнять версия классической логики, если бы она была оснащена многочисленными модальными расширениями. Хотя такое утверждение было бы весьма спорным.
Что такое абстракция данных в программировании и управлении базами данных?
К
- Роберт Шелдон
Абстракция данных — это сведение определенного массива данных к упрощенному представлению целого. Абстракция, в общем, представляет собой процесс удаления характеристик из чего-либо, чтобы свести его к набору основных элементов. С этой целью абстракция данных создает упрощенное представление базовых данных, скрывая при этом их сложности и связанные с ними операции. В вычислительной технике абстракция данных обычно используется в объектно-ориентированном программировании (ООП) и при работе с системой управления базами данных (СУБД).
Что такое абстракция данных в ООП?Современные языки программирования, в которых используются методологии ООП, обычно используют абстракцию данных, чтобы скрыть низкоуровневые детали программных конструкций, определяющих базовую логику, что, в свою очередь, упрощает и оптимизирует процесс разработки. Объектно-ориентированное программирование организует разработку программного обеспечения вокруг объектов данных, а не функций или логики. Абстракция данных — ключевая характеристика ООП, реализуемая с использованием классов и объектов.
Класс — это определение шаблона, которое объединяет связанные атрибуты и методы в именованный пакет. Это особый тип объекта, который служит образцом для создания других объектов. Кроме того, класс может включать в себя подклассы, которые наследуют некоторые или все атрибуты и методы класса, что приводит к типу иерархии классов. Подклассы также могут определять свои собственные атрибуты и методы.
Объект — это именованный экземпляр класса, созданный с использованием специально определенных данных. Атрибуты объекта уникальны среди других объектов того же класса. Объект служит простым представлением класса, абстрагируя детали реализации самого класса. Таким образом, разработчики могут сосредоточиться в первую очередь на объектах и способах манипулирования ими, а не на том, как реализовать лежащую в их основе логику.
Предположим, например, что группа разработчиков создает приложение для отдела кадров организации. Приложение содержит класс Employee, который включает такие атрибуты, как имя, фамилия, контактная информация, профессиональные навыки и другую соответствующую информацию. Класс Employee также включает несколько методов, в том числе один для обновления списка профессиональных навыков сотрудника. Из этого класса приложение может создавать экземпляры объектов, имеющих доступ к этим свойствам и методам, без необходимости их повторного создания для каждой записи сотрудника, что помогает упростить общий процесс разработки приложения.
Поскольку класс предоставляет шаблон для создания объектов, разработчики могут создавать эти объекты так часто, как это необходимо, не заботясь о том, как класс реализует базовую логику, и не реконструируя одну и ту же логику каждый раз, когда требуется объект Employee. Например, приложение может вызвать метод обновления профессиональных навыков, не заботясь о том, как выполняется обновление. Все свойства и методы уже определены, независимо от того, нужны они или нет при создании экземпляра отдельного объекта. Таким образом, основные сложности реализации абстрагируются и скрываются на протяжении большей части усилий по разработке.
На этой диаграмме показан пример структуры и именования в ООП. Что такое абстракция данных в СУБД?Абстракция данных также используется с базами данных, чтобы скрыть лежащие в основе сложности того, как данные хранятся и управляются. Представление данных, которое есть у пользователей, сильно отличается от того, как данные сохраняются в хранилище. Абстракция данных применительно к базам данных обычно делится на три уровня:
- Просмотр слоя. На этом уровне пользователь видит данные в том виде, в каком они представлены интерфейсом приложения. Пользователь может иметь возможность взаимодействовать с данными или может только просматривать их. В любом случае пользователь обычно имеет доступ только к определенным типам данных, имеет очень ограниченное представление о данных в целом и не имеет представления о том, как и где данные хранятся.
- Логический уровень. Этот уровень обеспечивает концептуальное понимание данных. Он описывает тип данных и то, как эти данные связаны. Вы можете думать об этом уровне как о диаграмме отношений сущностей (ERD), которая размещает объекты данных как план и показывает, как они связаны.
- Физический уровень. Этот уровень фокусируется на физическом хранилище данных. Это связано с тем, где и как хранятся данные, как управляются файлы, тип хранилища и все остальное, связанное с физическим обслуживанием данных.
Нет установленных правил, определяющих, как должны быть реализованы уровни абстракции данных. Это будет зависеть от типа системы базы данных, от того, как производитель спроектировал платформу, как администраторы внедрили эту платформу, как были смоделированы данные и приложения, используемые для доступа к данным.
Независимо от подхода абстракция данных остается важным компонентом любой СУБД, поскольку она позволяет пользователям легко работать с данными, позволяя вносить изменения на серверной части без нарушения работы клиентских приложений. Например, администратор базы данных должен иметь возможность изменить место хранения файла базы данных, не затрагивая приложения, извлекающие данные из этого файла. Разработчик базы данных должен даже иметь возможность изменить макет таблицы, если уровень абстракции находится сверху и может принять изменения. Абстракция данных обеспечивает максимальную гибкость в поддержке меняющихся бизнес-требований и внедрении новых приложений.
techtarget.com/whatis/definition/data-abstraction&enablejsapi=1&origin=https://www.techtarget.com» type=»text/html» frameborder=»0″>Узнайте о различии между СУБД и РСУБД и функционального и объектно-ориентированного программирования .
Последнее обновление: июнь 2022 г.
Продолжить чтение Об абстракции данных- Разработчики востребованных языков программирования должны знать
- 11 языков облачного программирования, которые необходимо знать разработчикам
- Оценка различных типов продуктов СУБД
- Что нужно знать о программном обеспечении для повышения производительности баз данных
- 5 способов управления несколькими источниками данных для высокопроизводительных приложений
электронная библиотека
Электронная библиотека представляет собой набор цифровых объектов, таких как книги, журналы, аудиозаписи, видеозаписи и другие документы, доступные в электронном виде.
Сеть
- система управления сетью
Система управления сетью, или NMS, представляет собой приложение или набор приложений, которые позволяют сетевым инженерам управлять сетевыми …
- хост (в вычислениях)
Хост — это компьютер или другое устройство, которое обменивается данными с другими хостами в сети.
- Сеть как услуга (NaaS)
Сеть как услуга, или NaaS, представляет собой бизнес-модель для предоставления корпоративных услуг глобальной сети практически на основе подписки.
Безопасность
- обратная атака грубой силы
Атака методом обратного перебора — это тип атаки методом перебора, при которой злоумышленник использует общий пароль против нескольких …
- Защита от эксплойтов Защитника Windows
Microsoft Windows Defender Exploit Guard — это программное обеспечение для защиты от вредоносных программ, обеспечивающее защиту от вторжений для пользователей ОС Windows 10.
- SOC 3 (системный и организационный контроль 3)
В отчете System and Organization Controls 3 (SOC 3) излагается информация, относящаяся к внутреннему контролю обслуживающей организации …
ИТ-директор
- цифровой прорыв
Цифровой прорыв — это изменение, которое происходит, когда новые цифровые технологии и бизнес-модели влияют на ценностное предложение …
- управление потоком создания ценности
Управление потоком создания ценности — это новый бизнес-процесс, предназначенный для измерения потока ценности в бизнес-ресурсы и …
- программа аудита (план аудита)
Программа аудита, также называемая планом аудита, представляет собой план действий, в котором документируются процедуры, которым аудитор будет следовать для проверки …
HRSoftware
- командное сотрудничество
Совместная работа в команде — это подход к коммуникации и управлению проектами, который делает упор на командную работу, новаторское мышление и равенство .