Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Общая харакеристика языка OCL

 

Более точный и лаконичный способ формулировки ограничений обеспечивает язык OCL (Object Constraints Language). Вот общая характеристика этого языка.

 

Из языка UML* в OCL заимствованы, в первую очередь, следующие концепции:

· класс, атрибут, операция;

· объект (экземпляр класса);

· ассоциация;

· тип данных (включая набор предопределенных типов Boolean, Integer, Real и String);

· значение (экземпляр типа данных).

 

Для понимания языка OCL существенно определяемые в UML традиционные для объектных моделей данных различия между объектом некоторого класса и значением некоторого типа:

· объект обладает уникальным идентификатором и может сравниваться с другими объектам только по значению идентификатора; следствием этого является возможность определения операций над множествами объектов в терминах их идентификаторов**;

· объект может быть ассоциирован через бинарную связь*** с другими объектами, что позволяет определить в OCL операцию перехода от данного объекта к связанным с ним объектам;

· в то же время значение является “чистым значением” в том смысле, что

§ при сравнении двух значений проверяются сами эти значения, и, кроме того,

§ значения не могут участвовать в связях, поскольку понятие связи определено только для объектов классов.

 

В дополнение к скалярным типам данных, заимствованным из UML, в OCL предопределены структурные типы, которые являются разновидностями типов коллекций (collection):

· математическое множество (set), неупорядоченная коллекция, не содержащая одинаковых элементов;

· мультимножество (bag), неупорядоченная коллекция, которая может содержать повторяющиеся элементы-дубликаты;

· последовательность (sequence), упорядоченная коллекция, которая может содержать элементы-дубликаты.*

 

В OCL элементами каждого из трех типов коллекций могут быть либо объекты, либо значения.

 

Язык OCL, главным образом, предназначен для определения ограничений целостности данных, соответствующих модели, которая представлена в терминах диаграммы классов UML. OCL может применяться для определения ограничений, описывающих пред- и постусловия операций классов, и ограничений, представляющих собой инварианты классов. При проектировании реляционных баз данных возможность определения пред- и постусловий операций вряд ли может оказаться существенной**. С точки зрения определения ограничений целостности баз данных более важны средства определения инвариантов классов.

 

Инвариант класса

 

Под инвариантом класса в OCL понимается условие, которому должны удовлетворять все объекты данного класса. Более точно, инвариант класса – это логическое выражение, вычисление которого должно давать true при создании любого объекта данного класса и сохранять истинное значение в течение всего времени существования этого объекта. При определении инварианта требуется указать имя класса и выражение, определяющее инвариант указанного класса. Синтаксически это выглядит следующим образом:

 

context <class_name> inv:
<OCL-выражение>

 

Здесь <class-name> является именем класса, для которого определяется инвариант, inv – ключевое слово, говорящее о том, что определяется именно инвариант, а не ограничение другого вида, и context – ключевое слово, которое говорит о том, что контекстом следующего после двоеточия OCL-выражения являются объекты класса <class-name>, то есть OCL-выражение должно принимать значение true для всех объектов этого класса.

 

Заметим, что OCL является типизированным языком, поэтому у каждого выражения имеется некоторый тип. Естественно, что OCL-выражение в инварианте класса должно быть логического типа.

 

В общем случае OCL-выражение в определении инварианта основывается на композиции операций, которым посвящена большая часть определения языка. В спецификации языка эти операции условно разделены на следующие группы:

· операции над значениями предопределенных в UML (скалярных) типов данных;

· операции над объектами;

· операции над множествами;

· операции над мультимножествами;

· операции над последовательностями.

 

Последовательно обсудим эти группы операций.

 

<== предыдущая лекция | следующая лекция ==>
Ограничения целостности и язык OCL | Операции над объектами
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 262; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.