- •Содержание
- •Введение
- •Основные понятия диаграмм классов uml
- •Классы, атрибуты, операции
- •Категории связей. Связь-зависимость
- •Связи-обобщения и механизм наследования классов в uml
- •Связи-ассоциации: роли, кратность, агрегация
- •Ограничения целостности и язык ocl
- •Общая характеристика языка ocl
- •Инвариант класса
- •Операции над значениями предопределенных типов данных
- •Операции над объектами
- •Операции над множествами, мультимножествами и последовательностями
- •Операция select
- •Операция collect
- •Операции exists, forAll, size
- •Операции union, intersect, symmetricDifference
- •Примеры инвариантов
- •Плюсы и минусы использования языка ocl при проектировании реляционных баз данных
- •Получение схемы реляционной базы данных из диаграммы классов uml
- •Заключение
Ограничения целостности и язык ocl
Как уже отмечалось, в диаграммах классов могут указываться ограничения целостности, которые должны поддерживаться в проектируемой БД. В UML допускаются два способа определения ограничений: на естественном языке и на языке OCL. На рис. 10.13 показана простая диаграмма классов Студент и Университет с ограничением, выраженным на естественном языке.
Рис. 10.13. Ограничение, выраженное на естественном языке
В данном случае накладывается ограничение на состояние объектов классов Студент и Университет, входящих в один экземпляр ассоциации. Объект класса Студент может входить в экземпляр связи с объектом класса Университет только при условии, что размер стипендии данного студента находится в диапазоне, допустимом в данном университете.
Общая характеристика языка ocl
Более точный и лаконичный способ формулировки ограничений обеспечивает язык OCL (Object Constraints Language). Вот общая характеристика этого языка.
Из языка UML 1) в OCL заимствованы, в первую очередь, следующие концепции:
класс, атрибут, операция ;
объект (экземпляр класса );
ассоциация ;
тип данных (включая набор предопределенных типов Boolean, Integer, Real и String);
значение (экземпляр типа данных).
Для понимания языка OCL существенны определяемые в UML традиционные для объектных моделей данных различия между объектом некоторого класса и значением некоторого типа:
объект обладает уникальным идентификатором и может сравниваться с другими объектами только по значению идентификатора; следствием этого является возможность определения операций над множествами объектов в терминах их идентификаторов 2) ;
объект может быть ассоциирован через бинарную связь 3) с другими объектами, что позволяет определить в OCL операцию перехода от данного объекта к связанным с ним объектам;
в то же время значение является "чистым значением" в том смысле, что:
при сравнении двух значений проверяются сами эти значения;
кроме того, значения не могут участвовать в связях, поскольку понятие связи определено только для объектов классов.
В дополнение к скалярным типам данных, заимствованным из UML, в OCL предопределены структурные типы, которые являются разновидностями типов коллекций (collection):
математическое множество (set), неупорядоченная коллекция, не содержащая одинаковых элементов;
мультимножество (bag), неупорядоченная коллекция, которая может содержать повторяющиеся элементы-дубликаты;
последовательность (sequence), упорядоченная коллекция, которая может содержать элементы-дубликаты. 4)
В OCL элементами каждого из трех типов коллекций могут быть либо объекты, либо значения.
Язык OCL предназначен, главным образом, для определения ограничений целостности данных, соответствующих модели, которая представлена в терминах диаграммы классов UML. OCL может применяться для определения ограничений, описывающих пред- и постусловия операций классов, и ограничений, представляющих собой инварианты классов. При проектировании реляционных баз данных возможность определения пред- и постусловий операций вряд ли может оказаться существенной 5). С точки зрения определения ограничений целостности баз данных более важны средства определения инвариантов классов.