Объектно-ориентированные СУБД — база данных и система управления

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

Однако с ростом глобализации организации имеют тенденцию к диверсификации по всему миру. Они могут распределить данные по локальным серверам вместо центральной базы данных.Объектно-ориентированные СУБД - Для студента

alt

Узнай стоимость своей работы

Бесплатная оценка заказа!

Оценим за полчаса!

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

В этой главе дается обзор баз данных и систем управления базами данных (СУБД). База данных – это упорядоченная коллекция связанных данных. СУБД – это программный пакет для работы с базой данных.

Детальное изучение СУБД доступно в нашем учебном пособии под названием «Изучение СУБД». В этой главе мы пересматриваем основные концепции, чтобы можно было легко изучить DDBMS.

Обсуждаются три темы: схемы баз данных, типы баз данных и операции с базами данных.

База данных и система управления базами данных

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

Например, база данных компании может включать таблицы для проектов, сотрудников, отделов, продуктов и финансовых отчетов. Полями в таблице Employee могут быть Имя, Company_Id, Date_of_Joining и т. Д.

Система управления базой данных – это набор программ, которые позволяют создавать и поддерживать базу данных. СУБД доступна в виде программного пакета, который облегчает определение, создание, манипулирование и обмен данными в базе данных.

alt

Узнай стоимость своей работы

Бесплатная оценка заказа!
Читайте также:  Читательский дневник для студентов - виды, структура, как заполнять

Оценим за полчаса!

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

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

Примеры областей применения СУБД

  • Банкоматы
  • Система бронирования поездов
  • Система управления сотрудниками
  • Студенческая информационная система

Примеры пакетов СУБД

  • MySQL
  • оракул
  • SQL Server
  • Dbase
  • FoxPro
  • PostgreSQL и др.

Схемы базы данных

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

Базы данных часто представлены с помощью архитектуры с тремя схемами или архитектуры ANSISPARC . Цель этой архитектуры – отделить пользовательское приложение от физической базы данных. Три уровня –

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

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

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

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

Типы СУБД

Существует четыре типа СУБД.

Иерархическая СУБД

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

Сетевая СУБД

Сетевая СУБД в той, где отношения между данными в базе данных имеют тип многие-ко-многим в форме сети. Структура, как правило, сложна из-за существования многочисленных отношений «многие ко многим». Сетевая СУБД моделируется с использованием «графической» структуры данных.

Объектно-ориентированные СУБД - Для студента

Реляционная СУБД

В реляционных базах данных база данных представлена ​​в виде отношений. Каждое отношение моделирует сущность и представляется в виде таблицы значений. В отношении или таблице строка называется кортежем и обозначает одну запись. Столбец называется полем или атрибутом и обозначает характеристическое свойство объекта. СУБД является самой популярной системой управления базами данных.

Например – Отношения со студентами –

Объектно-ориентированные СУБД - Для студента

Объектно-ориентированная СУБД

Объектно-ориентированная СУБД получена из модели парадигмы объектно-ориентированного программирования. Они полезны для представления как согласованных данных, хранящихся в базах данных, так и временных данных, которые можно найти в исполняемых программах.

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

Доступ к объекту и его атрибутам осуществляется через указатели, а не хранится в моделях реляционных таблиц.

Например – Упрощенная объектно-ориентированная база данных банковского счета –

Объектно-ориентированные СУБД - Для студента

Распределенная СУБД

Распределенная база данных – это набор взаимосвязанных баз данных, которые распространяются по компьютерной сети или Интернету.

Распределенная система управления базами данных (DDBMS) управляет распределенной базой данных и предоставляет механизмы для обеспечения прозрачности баз данных для пользователей.

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

Операции на СУБД

Четыре основных операции с базой данных: создание, получение, обновление и удаление.

