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

Представление слабых сущностей

На рис. 3.13 изображено UML-представление слабых сущностей. На линии связи рядом с родителем слабой сущности (то есть рядом с сущностью, от которой зави­сит слабая сущность) помещается закрашенный ромб. На рис. 3.13, и сущность РЕЦЕПТ является слабой сущностью, а сущность СТУДЕНТ (пациент) ее родителем. Все сла­бые сущности имеют родителя, поэтому их кардинальность в связи с родителем всегда 1..1. Исходя из этого, кардинальность на родительской стороне обознача­ется просто как 1.

Рис. 3.13. Представление слабых сущностей в UML: а – слабая сущность, не являющаяся идентификационно-зависимой; б – идентификационно-зависимая слабая сущность.

На рис. 3.13а показана слабая сущность, не являющаяся идентификационно-зависимой. Это обозначается выражением <non-identifying> (не идентифицирую­щая) на связи СТУДЕНТ (пациент)-РЕЦЕПТ. На рис. 3.13б изображена идентификационно-зависимая слабая сущность. На это указывает ярлык <identifying> (идентифици­рующая).

Представление подтипов

Способ представления подтипов в UML показан на рис. 3.14. На этом рисунке до­пустимыми подтипами сущности Студент являются ГЛАВА_ПРОФБЮРО и СПЕЦИАЛИСТ_ПРОГРАММИРОВАНИЯ. В соответствии с рисунком, каждый студент может иметь один или два указанных подтипа. Для данной ситуации это не имеет смысла: студент должен быть одного и только одного типа. Текущая версия UML не предоставляет способов для документирования взаимоисключаемости. Мож­но, однако, добавить в диаграмму соответствующее обозначение.

Рис. 3.14. Представление подтипов в UML.

На рис. 3.15 представлена UML-версия диаграммы «сущность-связь», пока­занной ранее на рис. 3.11. Поскольку связь между сущностями НАУЧНАЯ РАБОТА и ТЕМА РАБОТЫ имеет атрибут Финансирование, для несения этого атрибута выделена специальная сущ­ность ДОГОВОР_ДЛЯ_ВЫПОЛНЕНИЯ_ НАУЧНОЙ_РАБОТЫ. Такова стандартная практика при использовании средств UML. Обратите также внимание на представление рекурсивной связи ЦЕЛЬ РАБОТЫ.

Рис. 3.15. UML-версия диаграммы «сущность-связь» с рис. 3.11.

Конструкции ооп, введенные языком uml

Так как UML является объектно-ориентированной технологией, к классам сущ­ностей UML были добавлены некоторые конструкции ООП. Во-первых, классы всех сущ­ностей, которые должны храниться в базе данных, помечаются стереотипом «Persistent» (устойчивый). Это означает, что существование данных должно продолжаться даже после того, как будет разрушен объект, их обрабатывавший. Проще говоря, это значит, что класс сущности должен храниться в базе данных.

Далее, UML допускает назначение атрибутов классам сущностей. Атрибуты класса (class attributes) отличаются от атрибутов сущностей тем, что они при­надлежат всему классу сущностей данного типа. Так, на рис. 3.16 атрибут Число пациентов сущности СТУДЕНТ (пациент) является атрибутом всей совокупности сущностей этого типа, имеющихся в базе данных. Источник поступления это атрибут, до­кументирующий источник поступления всех пациентов, присутствующих в базе данных.

Как вы позже узнаете, в рамках реляционной модели такие атрибуты классов просто негде хранить. Вместо того чтобы хранить атрибуты вроде Число паци­ентов в базе данных, они иногда вычисляются на этапе выполнения программы. В других случаях для хранения этих атрибутов выделяется специальный класс сущностей. Для класса сущностей СТУДЕНТ (пациент), изображенного на рис. 3.16, мож­но создать новую сущность под названием ИСТОЧНИК_ПОСТУПЛЕНИЯ_ ПАЦИЕНТА, имеющую атрибуты Число пациентов и Источник поступления. В таком случае все сущности класса СТУДЕНТ (пациент) будут связаны с сущностью ИСТОЧНИК_ПОСТУПЛЕНИЯ_ПАЦИЕНТА.

Рис. 3.16. Представление классов сущностей в UML с помощью конструкций ООП.

Третьей новой особенностью является то, что UML использует объектно-ори­ентированную нотацию для обозначения видимости атрибутов и методов. Атри­буты, именам которых предшествует знак «+», являются открытыми, атрибуты со знаком «#» являются защищенными, а со знаком «-» закрытыми. На рис. 3.16 атрибут ФИО сущности СТУДЕНТ (пациент) является защищенным.

Эти термины имеют корни в объектно-ориентированном программировании. Открытым (public) называется такой атрибут, который может читаться и изме­няться любым методом любого объекта. Термин защищенный (protected) означа­ет, что атрибут или метод доступен только для методов данного класса и его под­классов, а термин закрытый (private) указывает на то, что соответствующий атрибут или метод доступен только для методов данного класса.

Наконец, в UML задаются ограничения и методы, для чего служит третий сегмент прямоугольника, изображающего класс сущностей. На рис. 3.16 на зна­чение атрибута Номер пациента налагается ограничение первичного ключа. Это означает просто, что Номер пациента является уникальным идентификатором. Кроме того, рис. 3.16 указывает, что должны быть созданы следующие методы: Получить ФИО () для открытого доступа к атрибуту ФИО обратите внимание на знак «+» перед Получить ФИО (), Ввести ФИО () для установки значения этого атри­бута, и Получить рецепт () - для перебора совокупности сущностей класса РЕЦЕПТ, связанных с данной сущностью СТУДЕНТ (пациент).

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