Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Абстракции и экземпляры

Экземпляры не существуют сами по себе: они всегда связаны с абстракциями. На языке UML чаще всего моделируют экземпляры классов (называемые объек­тами), хотя бывают также экземпляры и других сущностей, таких как компонен­та, узлы, прецеденты и ассоциации. В UML экземпляр легко отличить от абстрак­ции - для этого надо просто подчеркнуть его имя.

Объект в общем случае занимает некоторое место в реальном или концепту­альном мире, и им можно тем или иным способом манипулировать. Например, Экземпляром узла обычно является компьютер, физически расположенный в некоем помещении; экземпляром компонента - файл, размещенный в том или ином каталоге; экземпляр записи о клиенте занимает какой-то объем в оперативной памяти компьютера. Экземпляр траектории полета самолета тоже являет собой нечто конкретное, поддающееся обработке математическими методами.

С помощью UML допустимо моделировать не только непосредственные физи­ческие экземпляры, но и менее конкретные сущности. Например, абстрактный класс по определению не может иметь непосредственных экземпляров (см. главу 9). Раз­решается, однако, моделировать косвенные экземпляры абстрактных классов, что­бы показать, как данный класс можно использовать в качестве прототипа. Строго говоря, такого объекта не существует, но с практической точки зрения он позволяет поименовать любой потенциальный экземпляр конкретного потомка этого абстракт­ного класса. То же самое относится и к интерфейсам (см. главу 11). Хотя они по определению не могут иметь непосредственных экземпляров, можно смоделировать экземпляр-прототип интерфейса, который будет представлять один из потенциаль­ных экземпляров конкретных классов, реализующих этот интерфейс.

Моделируемые экземпляры помещают в диаграммы объектов (см. главу 14), если надо показать их структурные детали, или в диаграммы взаимодействия (см. главу 18) и деятельности (см. главу 19), если нужно визуализировать их уча­стие в динамических ситуациях. Хотя обычно это не требуется, их можно вклю­чать и в диаграммы классов, если надо явно показать отношения объекта и его аб­стракции.

Классификатор экземпляра обычно статичен (см. главу 9). Например, если вы создадите экземпляр класса, то сам класс не будет изменяться в течение жизни объекта. Но при моделировании некоторых ситуаций, а также в некоторых языках программирования, есть возможность изменить абстракцию экземпляра. И тогда объект Гусеница способен стать объектом Бабочка (динамические типы рассма­триваются в главе 11). Это один и тот же объект, но реализующий различные аб­стракции.

Примечание В процессе разработки могут возникнуть экземпляры, не связанныв ни с каким классификатором и изображаемые как объекты с от­сутствующими именами абстракций (см. рис. 13.2). Такие обьекты-«сироты» можно вводить при моделировании очень неопреде­ленного поведения, хотя в конце концов их все равно нужно будет связать с некоей абстракцией, если вы хотите приписать объекту определенную семантику.

Имена

Каждый экземпляр должен обладать именем, отличающим его в данном контек­сте от остальных экземпляров. Обычно объект существует в контексте операции (см. главы 4 и 9), компонента (см. главу 25) или узла (см. главу 26). Имя - это текстовая строка, например t или myCustomer на рис. 13.2. Взятое само по себе, оно называется простым именем. Абстракция экземпляра может иметь как простое имя (скажем, Transaction), так и составное (Multimedia: :AudioStream). Cocmaвное имя образуется, если к имени абстракции спереди добавить имя пакета, в котором она находится.

Объект можно именовать явно, давая ему настоящее имя (например, t), которое будет использоваться человеком. Можно дать ему простое имя (например, aCustomer) и скрыть его абстракцию, если она очевидна из контекста. Однако зачастую настоя­щее имя объекта известно только компьютеру, который с ним работает. В таких слу­чаях появляется анонимный объект (например, : Multimedia: :AudioStream). Каждое появление анонимного объекта считается отличным от всех других его появлений. Если вы не знаете связанную с объектом абстракцию, то должны дать ему явное имя (например, agent :).

Работая с большими коллекциями объектов, неудобно каждый раз изображать коллекцию как сумму индивидуальных экземпляров. На рис. 13.2 показан альтерна­тивный способ - моделирование мультиобъектов (таких, как : keyCode), которые представляют коллекцию анонимных объектов. Для обозначения типа коллекции, представленной мультиобъектом, можно использовать стереотипы (см. главу 6).

Примечание Имя экземпляра может состоять из любого числа букв, цифр и неко­торых знаков препинания (за исключением таких, как двоеточие, которые применяются для отделения имени экземпляра от имени его абстракции). Имя может занимать несколько строк. На прак­тике для именования экземпляров используют одно или несколько коротких существительных, взятых из словаря моделируемой сис­темы. При этом каждое слово, кроме первого, пишется обычно с за­главной буквы, (например, t или myCustomer).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]