СОЗДАЙТЕ структуру базы данных и заполняйте ее данными. Создание отношения к базе данных включает в себя указание структур данных, типов данных и ограничений данных, которые будут сохранены.

  • Пример – команда SQL для создания таблицы ученика –
  • Как только формат данных определен, фактические данные сохраняются в соответствии с форматом на некотором носителе данных.
  • Пример команды SQL для вставки одного кортежа в таблицу ученика –
Читайте также:  Рецензия - что это, как написать и примеры составления, план работы

ПОЛУЧЕНИЕ информации из базы данных. Как правило, получение информации включает в себя выбор подмножества таблицы или отображение данных из таблицы после выполнения некоторых вычислений. Это делается путем запроса на стол.

Пример. Чтобы получить имена всех учащихся потока Computer Science, необходимо выполнить следующий запрос SQL:

Информация ОБНОВЛЕНИЯ сохраняется и изменяет структуру базы данных. Обновление таблицы включает изменение старых значений в строках существующей таблицы новыми значениями.

Пример – команда SQL для изменения потока с электроники на электронику и связь –

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

Пример. Чтобы добавить новое поле или столбец, скажем, адрес в таблицу Student, мы используем следующую команду SQL:

УДАЛЕНИЕ сохраненной информации или удаление таблицы в целом. Удаление конкретной информации включает удаление выбранных строк из таблицы, удовлетворяющих определенным условиям.

  1. Пример – чтобы удалить всех студентов, которые в настоящее время находятся на 4- м курсе, когда они заканчивают, мы используем команду SQL –
  2. Кроме того, вся таблица может быть удалена из базы данных.
  3. Пример. Чтобы полностью удалить таблицу ученика, используется команда SQL:

Источник: https://coderlessons.com/tutorials/akademicheskii/izuchite-raspredelennuiu-subd/raspredelennaia-subd-osnovnye-poniatiia

Введение в объектно-ориентированные базы данных

Объектно-ориентированные базы данных – базы данных, в которых информация представлена в виде объектов, как в объектно-ориентированных языках программирования. Применять или не применять объектно-ориентированные системы управления базами данных (ООСУБД) в реальных проектах сегодня? В каких случаях их применять, а в каких нет?

Вот преимущества использования ООСУБД:

  • Отсутствует проблема несоответствия модели данных в приложении и БД (impedance mismatch). Все данные сохраняются в БД в том же виде, что и в модели приложения.
  • Не требуется отдельно поддерживать модель данных на стороне СУБД.
  • Все объекты на уровне источника данных строго типизированы. Больше никаких строковых имен колонок! Рефакторинг объектно-ориентированной базы данных и работающего с ней кода теперь автоматизированный, а не однообразный и скучный процесс.

Установка db4o

На сегодняшний день db4o – одна из самых популярных объектно-ориентированных систем управления базами данных.

Для начала скачиваем дистрибутив последней версии с сайта db4o (есть версии для Java, .NET 2.0, 3.5). На момент написания статьи последняя версия – 7.9.

В дистрибутив также входит Object Manager Enterprise (OME) – полезный плагин для IDE (Eclipse, Visual Studio), который позволяет работать с базой данных автономно. В последнюю продуктивную поставку (на данный момент — 7.

4) OME не входит, поэтому для ознакомления c ООСУБД рекомендуется версия 7.9.

Далее в статье для примеров будет использоваться язык C#. Для Java примеры аналогичны, за исключением раздела про LINQ, где необходимым условием является использование .NET 3.5. После установки db4o в соответствующем месте можно найти отличный tutorial, входящий в комплект. Именно к нему я рекомендую обратиться после прочтения данной статьи, если сама тема покажется вам интересной. Отмечаю, что все ПО для работы с db4o и сама СУБД бесплатны для некоммерческого использования.

Cоединение с БД

Для проведения экспериментов над db4o создаем в нашей IDE проект любого типа, например, консольное приложение и добавляем ссылки на сборки (пакеты) db4o: Db4objects.Db4o.dll и Db4objects.Db4o.Linq.dll (если требуется).

