Главная Обратная связь Поможем написать вашу работу!

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Диаграммы классов языка UML. Категории связей и их отображение на диаграмме. Примеры



Связью-обобщением называется связь между общей сущностью (суперкласс/родителем) и более специализированным типом этой сущности (подкласс/потомок).

Полиморфизмом по включению – объекты потомка могут использоваться везде, где могут использоваться объекты предка. Потомок наследует все атрибуты и операции предка.

У класса есть скрытое свойство isAbstract – может ли класс иметь объекты.

Множественное наследование – подкласс определяется на основе нескольких суперклассов.

 

Ассоциацией называется структурная связь между объектами одного класса и объектами другого или того же самого класса (изображается линией).

В ассоциации могут связываться два класса, и тогда она называется бинарной. Допускается создание ассоциаций, связывающих n классов – n-арные ассоциации.

 

С ассоциацией связаны 5 важных понятий: имя, роль, кратность, агрегация и навигация.

У связи может быть имя, треугольник указывает направление чтения имени связи; у каждого класса может быть роль в ассоциации;

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

Агрегация в UML используется для отображения связи «часть-целое» (класс-целое имеет более высокий концептуальный уровень).

Иногда связь «части» и «целого» настолько сильна, что «часть» может быть частью только 1 «целого», и уничтожение «целого» приводит к уничтожению всех его «частей». Такие агрегации– композитные.

Навигация может осуществляться в обоих направлениях. Для некоторых ассоциаций желательно ограничить навигацию (стрелка).

С точки зрения библиотеки разумно произвести навигацию от объекта-библиотеки к связанным с ним объектам-книгам. Однако вряд ли потребуется по данному экземпляру книги узнать, в какой библиотеке она находится

 


 

Язык OCL. Инварианты OCL. Основные типы данных и выражения.

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



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

  • класс, атрибут, операция;
  • объект (экземпляр класса);
  • ассоциация;
  • тип данных (включая набор типов Boolean, Integer, Real и String);
  • значение (экземпляр типа данных).

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

  • математическое множество (set), неупорядоченная коллекция, нет одинаковых элементов;
  • мультимножество (bag), неупорядоченная коллекция, которая может содержать элементы-дубликаты;
  • последовательность (sequence), упорядоченная коллекция, которая может содержать элементы-дубликаты.
  • упорядоченное множнество (ordered set), упорядоченная коллекция, нет одинаковых элементов;

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

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

Синтаксис определения инварианта:

context <class_name> inv:

<OCL-выражение>

Пример (существует человек, обладающий контрольным пакетом акций)

Context Компания inv:

Self.акционер =>Exists



(a:человек|a.количествоакций >= self.количествоакций div 2 +1)

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

<объект>.<имя_атрибута> (значение атрибута)

<объект>.<имя_роли> (переход по соединению, под именем имеется ввиду имя роли объекта на другом конце связи)

<объект>.<имя_операции>(фактический параметр, т.е. можно вызвать операцию)

Операции над коллекциями

<коллекция> <имя операции> (<список фактических параметров>)

Select(iterat/логическое выражение) Результат – новая коллекция (из старых элементов, удовлетворяющих логическому выражению)
collect(iterat/выражение) Результат – новая коллекция (элементы вычисляются по выражению)
exists(iterat/логическое выражение) True, если выполнено хоты бы для 1 элемента
forAll(iterat/логическое выражение) True, если выполнено для всех элементов
Size() Число элементов
union, intersect, symmetricDifference  
At(index)  
Count(element)  
Includes/excludes(element)  
Тип Операции
Boolean And or xor implies if_then_else
Integer +-*/ div mod min max сравнение
Real +-*/ abs float round min max сравнение
String Concat size substring toUpper toLower

 


Просмотров 479

Эта страница нарушает авторские права




allrefrs.ru - 2021 год. Все права принадлежат их авторам!