- •Часть I. Теория баз данных
- •Глава I. Системы файлов и базы данных
- •Оценка системы файлов
- •1.2. Понятие базы данных и системы управления базами данных.
- •1.3 Архитектура бд
- •Концептуальная модель
- •Внутренняя модель
- •Физическая модель
- •1.4 Модели баз данных
- •1.4.1 Иерархическая модель данных
- •1.4.2 Сетевая модель данных
- •1.4.3 Реляционная модель данных
- •Нормализация отношений
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормальная форма Бойса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •Денормализация
- •Методы реализации денормализации
- •1.4.4. Объектно-ориентированная модель данных
- •1.4.4.1. Атрибуты
- •1.4.4.2. Состояние объекта. Сообщения и методы
- •1.4.4.3. Классы
- •1.4.4.4. Протокол
- •1.4.4.5. Суперклассы, подклассы, наследование
- •1.4.4.6. Единичное наследование. Множественное наследование.
- •1.4.4.7. Переопределение методов и полиморфизм
- •1.4.4.8. Абстрактные типы данных
- •1.4.4.9. Классификация объектов
- •1.4.4.10. Свойства объектно-ориентированных моделей данных
- •1.5.1 Сущности
- •1.5.2 Атрибуты
- •1.5.3. Связи
- •1.5.4. Сравнение обозначений в er-моделировании
- •1.5.5. Разработка er-диаграмм
1.4.4.1. Атрибуты
Объекты описываются их атрибутами, называемыми переменными экземпляра (instance variables). Каждый атрибут имеет уникальное имя и тип данных.
Традиционные типы данных, называемые базовыми типами данных (base data types) или договорные типы данных (conventional data types), используются в большинстве языков программирования и включают типы real (вещественный), integer (целый), string (строковый) и т.д.
Для атрибутов определены домены – логические группы, представляющие собой набор возможных значений данного атрибута. Типы данных определяют базовые домены, т.е. тип real представляет собой все вещественные числа, тип integer – все целые числа, тип date – все возможные даты, тип string – любые комбинации символов и т.д. Однако домены базовых типов данных представляют собой лишь основу, используемую для создания более ограниченных именованных доменов на более высоком логическом уровне. Например, мы можем создать домен SRTEMP (средняя температура). Для точного определения домена атрибута SRTEMP мы должны создать домен с именем ‘SRTEMP’. Каждый домен имеет имя и описание, включая базовый тип данных, размер, формат и ограничения на значения домена. Поэтому мы можем определить домен ‘SRTEMP’ как любое вещественное число с двумя знаками после запятой. Домен может также определяться как список возможных значений, разделенных запятыми. Например, домен ‘STUDENT’ может быть определен как (NSTUD, FIO, GR, LANGUAGE).
Так же как и в ER-модели, атрибут объекта может быть однозначным или многозначным, т.е. атрибут может получить из своего домена одно или несколько значений. Например, в домене STUDENT атрибут NSTUD получает из домена только одно значение, т.к. студент имеет только один номер студенческого билета, а атрибут LANGUAGE может иметь несколько значений, т.к. студент может изучать несколько языков. Атрибуты объекта могут ссылаться на один или более объектов. На уровне реализации для ссылки на объект используется его OID, что позволяет реализовать связи между двумя и более объектами. Объект, содержащий в себе список других объектов, называется объект-набор (collection object).
1.4.4.2. Состояние объекта. Сообщения и методы
Состояние объекта (object state) представляет собой набор значений атрибутов объекта в данный момент времени. При изменении состояния объекта его OID остается неизменным. Если нужно изменить состояние объекта, то мы должны изменить значения атрибутов объекта. Для этого надо послать объекту сообщение, которое будет инициировать метод.
Метод (method) представляет собой код, выполняющий определенные операции над данными, принадлежащими объекту. Методы защищают данные от прямого и неавторизированного доступа из других объектов.
Схема объекта представления на рис.13.
Рис.13. Представление объекта.
Все операции, выполняемые объектом реализуются с помощью методов. Методы используются для изменения значений атрибутов объекта или для получения значений указанных атрибутов. Методы представляют собой реальные действия, такие, например, как изменение специализации студента, добавление студента в группу, распечатка адресов студентов и т.д. Можно сказать, что методы эквивалентны процедурам в традиционных языках программирования. В терминах ОО методы определяют поведение объекта.
Для каждого метода определяются имя (name) и тело (body). Тело состоит из компьютерных инструкций на некотором языке программирования, описывающих некоторое реальное действие. Например, можно определить метод AvegSRTEMP, возвращающий среднюю температуру по месяцам. Метод AvegSRTEMP выполняет следующие преобразования. Если в январе 31 день, средняя температура была -5°, в феврале 28 дней, средняя температура была -10° и т.д., то возвращаемое методом AvegSRTEMP значение будет
((-10)+(-5)+…)/12=число
Для инициализации метода объекту посылается сообщение. При отправлении сообщения (message) задаются объект-адресат, имя метода и все необходимые параметры. Отправитель сообщения (другой объект) не может обратиться напрямую к внутренней структуре объекта. Запрет доступа к внутренней структуре объекта гарантирует целостность состояния объекта и скрывает детали внутренней реализации объекта. Скрытые внутренних деталей объекта (атрибутов и методов) называется инкапсуляцией (encapsulation).
Объект может также посылать сообщения для изменения состояния или опроса текущего состояния объекта. Опрос состояния (interrogate) означает выяснение у целевого объекта текущих значений экземпляров объекта. Для выполнения этих задач тело метода может содержать ссылки на методы других объектов.
Рис.14.
Обмен сообщениями между объектами