Чтобы выполнять какие-либо действия над объектной базой в приложении, первым делом необходимо получить объект типа IObjectContainer.

Это фасад к базе данных: через него выполняются запросы к БД на выборку, сохранение, добавление и удаление данных.

Способ получения объекта зависит от типа соединения с базой данных. Самый простой способ – база данных размещается в локальном файле, к которому приложение получает доступ напрямую. Делается это так:// получаем доступ к файлу БД IObjectContainer db = Db4oFactory.OpenFile(filename);

  • try
  •     // работаем с ООБД
  • finally
  •     // закрываем файл, освобождаем ресурсы
  • }

{ } {     db.Close();

* This source code was highlighted with Source Code Highlighter.

Файл базы данных в этом случае открывается в эксклюзивном режиме и, следовательно, возникают трудности при реализации многопользовательских приложений. Однако такое решение отлично подходит для однопользовательских stand-alone приложений, которые имеют сложную модель данных и которым необходимо сохранять эти данные между запусками приложения. Пример, САПР-приложения.

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

// создаем сервер IObjectServer server = Db4oFactory.OpenServer(filename, 0);

  1. try
  2.     // подключаем клиентов
  3.     // работаем с ООБД через экземпляры IObjectContainer
  4. finally
  5.     // закрываем файл, освобождаем ресурсы сервера
  6. }

