9.2. Объекты
Отдельные аспекты спецификации объектов как элементов диаграмм уже рассматривались ранее при описании диаграмм классов (см. главу 5) и последовательности (см. главу 8). Сейчас мы более подробно остановимся на особенностях их семантики и графической нотации, поскольку объекты являются основными элементами или графическими примитивами, из которых строится диаграмма кооперации на уровне примеров. Для графического изображения объектов используется такой же символ прямоугольника, что и для классов.
Как отмечалось выше, объект (object) является отдельным экземпляром класса, который создается на этапе выполнения программы. Он может иметь свое собственное имя и конкретные значения атрибутов. Применительно к объектам формат строки классификатора дополняется именем объекта и приобретает следующий вид (при этом вся запись подчеркивается):
<Имя объекта>'/' <Имя роли классификатора> ':' <Имя классификатора>
[':' <Имя классификатора >]*
Здесь Имя роли классификатора может не указываться. В этом случае оно исключается из строки текста вместе с последующим двоеточием. Имя роли может быть опущено в том случае, если существует только одна роль в кооперации, которую могут играть объекты, созданные на базе этого класса.
Таким образом, для обозначения роли классификатора достаточно указать либо имя класса (вместе с двоеточием), либо имя роли (вместе с наклонной чертой). В противном случае прямоугольник будет соответствовать обычному классу. Если роль, которую должен играть объект, наследуется от нескольких классов, то все они должны быть указаны явно и разделяться запятой и двоеточием.
Ниже приводятся возможные варианты записи строки текста в прямоугольнике объекта.
: С – анонимный объект, образуемый на основе класса С.
/ R – анонимный объект, играющий роль R.
/ R : С – анонимный объект, образуемый на основе класса С и играющий роль R.
О / R – объект с именем О, играющий роль R.
О : С – объект с именем О, образуемый на основе класса С.
О / R : С – объект с именем О, образуемый на основе класса С и играющий роль R.
О или – объект с именем О.
О : – «объект-сирота» с именем О.
/ R – роль с именем R
: С – анонимная роль на базе класса С.
/ R : С – роль с именем R на основе класса С.
Отдельные примеры изображения объектов и классов на диаграмме кооперации приводятся на следующем рисунке (рис. 9.4).
Рис. 9.4. Примеры различных вариантов записи имен объектов, ролей и классов на диаграммах кооперации
Так, в первом случае (рис. 9.4, а) обозначен объект с именем «клиент», играющий роль «инициатор запроса». Далее (рис. 9.4, б) следует обозначение анонимного объекта, который играет роль инициатора запроса. В обоих случаях не указан класс, на основе которого будут созданы эти объекты. Обозначение класса присутствует в следующем варианте записи (рис. 9.4, в), причем объект также анонимный.
Применительно к уровню спецификации на диаграммах кооперации могут присутствовать именованные классы с указанием роли класса в кооперации (рис. 9.4, г) или анонимные классы, когда указывается только его роль (рис. 9.4, д). Последний случай характерен для ситуации, когда в модели могут присутствовать несколько классов с именем «Клиент», поэтому требуется явно указать имя соответствующего пакета База данных (рис. 9.4, е).