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

OpenU.Ru

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



object (объект)

Дискретная сущность с четко определенными, границами и индивидуальностью, инкапсулирующая состояние и поведение. Экземпляр класса.
См. class; identity; instance.

Семантика

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

Нотация

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

Рис. 134. Нотация объекта
В верхнем разделе располагается имя объекта и его класс (и то и другое подчеркивается). Записываются они при помощи следующего синтаксиса:

имя объекта : имя класса

В случае необходимости, имя класса может включать в себя полный путь от внешнего пакета. Имя пакета ставится перед именем класса и отделяется от него двойным двоеточием:

displayWitidow: WindowingSystem: :GraptilcWindows: :Window

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

aPerson: Professor. Skier

Для того чтобы показать наличие объекта в конкретном состоянии класса, используйте следующий синтаксис:

имя-обьекта : имя-класса [ список-имен-состояний ]

Список должен представлять собой список разделенных занятыми имен состояний, которые могут осуществляться одновременно.
Для того чтобы показать изменение класса (динамическая классификация), объект должен быть изображен несколько раз - по одному разу с каждым классом. Символы объекта должны соединяться отношением превращения, которое укапывает, что они представляют собой одни и тот же объект.
Во втором разделе символа объекта изображается список атрибутов и их значении. Каждая строка-значение имеет следующий синтаксис:

имя атрибута : тип - значение

При объявлении атрибута в классе тип можно не указывать. Значение представлено в виде строки. Имена атрибутов не подчеркиваются.
Имя объекта также можно не указывать. В этом случае в строке остается двоеточие и имя класса. Это указывает на анонимность объекта данного класса. Индивидуальность этому объекту дают его отношения. Таким образом, каждый символ, в котором содержится анонимный объект, указывает на конкретный объект, отличающийся от других своими связями.
Класс объекта тоже можно не показывать (вместе с двоеточием), однако во избежание путаницы лучше этого не делать.
Все разделы для значений атрибутов также можно скрыть. (Или же можно скрыть значения тех атрибутов, которые не представляют интереса на данный момент.)
Для того чтобы передать изменения значения атрибутов во время вычислений, изображаются две версии одного и того же объекта, между которыми существует отношение превращения.

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