{     IObjectContainer client = server.OpenClient();     IObjectContainer client2 = server.OpenClient();     client.Close();     client2.Close(); } {     server.Close();

* This source code was highlighted with Source Code Highlighter.

В данном случае при создании сервера все равно приходится указывать файл базы данных. Это необходимо делать для всех типов подключения к БД — привязка к файлу остается всегда (один файл — одна БД). Кстати, такой файл создается автоматически по первому требованию, если не был создан до этого.

Второй параметр функции OpenServer – номер порта, равный 0, означает, что сервер будет доступен только локальным клиентам, создаваемым с помощью server.OpenClient().

Приведенный пример искусственный. В реальном приложении клиенты, скорее всего, будут открываться в отдельных потоках. И последний вариант – расширение предыдущего для случая удаленных клиентов.// создаем сервер IObjectServer server = Db4oFactory.OpenServer(filename, serverPort); server.GrantAccess(serverUser, serverPassword);

  • try
  •     IObjectContainer client = Db4oFactory.OpenClient(«localhost», serverPort,
  •     // работаем с ООБД
  • finally
  • }

{                                                      serverUser, serverPassword);     client.Close(); } {     server.Close();

* This source code was highlighted with Source Code Highlighter.

Этот вариант отличается от предыдущего следующим.

  • Указывается реальное значение порта, который будет прослушивать сервер (используется TCP/IP) при вызове OpenServer.
  • Указываются авторизационные данные для доступа к БД.
  • Клиент создается с использованием Db4oFactory.OpenClient и, таким образом, это может происходить не только в другом потоке, но и совершенно в другом приложении, запущенном на удаленной машине.

Итак, мы рассмотрели все три способа подключения к базе данных и научились получать объект типа IObjectContainer. Посмотрим теперь, как работать с данными, используя этот объект.

Работа с данными

Пусть где-то в нашем приложении объявлен класс User с полями Login, Password и Age, а db – это объект типа IObjectContainer (тот, что мы получили в прошлом разделе).

Сохранение объекта (INSERT)

User user1 = new User(«Vasya», «123456», 25); db.Store(user1);

* This source code was highlighted with Source Code Highlighter.

Это всё! Не требуется заранее или вручную задавать, какие объекты мы можем сохранять в БД, структуру этих объектов или что-либо ещё. При сохранении первого объекта ООСУБД сделает всю работу за нас.

Запросы к данным (SELECT)

Существует несколько способов выполнить запрос к данным, сохраненным в базе данных.

Применение естественных запросов (Native Queries, NQ) – гибкий, мощный и удобный метод выполнения запросов над данными в ООБД.IList result = db.Query(usr => usr.

Age >= 18                                         && usr.Login.StartsWith(«V»));

* This source code was highlighted with Source Code Highlighter.

Здесь делается запрос к объектам класса User, причем всё, что только можно, в данном примере строго типизировано. Объекты фильтруются таким образом, чтобы удовлетворять условию: возраст пользователя больше или равен 18 и имя пользователя начинается с заглавной буквы «V». Вместо лямбда-выражения функции Query можно передавать делегаты или объекты типа Predicate. Predicate — интерфейс, содержащий единственную функцию Match, принимающую параметр типа T и возвращающую bool. Query вернет те объекты, для которых Match возвращает true. Концепция ООБД отлично ложиться на идею использования интегрированных в язык запросов (LINQ). Перепишем предыдущий запрос с использованием LINQ.IEnumerable result = from User usr in db                           where usr.Age >= 18 && usr.Login.StartsWith(«V»)                           select usr;

* This source code was highlighted with Source Code Highlighter.

Запрос опять же строго типизирован и легко поддается рефакторингу. Существуют и другие методы выполнения запросов, кроме NQ и LINQ.

  • Запросы по образцу (query by example). Самый простой, но недостаточно мощный способ. Выборка данных осуществляется на основе сопоставления с заранее подготовленным экземпляром объекта — образцом. Результат-выборка не является строго типизированной. Сложно представить ситуации, когда этот метод может оказаться полезным.
  • SODA. Низкоуровневый язык запросов, с которым работает db4o. Запросы, использующие синтаксис SODA, не безопасны с точки зрения типов, не строго типизированы, занимают много места, но зато максимально гибки и позволяют отточить производительность приложения там, где это требуется.

Обновление объектов (UPDATE)

Перед тем как обновить объект, извлечем его из БД, затем изменим его и сохраним обратно.User usr = db.Query(usr => usr.Login == «Vasya»)[0]; usr.SetPassword(«111111»); db.Store(usr);

* This source code was highlighted with Source Code Highlighter.

Удаление объектов (DELETE)

Удаление объектов происходит аналогично:User usr = db.Query(usr => usr.Login == «Vasya»)[0]; db.Delete(usr);

* This source code was highlighted with Source Code Highlighter.

Составные объекты

До этого момента мы рассматривали, как работать с достаточно простыми объектами User, которые содержали только поля элементарных типов (string и int). Однако объекты могут быть составными и ссылаться на другие объекты. Например, в классе User может быть объявлено поле friends (друзья пользователя): public class User {

// …

IList friends = new List(); }

* This source code was highlighted with Source Code Highlighter.

Все операции с таким классом производятся также, как и раньше – составное поле корректно сохраняется в БД, однако есть некоторые особенности.

Допустим, мы пытаемся загрузить из БД объект одного конкретного пользователя (User), как это делалось в прошлом разделе. Если загружен сам пользователь, то должны загрузиться и его друзья, дальше – друзья его друзей, и так далее.

Это может закончиться тем, что придется загрузить в память все объекты User или даже, если у User есть ссылки на объекты других типов, всю базу данных целиком. Естественно, такой эффект нежелателен. Поэтому, по умолчанию загружаются только сами объекты выборки и объекты, на которые они ссылаются, до 5-го уровня вложенности включительно.

Для некоторых ситуаций это много, для других – мало. Существует способ настроить этот параметр, называемый глубиной активации (activation depth).

// глубина активации глобально для всех классов db.Ext().Configure().ActivationDepth(2);

// глубина активации для класса User

db.Ext().Configure().ObjectClass(typeof(User)).MinimumActivationDepth(3); db.Ext().Configure().ObjectClass(typeof(User)).MaximumActivationDepth(4);

// каскадная активация для объектов User (нет ограничения на глубину)

db.Ext().Configure().ObjectClass(typeof(User)).CascadeOnActivate(true);

* This source code was highlighted with Source Code Highlighter.

Здесь приведены примеры, устанавливающие глубину активации как для всех сразу, так и для отдельного класса. Функция Ext() возвращает расширенный объект IExtObjectContainer для доступа к продвинутым функциям вроде настроек конфигурации базы данных. Это сделано для удобства, чтобы не засорять основной интерфейс IObjectContainer.

В случае, когда запрос уже отработал, но каких-либо данных не хватает, то есть не все нужные данные были активированы (загружены в память), можно использовать метод Activate, применительно к отдельному хранимому объекту:

* This source code was highlighted with Source Code Highlighter.

Во многом похожая проблема возникает при сохранении составных объектов. По умолчанию сохраняются только поля самого объекта, но не объектов, на которые он ссылается. То есть, глубина обновления (update depth) по умолчанию равна 1. Изменить её можно следующим образом:

db.Ext().Configure().ObjectClass(typeof(User)).UpdateDepth(3);

db.Ext().Configure().ObjectClass(typeof(User)).CascadeOnUpdate(true);

* This source code was highlighted with Source Code Highlighter.

В случае удаления объекта, по умолчанию также не происходит каскадного удаления: объекты, на которые ссылался удаленный объект, остаются. Настраивать поведение СУБД в случае удаления объектов можно следующим образом: // каскадное удаление (нет ограничений на вложенность) db.Ext().Configure().ObjectClass(typeof(User)).CascadeOnDelete(true);

Читайте также:  Структура научной статьи - пример и как написать введение, основную часть и выводы?

* This source code was highlighted with Source Code Highlighter.

Транзакции

Каждый раз, когда открывается контейнер (IObjectContainer), неявным образом создается контекст транзакции. При выполнении операции Close автоматически происходит commit текущей транзакции.

Для более гибкого управления транзакциями в интерфейсе IObjectContainer присутствуют два метода:

  • Commit(). Явное завершение транзакции (commit) с записью всех изменений в БД.
  • Rollback(). Откат транзакции – изменения произошедшие с момента открытия транзакции (контейнера) не будут зафиксированы в БД.

Цель данной статьи — показать, что имеется очень мощная альтернатива существующим подходам к разработке с использованием реляционных СУБД. Сам по себе подход, использующий объектные базы данных, очень современен – это СУБД, которая не отстает от основных тенденций, наблюдаемых в развитии языков программирования, таких как Java и C#.

Источник: https://habr.com/post/56399/

Объектно-ориентированные СУБД

Появление объектно-ориентированных СУБД вызвано потребностями программистов на ОО-языках, которым были необходимы средства для хранения объектов, не помещавшихся в оперативной памяти компьютера.

Также важна была задача сохранения состояния объектов между повторными запусками прикладной программы. Поэтому, большинство ООСУБД представляют собой библиотеку, процедуры управления данными которой включаются в прикладную программу.

Примеры реализации ООСУБД как выделеного сервера базы данных крайне редки.

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

  • Мы знаем, что любая модель данных должна включать три аспекта: структурный, целостный и манипуляционный. Посмотрим, как они реализуются на основе объектно-ориентированная парадигмы программирования:
  • Структура:
  • Структура объектной модели описываются с помощью трех ключевых понятий:
  • инкапсуляция — каждый объект обладает некоторым внутренним состоянием (хранит внутри себя запись данных), а также набором методов — процедур, с помощью которых (и только таким образом) можно получить доступ к данным, определяющим внутреннее состояние объекта, или изменить их. Таким образом, объекты можно рассматривать как самостоятельные сущности, отделенные от внешнего мира;
  • наследование— подразумевает возможность создавать из классов объектов новые классы объекты, которые наследуют структуру и методы своих предков, добавляя к ним черты, отражающие их собственную индивидуальность. Наследование может быть простым (один предок) и множественным (несколько предков);
  • полиморфизм — различные объекты могут по разному реагировать на одинаковые внешние события в зависимости от того, как реализованы их методы.
  • Целостность данных:
  • Для поддержания целостности объектно-ориентированный подход предлагает использовать следующие средства:
  • автоматическое поддержание отношений наследования возможность объявить некоторые поля данных и методы объекта как «скрытые», не видимые для других объектов; такие поля и методы используются только методами самого объекта создание процедур контроля целостности внутри объекта
  • Средства манипулирования данными:

К сожалению, в объектно-ориентированном программировании отсутствуют общие средства манипулирования данными, такие как реляционная алгебра или реляционное счисление. Работа с данными ведется с помощью одного из объектно-ориентированных языков программирования общего назначения, обычно это SmallTalk, C++ или Java.

Подведем теперь некоторые итоги:

В объектно-ориентированных базах данных, в отличие от реляционных, хранятся не записи, а объекты. ОО-подход представляет более совершенные средства для отображения реального мира, чем реляционная модель, естественное представление данных.

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

Имеется возможность определения новых типов данных и операций с ними.

  1. В то же время, ОО-модели присущ и ряд недостатков:
  2. · осутствуют мощные непроцедурные средства извлечения объектов из базы. Все запросы приходится писать на процедурных языках, проблема их оптимизации возлагается на программиста;
  3. · вместо чисто декларативных ограничений целостности (типа явного объявления первичных и внешних ключей реляционных таблиц с помощью ключевых слов PRIMARY KEY и REFERENCES) или полудекларативных триггеров для обеспечения внутренней целостности приходится писать процедурный код.

Очевидно, что оба эти недостатка связаны с отсутствием развитых средств манипулирования данными. Эта задача решается двумя способами — расширение ОО-языков в сторону управления данными (стандарт ODMG), либо добавление объектных свойств в реляционные СУБД (SQL-3, а также так называемые объектно-реляционных СУБД).

Источник: https://studopedia.ru/6_2542_ob-ektno-orientirovannie-subd.html

Объектно-ориентированные СУБД: история развития, связь с общими понятиями объектно-ориентированного подхода

Начиная с 70-80-ых годов ХХ-го века развитие аппаратных средств существенно опережало развитие систем и средств программирования. Чтобы выправить положение, были предложены различные подходы к увеличению производительности труда программиста.

Среди этих попыток выделяется такое популярное направление, как объектно-ориентированный подход (ООП) к конструированию и кодированию программ.

Особую роль в популярности этого подхода сыграло как его тесная связь с интерфейсами пользователя (особенно графическими), так и включение элементов этого подхода в популярные реализации языков программирования C++ и Pascal with Objects фирмы Borland.

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

Среди типовых задач, для которых ООП является перспективным, можно выделить такие:

  • Проектирование сложных инженерных объектов и систем (таких как ракетные комплексы, АСУП и САПР, управление технологиями, автоматизация эксперимента, робототехника) ;
  • Диспетчеризация, планирование современного производства;
  • Сети коммуникации и связи;
  • Системы искусственного интеллекта, системы поддержки принятия решений, экспертные системы;
  • Операционные системы, системы реального времени;
  • Системы имитации и моделирования, тренажеры и т.д.

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

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

Но распространение мощных персональных компьютеров создало в 90-х годах основу для широкого применения объектно-ориентированного подхода в практике проектирования и программирования.

В последнее время более широко начинают использоваться как языки программирования, созданные в рамках объектно-ориентированной методологии, так и объектно-ориентированные СУБД.

В основе объектно-ориентированной методологии (ООМ) лежит объектный подход, когда прикладная предметная область представляется в виде совокупности объектов, которые взаимодействуют между собой посредством передачи сообщений.

Под объектом понимается некоторая сущность (реальна или абстрактная), обладающая состоянием, поведением и индивидуальностью.

Состояние объекта характеризуется перечнем всех его возможных (обычно статических) свойств — структурой и значениями каждого из этих свойств.

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

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

Такой подход позволяет локализовать принимаемые решения рамками объекта, объединяя в нем и структуру и поведение, а следовательно, снижая сложность описания и реализации объекта.

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

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

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

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

Для этого нужно только послать интересующему объекту сообщение, которое представляет требование выполнить некоторые действия.

И если такое требование может быть выполнено принявшим сообщение объектом, то оно выполняется, а если не может быть выполнено, то пославший требование объект информируется о реакции на полученное сообщение.

Для упрощения описания и управления миолм объектов была введена одна из ключевых концепций объектно-ориентированного программирования — идея группировки объектов в классы, в соответствии с тем как они устроены и действуют.

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

Любой конкретный объект представляет собой экземпляр класса.

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

Стандарт ODMG.

ODMG (Object Data Management Group) — консорциум поставщиков ООБД и других заинтересованных организаций, созданный в 1991 г. Его задачей является разработка стандарта на хранение объектов в базах даннных. В настоящее время опубликован вторая версия стандарта, которую так и называют ODMG 2.0. Рассмотрим кратко основные положения этого документа.

Стандарт на хранение объектов ODMG 2.0 разработан на основе трех существующих стандартов: управление базами данных (SQL), объекты (стандарты OMG — Object Management Group) и стандарты на объектно-ориентированные языки программирования (C++, Smalltalk, Java).

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

· Объектная модель — унифицированная основа всего стандарта. Она расширяет объектную модель консорциума OMG (см. параграф 6.3.1) за счет введения таких свойств как связи и транзакции для обеспечения функциональности, требуемой при взаимодействии с базами данных. Ключевые концепции объекной модели ODMG:

  • o наделение объектов такими свойствами как атрибуты и связи
  • o методы объектов (поведение)
  • o множественное наследование
  • o идентификаторы объектов (ключи)

· Язык описания объектов (ODL — Object Defifnition Language) — средство определения схемы базы данных (по аналогии с DDL в реляционных СУБД). ODL является расширением IDL (Interface Definition Language — язык описания интерфейсов) модели OMG и предоставляет средства для определения объектных типов, их атрибутов, связей и методов.

ODL создает слой абстрактных описаний так, что схема базы данных становится независима как от языка программирования, так и от СУБД. ODL рассматривает только описание объектных типов данных, не вдаваясь в детали реализации их методов.

Это позволяет переносить схему БД между различными ODMG-совместимыми СУБД и языками программирования, а также транслировать ее в другие DDL.

· Язык объектных запросов (OQL — Object Query Language) — SQL — подобный декларативный язык, который предоставляет эффективные средства для извлечения объектов из базы данных, включая высокоуровневые примитивы для наборов объектов и объектных структур.

Синтаксис опретора SELECT, определенный SQL-92, является подмножеством OQL, это гарантирует, что SELECT-утверждения, выполняемые над реляционными таблицами, сохранят работоспособность и с наборами объектов ODMG. OQL-запросы могут вызываться из ОО-языка, точно также из OQL-запросов могут делаться обращения к процедурам, написанным на OO-языке.

OQL предоставляет средства обеспечения целостности объектов (вызов объектных методов и использование собственных операторов изменения данных).

· Связывание с ОО-языками.

Стандарт связывания с C++, Smalltalk и Java определяет Object Manipulation Language (OML) — язык манипулирования объектами, который расширяет базовые ОО-языки средствами манипулирования и хранения объектов.

Также включаются OQL, средства навигации и поддержка транзакций. Каждый ОО-язык имеет свой собственный OML, поэтому разработчик остается в одной языковой среде, ему нет необходимости разделять средства программмирования и доступа к данным.

Источник: https://megalektsii.ru/s20356t9.html

Ссылка на основную публикацию