Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.62 Mб
Скачать

Объекты вида родитель/подтип

Чтобы понять, что представляют собой объекты вида родитель/подтип (parent/subtype objects), рассмотрим объект СТУДЕНТ на рис. 3.39а. Некоторые атри­буты объекта СТУДЕНТ относятся ко всем студентам, а некоторые только к тем студентам, которые являются спортсменами. Объект на рис. 3.39а не слишком точно отражает действительность, поскольку атрибуты, свойственные спортсменам, не подходят для студентов, не являющихся спортсменами.

Более удачная модель показана на рис. 3.39б. Здесь объект СТУДЕНТ содер­жит объект подтипа СПОРТСМЕН. Все атрибуты, относящиеся к спортсменам, перенесены в объект СПОРТСМЕН. Студенты, не являющиеся спортсменами, имеют один экземпляр объекта СТУДЕНТ и ни одного экземпляра объекта СПОРТСМЕН. Студенты-спортсмены имеют по одному экземпляру объектов СТУДЕНТ и СПОРТСМЕН. В этом примере объект СТУДЕНТ называется родительским объектом (parent object), или объектом надтипа (supertype object), а объект СПОРТСМЕН называется объектом подтипа (subtype object).

Рис. 3.39. Необходимость введения подтипа СПОРТСМЕН: а – объект СТУДЕНТ без подтипа; б – объект СТУДЕНТ с подтипом СПОРТСМЕН.

Первым атрибутом подтипа является родительский объект, обозначенный индексом Р. Указание родительского атрибута является обязательным всегда. Идентификаторы у подтипа те же, что и у родителя. На рис. 3.39 атрибуты ФИО студента и Группа студента являются идентификаторами как объекта СТУДЕНТ, так и объекта СПОРТСМЕН.

Атрибуты подтипа показываются с помощью индексов O.ST или 1.ST. Первая цифра (0 или 1) – это минимальное кардинальное число подтипа. Если оно рав­но 0, подтип является необязательным, а если 1, то подтип является обяза­тельным. Буквы ST (subtype – подтип) указывают на то, что атрибут является подтипом, или атрибутом типа «ЕСТЬ».

Объекты вида родитель/подтип обладают важной характеристикой, называемой наследованием. Подтип приобретает, или наследует, все атрибуты своего родителя, и поэтому объект СПОРТСМЕН наследует все атрибуты объекта СТУДЕНТ. Вдобавок родитель приобретает все атрибуты своих подтипов, и студент, являющийся спортсменом, приобретает все атрибуты спортсмена.

Иногда подтипы исключают друг друга. То есть, например, транспортное средство может быть легковым автомобилем или грузовиком, но не тем и другим одновременно. Студент может быть главой профбюро, специалистом программирования, но только одним из этих двух типов. Когда подтипы исключают друг друга, они помещаются в группу подтипов, и группе присваивается индекс в формате X.Y.Z. X – это минимальное кардинальное число, равное 0 или 1, в зависимости от того, является ли группа подтипов обязательной, Y и Z указывают количество атрибутов в группе, которым разрешается иметь значение Y – минимальное ко­личество, Z – максимальное.

На рис. 3.40 два типа студентов изображены как группа подтипов. Индекс группы 0.1.1 означает, что подтип не требуется, но если он существует, в группе должен существовать минимум один и максимум один подтип (иначе говоря, ровно один). Заметьте, что каждый из подтипов имеет индекс O.ST, то есть все они являются необязательными, как и должно быть. Если бы все они были обя­зательными, максимальное количество атрибутов было бы 2, а не 1. Эта запись достаточно надежна, чтобы предусмотреть ситуации, когда обязательными явля­ются три из пяти или семь из десяти подтипов.

Рис. 3.40. Взаимоисключающие подтипы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]