Причуды абстракций / Хабр
За годы преподавания и коммерческой разработки я повстречал много студентов и разработчиков, которые не до конца понимают смысл слова абстракция. Из многочисленных попыток разъяснить смысл этого термина получилась настоящая статья. Что Вы найдете под катом:
- Определение понятия абстракции и объяснение откуда оно взялось в ООП.
- Объяснение на простых примерах, что такое барьер абстракции, побочный эффект абстракции.
- Как получается хардкод.
Что такое абстракция?
Википедия определяет абстракцию и процесс абстрагирования следующим образом:
Абстра́кция (от лат. abstractio — отвлечение) — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.
В европейской философии и логике абстрагирование трактуется как способ поэтапного продуцирования понятий, которые образуют всё более общие модели — иерархию абстракций. Наиболее развитой системой абстракций обладает математика. Степень отвлечённости обсуждаемого понятия называется уровнем абстракции. В зависимости от целей и задач, можно рассуждать об одном и том же объекте на разных уровнях абстракции.
Гради Буч определяет понятие абстракции значительно проще, но смысл тот же:
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других объектов.
Зачем нужна абстракция?
Абстракции выполняют защитную функцию и помогают нам не сойти с ума от переизбытка информации. Представьте, как бы нам жилось, если при письме шариковой ручкой пришлось бы думать о том, что миллиарды молекул чернил взаимодействуют с молекулами бумаги, чтобы получилась буква. Другими словами, не тратя время на ненужные подробности, мы можем ухватить самую суть — взглянуть на проблему «сверху».
Если бы не фотография с высоты птичьего полета, можно ли было бы себе представить насколько правильно спроектирована Барселона? Кстати, про пример с шариковой ручкой, читать бы тоже не получилось — начертания одной и той же буквы на письме отличаются даже у одного человека.
Абстрактное мышление — это механизм, который позволяет нам перерабатывать и усваивать кучу новых сведений. Если бы не было абстракции, то единственный вариант для нас — это остаться очень примитивными существами.
В Бразилии живет племя небольшое племя индейцев Пираха. Представители этой народности обладают крайне скудным абстрактным мышлением. Их алфавит состоит из трех гласных и восьми согласных. У них нет слов, обозначающих цифры, вместо цифр у них два понятия — несколько и много. У них нет цветов — только понятия светлый и темный, времени и истории — они живут только сегодняшним днем и помнят только то. что помнит старейший из ныне живущих; нет — религии, ремесел, искусства. У них еще много чего нет в нашем привычном понимании. И это все потому, что не развито абстрактное мышление. Правда, справедливости ради, стоит отметить, что при этом они себя ощущают абсолютно счастливыми людьми!
Итак, абстрагирование нам нужно как способ познания и описания окружающего мира, для обмена информацией друг с другом. Абстракции позволяют провести декомпозицию предметной области на набор понятий и связей между ними.
На картинке изображен Legoland в Лондоне. Несмотря на то, что все предметы собраны из детского конструктора, мы без труда узнаем в них дома, окна, двери, городские кварталы, людей.
Барьеры и побочные эффекты абстракций
Чтобы понять ключевые свойства абстракций проведем аналогию с построением проекций на плоскость.
Предположим, что у нас есть три фигуры: шар, цилиндр и параллелепипед, при этом ось симметрии цилиндра, проходящая через центры окружностей в основании, параллельна какой-нибудь оси симметрии параллелепипеда. Очевидно, что можно выбрать две плоскости для построения проекций таким образом, что шар и цилиндр спроецируются в окружности, а цилиндр и параллелепипед — в прямоугольники.
Проекция в нашем примере иллюстрирует абстракцию объекта — геометрической фигуры. Что мы видим — на одной плоскости не отличишь проекции шара и цилиндра, а на другой — цилиндра и параллелепипеда. Этот эффект называется барьером абстракции. Абстракция представляет не весь объект целиком, а только лишь его существенный набор характеристик.Нужно быть готовым к тому, что некоторые очень непохожие друг на друга объекты, могут стать неразличимыми. Если это неудобно, то нужно выбирать другой набор абстракций.
С другой стороны, как мы видим из примера, цилиндр, может проецироваться и в окружность, и в прямоугольник — объекты с различными геометрическими свойствами, отличными от тех, что есть у цилиндра. Наличие у абстракции собственных свойств, отличных от свойств абстрагируемого объекта, называется побочным эффектом абстракции.
На самой первой картинке изображены две фигуры, собранные из щепок, так что при определенном освещении они отбрасывают «человеческие тени». Мне, например, кажется, что там один силуэт мужской, а другой — женский. Это тоже побочный эффект абстракций. Теперь мы можем классифицировать все фигуры по их тени.
Примеры абстракций
Сфера применения | Абстракция | Комментарий |
---|---|---|
Целые числа | Число из кольца Zp, где p = 2^разрядность (8, 16, 32, 64 бита) | Данная абстракция позволяет представить целые числа только из отрезка –p/2+1 до p/2. Побочный эффект – проблема переполнения. |
Вещественные числа | Числа с плавающей точкой | Вещественных чисел несчетное число, а чисел с плавающей точкой — всего лишь конечное. Это значит, что несчетное количество вещественных чисел представлены одним числом с плавающей точкой. Побочный эффект – ошибка округления, из-за который два числа нельзя сравнивать с помощью операции сравнения, а лишь по модулю некоторого маленького epsilon |a-b| < epsilon => a == b, или a/b*1000 может сильно отличаться от a*1000/b. Появилась даже целая дисциплина в математике – численные методы, которая изучает как организовать вычисления с плавающей точкой так, чтобы результаты не сильно отличались от вычислений с вещественными числами. |
Деньги | Числа с плавающей точкой | Погрешность округления чисел с плавающей точкой делает, если не невозможным их использование для финансовых операций, то, по крайней мере, сильно усложняет жизнь. В любом случае, я бы сначала подумал в сторону написания отдельного класса для денежных единиц. |
Изображение | Машинная графика | Машинная графика развивается семимильными шагами, чтобы сделать изображение на экране компьютера все более реалистичным. |
Программное обеспечение | Процедура | Процедура является базовым элементом декомпозиции в процедурном программировании. Побочный эффект — процедура жестко заданная последовательность команд, которую невозможно изменить без переписывания самой процедуры. |
Программное обеспечение | Класс | О классах будем говорить ниже. |
Предметная область | Абстракция сущности и связи между сущностями | Побочный эффект — отражает представление, заблуждения, предубеждения и т.д. о предметной области конкретного субъекта. |
Бизнес-логика | Процедура | Как уже говорилось выше — побочный эффект процедуры — жесткая последовательность команд. Бизнес-логика же подвержена изменениям, как правило содержит много исключений, о которых пользователи обычно забывают рассказать. Попытка представить бизнес-операцию в виде процедуры часто делает терпит неудачу. |
Программное обеспечение | Поток для распараллеливания операций | Многопоточное программирование получилось настолько сложным для восприятия, что немного людей в нем разбирается. |
Квадрат — это прямоугольник, у которого все стороны равны. | Класс квадрат нельзя наследовать от прямоугольника. | Классы — это абстракции. У них есть свои собственные свойства, которые отличаются от математических объектов и которые делают невозможным наследование. |
Классы
Гради Буч так определяет ООП:
Объектно-ориентированное программирование — это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
В этом определении самый важный момент — это иерархия наследования. Потому что именно наследование отличает ООП от всех других методологий.
Два основных принципа человеческого мышления — это группировка и обобщение. Классы — это, по сути, абстракции механизмов группировки и обобщения человеческого мозга. Естественно, со своими побочными эффектами и барьером. При этом группировка достигается тем, что похожим объектам сопоставляется один класс, а обобщение в ООП достигается за счет иерархии классов. Иерархии классов реализуются через полиморфизм.
ООП, кстати, интересно еще хотя бы и тем, что это, пожалуй, последняя парадигма программирования на данный момент, которая поддерживается на аппаратном уровне.
Главный побочный эффект классов — они отражают опыт, стереотипы, предубеждения того программиста, который их написал. Отсюда следует, что разные люди получат разный набор классов для одной и той же задачи. Более того, один и тот же человек, решая одну и туже задачу, но в разные моменты времени, получит разный набор классов, просто потому что его жизненный опыт меняется.
Второй побочный эффект, который стоит отметить — чужой код всегда менее понятный, чем свой собственный.
Разберемся почему так происходит. Когда человек пишет код, для него естественнее двигаться снизу вверх — от более низкоуровневых компонент к более высокоуровневым. Сначала написали один класс, потом второй, который зависит от первого, затем третий, который зависти от первого и второго, четвертый — от третьего и т.д.
Когда же человек пытается понять чужой код, он как раз двигается наоборот — сверху вниз. То есть сначала понимает общую суть, затем разбивает на компоненты, потом пытается понять суть каждого компонента и т.д. Часто эти движения мысли снизу вверх и сверху вниз у разных людей не совпадают. Естественно, что изучающему чужой код было бы легче, если разбиение кода на компоненты совпадало с его собственными убеждениями, как надо делать. Если это не так, придется затрачивать определенные усилия, чтобы понять ход мыслей разработчика. Поэтому, когда кто-то говорит, что здесь «полный хардкод», но если я перепишу, то будет все проще и понятнее.
Это всегда 100% правда… Но только для него, для остальных ценность переписывания уже не так очевидна.Кстати, если ничего не предпринимать специально, то при разработке снизу вверх, код становится сильно связанным между собой, то есть не повторно используемым. Чтобы побороть этот эффект надо следовать принципу инверсии зависимостей (The Dependency Inversion Principle).
Проиллюстрируем как проявляется описанный побочный эффект на простом примере. Многие жители крупных городов закупаются в крупных супермаркетах. Предположим, что жена отправляет мужа за покупками и, чтобы он не забыл, как обычно, чего-нибудь, составляет список «для тех кто в танке».
Постараемся проследить ход ее мыслей:
— Так чего я сегодня буду готовить на ужин?
— Надо приготовить чего-нибудь вкусненькое, чтобы побаловать ребенка.
— Кажется в миксере сели батарейки.
— Стоп! Ребенку нужны витамины. Морковь. Буду делать морковный сок. и мандарины. Скоро же Новый год!
— А хлеб дома есть? Нет, кажется, нет.Значит, надо купить!
— Еще надо купить масло.
— Забыла про ребенка — витамины. Купить яблоки.
— Чего-то ручка плохо пишет. Наверное скоро кончатся чернила. Надо купить!
— Так, ребенку надо купить сока.
— А еще игрушку — пусть порадуется.
— Картошка у нас есть на борщ? На борщ хватит, но на неделю нет. Значит тоже надо купить.
— Чуть не забыла учительница просила принести две тетради.
— К борщу нужна сметана.
— Вроде сахар кончился.
— Ребенок любит виноград.
— И еще надо купить бутилированной воды.
В итоге получаем следующий список:
- мука
- молоко
- батарейки
- морковь
- мандарины
- хлеб
- масло
- яблоки
- ручка
- сок
- игрушка
- картофель
- тетради
- сметана
- сахар
- виноград
- вода
Когда приходит муж в магазин то, что он обнаруживает? Указанные в списке товары оказываются в разных частях магазина. Обычно список длинный, поэтому запомнить что-либо, что было уже куплено достаточно трудно. На это накладывается, что какие-то отделы временно закрыты — идет выгрузка товаров, какого-то товара нет в продаже, плюс толчея, зимняя одежда. Более опытные товарищи ходят с карандашом или ручкой с очень озабоченным видом и постоянно смотрят в свой список. Но, в итоге, все равно, что-нибудь да забудешь купить. По своему опыту могу сказать, что это «что-нибудь» окажется самым важным, из-за чего вообще и стоило ехать в магазин.
Какой список был бы удобен мужу? Тот, в котором все товары сгруппированы по отделам, отдельные группы идут в очередности, соответствующей порядку обхода магазина. Например, для магазина, в который хожу я было бы удобно сгруппировать товары следующим образом:
- Батарейки
- Детские тетради
- Ручка
- Вода
- Сок
- Сахар
- Морковь
- Апельсины
- Яблоки
- Виноград
- Картофель
- Масло
- Хлеб
- Молоко
- Сметана
- Мука
- Детская игрушка
Еще одно важное наблюдение — невозможно по самим абстракциям определить насколько удачными они получились.
Это можно сделать, только если мы попытаемся их использовать на практике. И тут уж выясняется, что одни абстракции лучше подходят для задачи, а другие — хуже. А если еще немного изменить исходные условия, то и прежний «хороший» набор абстракций уже может не работать. Например, второй список покупок из примера перестанет работать, если прийти с ним в другой магазин с иным порядком выкладки товаров. Он станет ничем не лучше, чем первый.Отсюда вывод — невозможно придумать набор классов, который подойдет на все случаи жизни. В статье The Open-Closed Principle это называется стратегическая замкнутость.
Естественный вопрос, а как сразу создавать хорошие абстракции. Увы, но на этот счет нет точного ответа. Зато со временем выработался набор практик, который говорит, как надо поступать, и обещает, что в этом случае будет хороший результат. К таким практикам относится рефакторинг, стандарты кодирования, code review, объектная гимнастика и т.д. Цель данных практик — направить ход мыслей группы разработчиков в одном направлении, тогда шансов, что чужой код будет понятнее, станет больше.
Так зачем нужно тогда ООП?
Проведем параллели между естественным языком и ООП
естественный язык | ООП |
---|---|
Слово | класс |
Правила | Синтаксис |
Жанр | Архитектура |
литературные приемы | паттерны |
Любые свои мысли человек выражает словами естественного языка. Есть два типа задач:
- Для решения надо хорошо знать сам язык. Например, чтобы написать Войну и Мир.
- Сложность не зависит от языка. Неважно сколько и какие языки Вы знаете. Это никак не помогает при решении. Например, теорема Ферма.
ООП — это инструмент, который создавался с прицелом на большие по размеру программы. Но, это всего лишь один из инструментов, который потребуется, чтобы написать крупный проект.
Меня всегда удивляют, статьи в стиле Почему я люблю X или Почему я не люблю X. Все прекрасно понимают, что X — инструмент. Ведь нет же таких статей про лопату. Хотя, кто знает, ведь ООП существует несколько десятилетий, а лопата несколько тысяч, и быть может где-нибудь в в каменном веке шли жестокие холивары на тему, что лучше лопатка мамонта или мотыга из камня?
Литература по теме
1. Гради Буч Объектно-ориентированный анализ и проектирование с примерами приложений на С++
Данная книга в представлении не нуждается. Одна из наиболее цитируемых книг по программированию.
2. Барбара Минто Принципы Пирамиды Минто.
Работая консультантом McKinsey Барбара Минто создала свой собственный метод написания аналитических документов, основанный. на том, как человек воспринимает информацию. В книге достаточно много места уделено принципам группировки и обобщения.
3. Роберт Мартин (Uncle Bob)
Роберт Мартин написал серию статей и книг про принципы ООП. Наиболее известные из них S.O.L.I..D. На русском языке вышла книжка Роберт Мартин Быстрая разработка программ. Принципы, примеры, практика, в которой описаны эти принципы. Но на мой взгляд про них лучше прочитать в статьях The Single Responsibility Principle, The Open-Closed Principle, The Liskov Substitution Principle, The Interface Segregation Principle, The Dependency Inversion Principle.
9.1.Иерархические уровни описаний проектируемых объектов
В основе блочно-иерархического подхода к проектированию лежит принцип разделения описания объекта по степени детализации его отображаемых свойств и характеристик. Это приводит к появлению уровней
абстрагирования.
На каждом иерархическом уровне используются свои понятия системы и элементов. На уровне 1(верхнем уровне) объект S рассматривается как система S из n взаимосвязанных и взаимодействующих элементов Si(рис.9.1).
S
S1 S2 ……………………….. Sn
S11 S12 ……… S1m1 ….. Sn1 Sn2 ……… Snmn
Рис.9.1.Иерархическая структура описания объекта
Каждый из элементов в описании уровня 1 представляет собой также сложный объект, который в свою очередь рассматривается как система Si
на уровне 2. Элементами систем Si являются объекты Sij, j=1,2,. ..,mi(где mi- количество элементов в описании системы Si). Как правило, выделение элементов Sij происходит по функциональному признаку. Деление элементов на уровни происходит вплоть до появления элементов, которые дальнейшему делению не подлежат. Такие элементы по отношению к S называются базовыми.
Примером иерархического описания объектов является структура технологического процесса изготовления детали с уровнями: маршрут- > операция -> переход -> проход; другим примером является декомпозиция конструкции изделия принятая в спецификации: изделие — узел — деталь.
Таким образом, принцип иерархичности означает структурирование представлений об объектах проектирования по степени детальности описаний, а принцип декомпозиции(блочности) — разбиение представлений каждого уровня на ряд составных блоков с возможностью раздельного поблочного проектирования.
9.2.Аспекты описаний проектируемых объектов
Кроме иерархического описания объекта используется описание по характеру отображаемых свойств, т. е. аспектов описаний. Наиболее важными аспектами для технических объектов являются конструкторский и технологический и функциональный аспекты.
Функциональный аспект связан с отображением основных принципов функционирования, характера физических и информационных процессов, протекающих в объекте, и находит выражение в принципиальных, функциональных, структурных, кинематических схемах и сопровождающих их документах.
Конструкторский аспект связан с реализацией результатов функционального проектирования, т.е. с определением геометрических форм объектов и их взаимным расположением в пространстве.
Технологический аспект относится к реализации результатов конструкторского проектирования, т.е. связан с описанием методов и средств изготовления объектов.
Возможно более дифференцированное описание свойств объекта, а внутри каждого аспекта возможно специфическое выделение иерархических уровней.
9.3.Составные части процесса проектирования
Процесс проектирования расчленяется на стадии, этапы, проектные процедуры и операции.
Стадии:
предпроектные исследования;
техническое задание;
эскизный проект;
технический проект;
рабочий проект;
испытание;
внедрение в производство.
Этап проектирования — часть процесса проектирования, включающая в себя формирование всех требующихся описаний объекта, относящихся к одному или нескольким иерархическим уровням и аспектам.
Составные части этапа проектирования называют проектными процедурами. Проектная процедура- часть этапа, которая заканчивается получением проектного решения. Более мелкие составные части процесса проектирования, входящие в состав проектных процедур, называются проектными операциями. Например, для проектной процедуры оформления чертежа изделия проектной операцией может быть вычерчивание типового
графического изображения зубчатого венца и т.п.
Что такое абстракция? — Определение из WhatIs.com
К
- Айви Вигмор
Абстракция (от латинского abs , что означает вдали от и trahere , что означает от до ) — это процесс изъятия или удаления характеристик чего-либо с целью сведения его к набору существенных характеристик. В объектно-ориентированном программировании абстракция является одним из трех основных принципов (наряду с инкапсуляцией и наследованием). В процессе абстракции программист скрывает все данные об объекте, кроме важных, чтобы уменьшить сложность и повысить эффективность. Точно так же, как абстракция иногда работает в искусстве, объект, который остается, представляет собой представление оригинала с опущенными нежелательными деталями. Сам полученный объект можно назвать абстракцией, что означает именованный объект, состоящий из выбранных атрибутов и поведения, специфичных для конкретного использования исходного объекта . Абстракция связана как с инкапсуляцией, так и с сокрытием данных.
Абстракция, применяемая в реальном миреВ процессе абстрагирования программист старается обеспечить, чтобы имя объекта имело смысл и чтобы в него были включены все соответствующие аспекты и не было посторонних. Аналогия абстракции в реальном мире может работать следующим образом: вы (объект) договариваетесь о свидании вслепую и решаете, что им сказать, чтобы они могли узнать вас в ресторане. Вы решаете включить информацию о том, где вы будете находиться, ваш рост, цвет волос и цвет вашей куртки. Это все данные, которые помогут процедуре (ваша дата найдет вас) работать гладко. Вы должны включить всю эту информацию. С другой стороны, есть много кусочков информации о вас, которые не имеют отношения к этой ситуации: ваш номер социального страхования, ваше восхищение малоизвестными фильмами и то, что вы взяли, чтобы «показать и рассказать» в пятом классе. не имеют отношения к этой конкретной ситуации, потому что они не помогут вашей дате найти вас. Однако, поскольку сущности могут иметь любое количество абстракций, вы можете использовать их в другой процедуре в будущем.
Последнее обновление: декабрь 2021 г.
Продолжить чтение Об абстракции- Архитектура высокой доступности: резервирование или абстракция
- Абстракция работает только в идеальном мире
устойчивый AI
Устойчивый ИИ — это использование систем искусственного интеллекта, которые работают в соответствии с устойчивой деловой практикой.
Сеть
- полоса (полоса частот)
В телекоммуникациях полоса частот, иногда называемая полосой частот, относится к определенному диапазону частот в . ..
- HAProxy
HAProxy — это высокопроизводительный балансировщик нагрузки с открытым исходным кодом и обратный прокси-сервер для приложений TCP и HTTP.
- ACK (подтверждение)
В некоторых протоколах цифровой связи ACK — сокращение от «подтверждение» — относится к сигналу, который устройство отправляет, чтобы указать…
Безопасность
- постквантовая криптография
Постквантовая криптография, также известная как квантовое шифрование, представляет собой разработку криптографических систем для классических компьютеров…
- деинициализация
Деинициализация — это часть жизненного цикла сотрудника, в ходе которой лишаются прав доступа к программному обеспечению и сетевым службам.
- Требования PCI DSS 12
Требования PCI DSS 12 представляют собой набор мер безопасности, которые предприятия должны внедрить для защиты данных кредитных карт и соблюдения . ..
ИТ-директор
- Agile-манифест
Манифест Agile — это документ, определяющий четыре ключевые ценности и 12 принципов, в которые его авторы верят разработчики программного обеспечения…
- Общее управление качеством (TQM)
Total Quality Management (TQM) — это структура управления, основанная на убеждении, что организация может добиться долгосрочного успеха, …
- системное мышление
Системное мышление — это целостный подход к анализу, который фокусируется на том, как взаимодействуют составные части системы и как…
HRSoftware
- вовлечения сотрудников
Вовлеченность сотрудников — это эмоциональная и профессиональная связь, которую сотрудник испытывает к своей организации, коллегам и работе.
- кадровый резерв
Кадровый резерв — это база данных кандидатов на работу, которые могут удовлетворить немедленные и долгосрочные потребности организации.
- разнообразие, равенство и инклюзивность (DEI)
Разнообразие, равенство и инклюзивность — термин, используемый для описания политики и программ, которые способствуют представительству и …
Служба поддержки клиентов
- требующий оценки
Оценка потребностей — это систематический процесс, в ходе которого изучается, какие критерии должны быть соблюдены для достижения желаемого результата.
- точка взаимодействия с клиентом
Точка соприкосновения с покупателем — это любой прямой или косвенный контакт покупателя с брендом.
- устав обслуживания клиентов
Устав обслуживания клиентов — это документ, в котором описывается, как организация обещает работать со своими клиентами, а также …
Что такое абстракция данных в программировании и управлении базами данных?
К
- Роберт Шелдон
Абстракция данных — это сведение определенного массива данных к упрощенному представлению целого. Абстракция, в общем, представляет собой процесс удаления характеристик из чего-либо, чтобы свести его к набору основных элементов. С этой целью абстракция данных создает упрощенное представление базовых данных, скрывая при этом их сложности и связанные с ними операции. В вычислительной технике абстракция данных обычно используется в объектно-ориентированном программировании (ООП) и при работе с системой управления базами данных (СУБД).
Что такое абстракция данных в ООП?Современные языки программирования, включающие методологии ООП, обычно используют абстракцию данных, чтобы скрыть низкоуровневые детали программных конструкций, определяющих базовую логику, что, в свою очередь, упрощает и оптимизирует процесс разработки. Объектно-ориентированное программирование организует разработку программного обеспечения вокруг объектов данных, а не функций или логики. Абстракция данных — ключевая характеристика ООП, реализуемая с использованием классов и объектов.
Класс — это определение шаблона, которое объединяет связанные атрибуты и методы в именованный пакет. Это особый тип объекта, который служит образцом для создания других объектов. Кроме того, класс может включать в себя подклассы, которые наследуют некоторые или все атрибуты и методы класса, что приводит к типу иерархии классов. Подклассы также могут определять свои собственные атрибуты и методы.
Объект — это именованный экземпляр класса, созданный с использованием специально определенных данных. Атрибуты объекта уникальны среди других объектов того же класса. Объект служит простым представлением класса, абстрагируя детали реализации самого класса. Таким образом, разработчики могут сосредоточиться в первую очередь на объектах и способах манипулирования ими, а не на том, как реализовать лежащую в их основе логику.
techtarget.com» type=»text/html» frameborder=»0″>Предположим, например, что группа разработчиков создает приложение для отдела кадров организации. Приложение содержит класс Employee, который включает такие атрибуты, как имя, фамилия, контактная информация, профессиональные навыки и другую соответствующую информацию. Класс Employee также включает несколько методов, в том числе один для обновления списка профессиональных навыков сотрудника. Из этого класса приложение может создавать экземпляры объектов, имеющих доступ к этим свойствам и методам, без необходимости их повторного создания для каждой записи сотрудника, что помогает упростить общий процесс разработки приложения.
Поскольку класс предоставляет шаблон для создания объектов, разработчики могут создавать эти объекты так часто, как это необходимо, не заботясь о том, как класс реализует базовую логику, и не реконструируя одну и ту же логику каждый раз, когда требуется объект Employee. Например, приложение может вызвать метод обновления профессиональных навыков, не заботясь о том, как выполняется обновление. Все свойства и методы уже определены, независимо от того, нужны они или нет при создании экземпляра отдельного объекта. Таким образом, основные сложности реализации абстрагируются и скрываются на протяжении большей части усилий по разработке.
На этой диаграмме показан пример структуры и именования в ООП. Что такое абстракция данных в СУБД?Абстракция данных также используется с базами данных, чтобы скрыть основные сложности того, как данные хранятся и управляются. Представление данных, которое есть у пользователей, сильно отличается от того, как данные сохраняются в хранилище. Абстракция данных применительно к базам данных обычно делится на три уровня:
- Просмотр слоя. На этом уровне пользователь видит данные в том виде, в каком они представлены интерфейсом приложения. Пользователь может иметь возможность взаимодействовать с данными или может только просматривать их. В любом случае пользователь обычно имеет доступ только к определенным типам данных, имеет очень ограниченное представление о данных в целом и не имеет представления о том, как и где данные хранятся.
- Логический уровень. Этот уровень обеспечивает концептуальное понимание данных. Он описывает тип данных и то, как эти данные связаны. Вы можете думать об этом уровне как о диаграмме отношений сущностей (ERD), которая размещает объекты данных как план и показывает, как они связаны.
- Физический уровень. Этот уровень предназначен для физического хранения данных. Это связано с тем, где и как хранятся данные, как управляются файлы, тип хранилища и все остальное, связанное с физическим обслуживанием данных.
Нет установленных правил, определяющих, как должны быть реализованы уровни абстракции данных. Это будет зависеть от типа системы базы данных, от того, как производитель спроектировал платформу, как администраторы реализовали эту платформу, как были смоделированы данные и приложения, используемые для доступа к данным.
Независимо от подхода абстракция данных остается важным компонентом любой СУБД, поскольку она позволяет пользователям легко работать с данными, позволяя вносить изменения на серверной части, не нарушая интерфейсных приложений. Например, администратор базы данных должен иметь возможность изменить место хранения файла базы данных, не затрагивая приложения, извлекающие данные из этого файла. Разработчик базы данных должен даже иметь возможность изменить макет таблицы, если уровень абстракции находится сверху и может принять изменения. Абстракция данных обеспечивает максимальную гибкость в поддержке меняющихся бизнес-требований и внедрении новых приложений.
Узнайте о различии между СУБД и РСУБД и функционального и объектно-ориентированного программирования .
Последнее обновление: июнь 2022 г.
Продолжить чтение Об абстракции данных- Разработчики востребованных языков программирования должны знать
- 11 языков облачного программирования, которые необходимо знать разработчикам
- Оценка различных типов продуктов СУБД
- Что нужно знать о программном обеспечении для повышения производительности баз данных
- 5 способов управления несколькими источниками данных для высокопроизводительных приложений
устойчивый AI
Устойчивый ИИ — это использование систем искусственного интеллекта, которые работают в соответствии с устойчивой деловой практикой.
Сеть
- полоса (полоса частот)
В телекоммуникациях полоса частот, иногда называемая полосой частот, относится к определенному диапазону частот в …
- HAProxy
HAProxy — это высокопроизводительный балансировщик нагрузки с открытым исходным кодом и обратный прокси-сервер для приложений TCP и HTTP.
- ACK (подтверждение)
В некоторых протоколах цифровой связи ACK — сокращение от «подтверждение» — относится к сигналу, который устройство отправляет, чтобы указать…
Безопасность
- постквантовая криптография
Постквантовая криптография, также известная как квантовое шифрование, представляет собой разработку криптографических систем для классических компьютеров…
- деинициализация
Деинициализация — это часть жизненного цикла сотрудника, в ходе которой лишаются прав доступа к программному обеспечению и сетевым службам.
- Требования PCI DSS 12
Требования PCI DSS 12 представляют собой набор мер безопасности, которые предприятия должны внедрить для защиты данных кредитных карт и соблюдения …
ИТ-директор
- Agile-манифест
Манифест Agile — это документ, определяющий четыре ключевые ценности и 12 принципов, в которые его авторы верят разработчики программного обеспечения. ..
- Общее управление качеством (TQM)
Total Quality Management (TQM) — это структура управления, основанная на убеждении, что организация может добиться долгосрочного успеха, …
- системное мышление
Системное мышление — это целостный подход к анализу, который фокусируется на том, как взаимодействуют составные части системы и как…
HRSoftware
- вовлечения сотрудников
Вовлеченность сотрудников — это эмоциональная и профессиональная связь, которую сотрудник испытывает к своей организации, коллегам и работе.
- кадровый резерв
Кадровый резерв — это база данных кандидатов на работу, которые могут удовлетворить немедленные и долгосрочные потребности организации.
- разнообразие, равенство и инклюзивность (DEI)
Разнообразие, равенство и инклюзивность — термин, используемый для описания политики и программ, которые способствуют представительству и .