Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Диаграммы параллельных состояний 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

альном мире конкретному клиенту обычно должен соответствовать только один программный объект. Любой объект, обратившийся к объекту Клиент, может воспользоваться соответствующей ссылкой или указателем; в результате все объекты, обратившиеся к данному Клиенту, получат доступ к одному и тому же программному объекту. Аналогично изменения, вносимые в объект Клиент, становятся доступными всем пользователям этого объекта.

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

Объекты-значения (value objects) - это такие объекты, как Дата. Как правило, один и тот же объект в реальном мире может быть представлен целым множеством объектов-значений. Например, вполне нормально, когда имеются сотни объектов со значением 1 января 1999 года . Все эти объекты являются взаимозаменяемыми копиями. При этом новые даты создаются и уничтожаются достаточно часто.

Если у вас имеются две даты и вы хотите установить, являются ли они тождественными, то вполне достаточно просто посмотреть на их значения, а не устанавливать их индивидуальность. Обычно это означает, что в программе необходимо определить оператор проверки равенства, который бы проверял для дат год, месяц и день (каким бы ни было их внутреннее представление). Обычно каждый объект, который ссылается на 1 января 1999 года, имеет свой собственный специальный объект, однако иногда даты могут быть объектами общего пользования.

Объекты-значения должны быть постоянными (неизменяемыми; см. раздел Постоянство далее в этой главе). Другими словами, не должно допускаться изменение значения объекта-даты 1 января 1999 года на 2 января 1999 года . Вместо этого следует создать новый объект 2 января 1999 года и связать его с первым объектом. Причина запрета подобного изменения заключается в следующем: если бы эта дата была объектом общего пользования, то ее обновление могло повлиять на другие объекты-даты непредсказуемым образом.

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



Постоянство 105

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

Совокупности многозначных концов ассоциаций

Многозначный конец ассоциации - это такой конец ассоциации, верхняя граница кратности которого превышает 1 (например, * ). Обычно принято рассматривать такие многозначные концы ассоциаций как обычные множества. При этом для соответствующих целевых объектов не существует никакой упорядоченности, и не существует объектов, которые могли бы присутствовать в данном множестве более одного раза. Однако эти правила могут быть изменены с помощью введения дополнительного ограничения.

Ограничение {упорядочено} ({ordered}) устанавливает некоторый порядок на множестве целевых объектов, т. е. целевые объекты образуют список. В этом списке каждый целевой объект может присутствовать только один раз.

Я использую ограничение {комплект} ({bag}), чтобы показать, что целевые объекты на данном конце ассоциации могут появляться более одного раза, но без какой-либо упорядоченности. Я также использую ограничение {иерархия} ({hierarchy}), чтобы показать наличие некоторой иерархии в множестве целевых объектов, и ограничение {dag} (сокращение от directed acyclic graph), характеризующее направленный ациклический граф.

Постоянство

Постоянство (frozen) представляет собой ограничение, которое в языке UML может быть применено по отношению к атрибуту или концу ассоциации, но, по моему мнению, оно также оказывается полезным применительно к классам.

По отношению к атрибуту или концу ассоциации постоянство указывает на то, что значение этого атрибута или конца ассоциации не может быть изменено в течение всего жизненного цикла исходного объекта. Это значение должно быть задано при создании объекта и после этого уже никогда не может изменяться. Начальное значение может быть неопределенным (null). Разумеется, если данное ограниче-



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

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

Постоянство и ограничение только для чтения (read-only) - это не одно и то же. Только для чтения предполагает, что соответствующее значение нельзя изменить непосредственно, однако оно может быть изменено вследствие изменения какого-либо другого значения. Например, если атрибутами личности являются дата рождения и возраст, то возраст может иметь ограничение только для чтения , но не может быть постоянным.

Я обозначаю постоянство с помощью ограничения {постоянно} ({frozen}) и помечаю значения, предназначенные только для чтения, с помощью ограничения {только для чтения}. (При этом следует заметить, что Только Для Чтения не является стандартным элементом языка UML.)

Если вы собираетесь определить что-либо как постоянное, следует помнить, что люди способны совершать ошибки. При разработке программного обеспечения человек моделирует только то, что сам знает о реальном мире, не учитывая всей его реальности. Если бы мы моделировали мир таким, какой он есть, то атрибут дата рождения для объекта Личность следовало бы определить как постоянный. Однако в большинстве случаев может потребоваться его изменение, если обнаружится, что предыдущая запись была ошибочной.

Классификация и обобщение

Мне часто приходится слышать разговоры разработчиков о механизме подтипов как об отношении является . Я настоятельно рекомендую держаться подальше от такого представления. Проблема заключается в том, что фраза является может иметь самый разный смысл.

Рассмотрим следующие фразы:

1. Шеп является Пограничным Колли.

2. Пограничный Колли является Собакой.

3. Собаки являются Животными.

4. Пограничный Колли является Породой Собак.

5. Собака является Биологическим Видом.

Теперь попытаемся скомбинировать эти фразы. Если объединим фразы 1 и 2, то получим Шеп является Собакой ; фразы 2 и 3 дают в ре-



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.