OpenU.Ru
Создание экземпляров объекта
или другого экземпляра (например, варианта использования)
и их инициализация.
См. instantiation.
Семантика
Создание объекта - это следствие сообщения, которое
создает экземпляр объекта. У операции создания могут быть параметры, которые
используются для инициализации нового экземпляра. К моменту завершения операции
новый объект начинает соблюдать ограничения, предписанные его классу, и готов
к получению сообщений.
Операция создания, или конструктор, может быть
объявлена как операция с областью действия в масштабе класса. Цель такой операции
(по крайней мере, теоретически) - сам класс. В языках программирования подобных
языку Smalltalk, класс реализуется в виде действительного объекта времени выполнения.
Таким образом, операция создания реализуется в виде обычного сообщения к такому
объекту. В таком языке, как C++, действительного объекта времени выполнения
не существует. В противном случае операцию создания можно было бы всегда моделировать
в виде сообщения, отправляемого объекту-классу.
Выражения, описывающие исходные значения для атрибутов класса, исчисляются (теоретически)
в момент создания; результаты этого вычисления используются при инициализации
атрибутов. Код операции создания может подменить эти значения, поэтому их нужно
рассматривать, как значения по умолчанию, которые могут быть заменены.
В конечном автомате параметры конструктора, создавшего объект, доступны в виде
неявного текущего события у перехода, выходящего
из исходного состояния наиболее высокого уровня.
Нотация
На диаграмме классов объявление операции создания
конструктора включено в список операций класса. Оно может иметь список параметров.
Так как возвращаемым значением создания всегда является экземпляр класса, то
оно может быть опущено. Как и у всех операций с областью действия в масштабе
класса, имя операции создания должно подчеркиваться (рис. 84). Она может иметь
стереотип "constructor".
Выполнение операции создания внутри диаграммы последовательности изображается
при помощи стрелки-сообщения, наконечник которой указывает на символ объекта
(прямоугольник с подчеркнутым именем объекта). Под символом объекта располагается
линия жизни объекта (пунктирная линия или двойная непрерывная линия, в зависимости
от ее активности). Линия жизни продолжается до момента разрушения объекта или
до конца диаграммы (рис. 85).
Рис. 84.
Рис. 85. Создание в диаграмме последовательности
Выполнение операции создания внутри диаграммы кооперации изображается посредством
включения в нее символа объекта с указанием свойства {new}. Первое сообщение
этому объекту как раз и будет сообщением, которое его создаст. Несмотря на то,
что в действительности сообщение адресовано самому классу, этот поток обычно
скрывается, а сообщение изображается инициализацией экземпляра (только что созданного,
но еще не инициализированного), см. рис. 86.
См. также статьи о кооперации и диаграмме последовательности (cooperation; sequence
diagram), где описана нотация операции создания при реализации процедуры.
Рис. 86. Создание в диаграмме кооперации