Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

ordering (упорядоченность)

Свойство множества значений, например множества объектов, связанных с другим объектом при помощи ассоциации. Указывает, является ли множество упорядоченным или неупорядоченным.
См. association; association end; multiplicity.

Семантика

Если верхняя граница множественности у полюса ассоциации больше единицы, то с каждым из объектов, находящихся у другого полюса бинарной ассоциации, ассоциировано множество объектов. Свойство упорядоченности указывает, является ли это множество упорядоченным или нет. Если оно не упорядочено, то объекты располагаются в беспорядке, образуя обычное множество. Если же оно упорядочено, то его элементы имеют явный порядок. Порядок элементов представляет собой масть информации, предоставляемой ассоциацией, - то есть дополнительную информацию, которой нет у самих элементов. Получить элементы в этом случае можно только в заданном порядке. Когда к ассоциации добавляется новая связь, операция, добавившая ее, должна также указать ее место в общей последовательности. Это место может быть задано аргументом операции или же остаться неявным. Например, данная операция может временно разместить новую связь на конце существующего списка связей, однако ее место в списке должно быть каким-либо образом специфицировано.
Обратите внимание, что упорядоченное множество не совпадает с множеством, чьи элементы отсортированы по одному или нескольким атрибутам. Сортировка полностью определяется значениями объектов данного множества. Следовательно, она не несет в себе никакой дополнительной информации, хотя и может быть полезна при моделировании отношений доступа. Информация, которая содержится в упорядоченной ассоциации, дополняет ту информацию, которая содержится в самих элементах.
Свойство упорядоченности применимо к любому элементу, который имеет множественность, например, к атрибуту, множественность которого больше единицы.
Упорядоченное отношение можно реализовать несколькими различными способами, однако, как правило, реализацию задают как свойство при генерации кола, определяемое языком программирования. Какое-либо расширение реализации может подменять собой структуру данных, чтобы элементы сохраняли спецификацию ordered (упорядоченный).
Для отсортированного множества нужна отдельная спецификация правила сортировки, которую лучше всего задавать в виде ограничения.

Нотация

Упорядоченность множества указывается в виде ключевого слова, стоящего в фигурных скобках у того конца маршрута, к которому применяется упорядоченность (рис. 138). Отсутствие ключевого ввода {ordered} указывает на неупорядоченность. Кроме него, для обозначения множества, отсортированного каким-либо образом согласно внутренним значениям, можно использовать ключевое слово {sorted}.
Если у атрибута множественность больше единицы, то одно из упорядочивающих ключевых слов можно поместить после строки атрибута, взяв его в фигурные скобки как часть строки свойств.

Рис. 138. Упорядоченные и неупорядоченные множества
Если ключевого слова, указывающего на упорядоченность, нет, значит, множество не упорядочено.

Обсуждение

Упорядоченное множество обладает информацией, которая является дополнительной по сравнению с информацией, которую несут сами сущности, располагающиеся во множестве. Эта информация реальна, следовательно, ее нельзя вывести, а можно только указать при добавлении какой-либо сущности. Другими словами, любая операция, добавляющая новую сущность, должна определять место этой сущности в списке других сущностей. Разумеется, операцию можно реализовать таким образом, что новая сущность будет размещаться в неопределенном месте, - например, в начале или конце общего списка. Упорядоченность множества не означает, что будет возможна произвольная упорядоченность элемента. Это относится к решениям, ответственность за которые лежит на разработчике. Вообще же, место новой сущности в списке является параметром операции создания.
Обратите внимание, что упорядоченность бинарной ассоциации должна быть определена отдельно для каждого направления. Пели множественность в данном направлении меньше единицы, то упорядоченность теряет смысл. Ассоциация может вообще не быть упорядоченной, может быть упорядоченной, но только в одном направлении, или же она может быть упорядоченной в обоих направлениях.
Предположим, между классами А и В существует ассоциация, которая упорядочена в направлении В. Тогда, как правило, новая связь будет добавляться в виде операции для объекта класса А, которая определяет объект класса В и место новой связи в списке существующих объектов этого класса. Нередко при выполнении операции для объекта класса А создается новый объект класса В, а также связь между ними. Этот объект должен добавляться к списку связей, которые поддерживает А. В принципе можно создать новую связь со стороны класса В, однако, как правило, новая связь вводится в место списка "от А к B" , заданное по умолчанию, так как с точки зрения класса В его позиция в этом списке едва ли имеет значение. Разумеется, в случае необходимости, программист может реализовать в программном коде и более сложные ситуации.
Ассоциация, упорядоченная в обоих направлениях, встречается более редко, так как определять точку внедрения объекта для обоих направлений не так уж удобно. Тем не менее, это возможно, особенно если новые связи добавляются в места, оговоренные по умолчанию для любого из направлений.
Обратите внимание, что отсортированное множество не имеет никакой информации, кроме той, которую несут сами сущности, находящиеся в этом множестве. Сортировка экономит время алгоритму, однако не вносит ничего нового. Ее можно рассматривать как оптимизацию с позиции проектирования и вообще не включать в аналитическое представление модели. Сортировку можно определить как значение свойства упорядочения, при котором не требуется, чтобы, операция указывала место новой сущности в данном множестве. Место новой сущности в этом случае определяется автоматически при помощи метода - путем проверки атрибутов, на основе которых сортируется список.

Алфавитный указатель