OpenU.Ru
Свойство множества значений, например множества объектов, связанных с другим
объектом при помощи ассоциации. Указывает, является ли множество упорядоченным
или неупорядоченным.
См. association; association
end; multiplicity.
Семантика
Если верхняя граница множественности у полюса ассоциации больше единицы, то
с каждым из объектов, находящихся у другого полюса бинарной ассоциации, ассоциировано
множество объектов. Свойство упорядоченности указывает, является ли это множество
упорядоченным или нет. Если оно не упорядочено, то объекты располагаются в беспорядке,
образуя обычное множество. Если же оно упорядочено, то его элементы имеют явный
порядок. Порядок элементов представляет собой масть информации, предоставляемой
ассоциацией, - то есть дополнительную информацию, которой нет у самих элементов.
Получить элементы в этом случае можно только в заданном порядке. Когда к ассоциации
добавляется новая связь, операция, добавившая ее, должна также указать ее место
в общей последовательности. Это место может быть задано аргументом операции
или же остаться неявным. Например, данная операция может временно разместить
новую связь на конце существующего списка связей, однако ее место в списке должно
быть каким-либо образом специфицировано.
Обратите внимание, что упорядоченное множество не совпадает с множеством, чьи
элементы отсортированы по одному или нескольким атрибутам. Сортировка полностью
определяется значениями объектов данного множества. Следовательно, она не несет
в себе никакой дополнительной информации, хотя и может быть полезна при моделировании
отношений доступа. Информация, которая содержится в упорядоченной ассоциации,
дополняет ту информацию, которая содержится в самих элементах.
Свойство упорядоченности применимо к любому элементу, который имеет множественность,
например, к атрибуту, множественность которого больше единицы.
Упорядоченное отношение можно реализовать несколькими различными способами,
однако, как правило, реализацию задают как свойство при генерации кола, определяемое
языком программирования. Какое-либо расширение реализации может подменять собой
структуру данных, чтобы элементы сохраняли спецификацию ordered (упорядоченный).
Для отсортированного множества нужна отдельная спецификация правила сортировки,
которую лучше всего задавать в виде ограничения.
Нотация
Упорядоченность множества указывается в виде ключевого слова, стоящего в фигурных
скобках у того конца маршрута, к которому применяется упорядоченность (рис.
138). Отсутствие ключевого ввода {ordered} указывает на неупорядоченность. Кроме
него, для обозначения множества, отсортированного каким-либо образом согласно
внутренним значениям, можно использовать ключевое слово {sorted}.
Если у атрибута множественность больше единицы, то одно из упорядочивающих ключевых
слов можно поместить после строки атрибута, взяв его в фигурные скобки как часть
строки свойств.
Рис. 138. Упорядоченные и неупорядоченные множества
Если ключевого слова, указывающего на упорядоченность, нет, значит, множество
не упорядочено.
Обсуждение
Упорядоченное множество обладает информацией, которая является дополнительной
по сравнению с информацией, которую несут сами сущности, располагающиеся во
множестве. Эта информация реальна, следовательно, ее нельзя вывести, а можно
только указать при добавлении какой-либо сущности. Другими словами, любая операция,
добавляющая новую сущность, должна определять место этой сущности в списке других
сущностей. Разумеется, операцию можно реализовать таким образом, что новая сущность
будет размещаться в неопределенном месте, - например, в начале или конце общего
списка. Упорядоченность множества не означает, что будет возможна произвольная
упорядоченность элемента. Это относится к решениям, ответственность за которые
лежит на разработчике. Вообще же, место новой сущности в списке является параметром
операции создания.
Обратите внимание, что упорядоченность бинарной ассоциации должна быть определена
отдельно для каждого направления. Пели множественность в данном направлении
меньше единицы, то упорядоченность теряет смысл. Ассоциация может вообще не
быть упорядоченной, может быть упорядоченной, но только в одном направлении,
или же она может быть упорядоченной в обоих направлениях.
Предположим, между классами А и В существует ассоциация, которая упорядочена
в направлении В. Тогда, как правило, новая связь будет добавляться в виде операции
для объекта класса А, которая определяет объект класса В и место новой связи
в списке существующих объектов этого класса. Нередко при выполнении операции
для объекта класса А создается новый объект класса В, а также связь между ними.
Этот объект должен добавляться к списку связей, которые поддерживает А. В принципе
можно создать новую связь со стороны класса В, однако, как правило, новая связь
вводится в место списка "от А к B" , заданное по умолчанию, так как
с точки зрения класса В его позиция в этом списке едва ли имеет значение. Разумеется,
в случае необходимости, программист может реализовать в программном коде и более
сложные ситуации.
Ассоциация, упорядоченная в обоих направлениях, встречается более редко, так
как определять точку внедрения объекта для обоих направлений не так уж удобно.
Тем не менее, это возможно, особенно если новые связи добавляются в места, оговоренные
по умолчанию для любого из направлений.
Обратите внимание, что отсортированное множество не имеет никакой информации,
кроме той, которую несут сами сущности, находящиеся в этом множестве. Сортировка
экономит время алгоритму, однако не вносит ничего нового. Ее можно рассматривать
как оптимизацию с позиции проектирования и вообще не включать в аналитическое
представление модели. Сортировку можно определить как значение свойства упорядочения,
при котором не требуется, чтобы, операция указывала место новой сущности в данном
множестве. Место новой сущности в этом случае определяется автоматически при
помощи метода - путем проверки атрибутов, на основе которых сортируется список.