- •Часть 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.3. Классы
В ОО-системах объекты классифицируются в соответствии с их схожестью и различием. Объекты, имеющие общие свойства, группируются в классы. Т.е. класс представляет собой набор подобных объектов с разделяемыми структурой (атрибутами) и поведением (методами).
Класс содержит подробное описание структуры данных и реализации методов для объектов данного класса. Поэтому все объекты в классе используют одинаковую структуру и отвечают на одинаковые сообщения. Кроме того, класс действует на буфер памяти для схожих объектов. Каждый объект в классе представляет собой экземпляр класса (class instance) или экземпляр объекта (object instance).
Рис.15. Пример класса
Определим класс с именем STUDENT для хранения объектов-студентов. Все объекты класса STUDENT используют одинаковую структуру (атрибуты) и отвечают на одинаковые сообщения (с помощью методов). Каждый экземпляр класса представляет собой объект с уникальным OID и каждый объект ‘знает’, какому классу он принадлежит.
Рис.16. Представление класса STUDENT
1.4.4.4. Протокол
Набор сообщений класса, каждое с определенным именем, составляет протокол класса или объекта. Протокол представляет внешнюю (public) сторону объекта, т.е. он известен другим объектам, а также конечным пользователям. И наоборот, реализация структуры объекта и методов представляют внутренний (private) аспект объекта.
Рис.17. Внешняя и внутренняя стороны объекта
Обычно сообщение посылается экземпляру объекта, но можно также послать сообщение классу, а не объекту. Когда получателем сообщения является класс, сообщение будет инициировать метод класса. Примером метода класса является метод New. Метод класса New создает новый экземпляр объекта (с уникальным OID) в классе-получателе. Поскольку объект еще не существует, сообщение New адресуется классу, а не объекту.
Концепции объектно-ориентированного подхода представлены на рис. 18.
Рис. 18. Объектно-ориентированный подход: свойства объекта
1.4.4.5. Суперклассы, подклассы, наследование
Классы организуются в иерархию классов. Иерархия классов напоминает перевернутое кроной вниз дерево, в котором у каждого класса есть только один родительский класс. В случае, если классы имеют несколько родительских классов, иерархию классов называют сеткой классов (class lattice). Класс служит для распределения по группам объектов, имеющим одинаковые свойства. На рис.19 представлена иерархия классов музыкальных инструментов.
Рис.19.
Иерархия классов музыкальных инструментов
Иерархия классов обеспечивает мощную концепцию ОО-подхода, которая называется наследованием. Наследование (inheritance) – это возможность объекта внутри иерархии наследовать структуру данных и поведение (методы) классов, находящихся выше него. Именно наследованием в ОО-системах обеспечивается многократное использование кода.
В ОО-системах все объекты производятся от суперкласса Object или класса Root. Поэтому все классы совместно используют свойства и методы суперкласса Object. Наследование данных и методов происходит сверху вниз по иерархии классов. Существуют два варианта наследования: единичное (single) и множественное (multiple).
