2015-10-17 2 views
5

Согласно спецификации UML, мы можем обозначить зависимость между двумя классами с помощью <<Create>> или <<Instantiate>> стереотипов.«Создать» против «Instantiate» зависимости в UML

Вы знаете, в чем различия между этими стереотипами?

Это написано в UML спецификации 2.5 (глава 22.3 Стандарт стереотипов.):

  1. Для <<Create>>

    зависимости использования, обозначающего, что клиент классификатор создает экземпляров поставщика классификатора

  2. <<Instantiate>>

    Зависимость использования среди классификаторов, указывающих, что операции на клиенте создания экземпляров поставщика

+1

Я бы не поместил все определения UML на баланс золота. Мне оба определения звучат очень похоже. По моему пониманию <> напоминает (Божье) создание, так что-то новое. <> напротив, больше похож на операцию клонирования. YMMV –

ответ

1

Я заметил, что < < Создать >> стереотип также может быть применена не только к «Использованию ", но также и " BehavioralFeature "(см. раздел 22.2 в спецификации UML).

В UML «BehavioralFeature» соответствует определенным методам в классе или интерфейсе.

Следовательно, если мы отмечаем особый метод в классе с < < Создать >> или < < Destroy >> мы имеем в виду, что он создает/уничтожает экземпляры этого класса.

Мы можем сделать параллель между маркировки методом с < < Создать >> и маркировка Использование Завис с < < Создать >>.

Если мы отметим зависимость использования от < < Create >> then , это означает, что конкретный метод в классе клиента создает экземпляр класса поставщика. Следовательно, мы создаем экземпляр поставщика в теле нашего класса клиентов. Клиент и поставщик тесно связаны здесь.

С другой стороны, если мы отметим зависимость использования от < < Затемнить >> затем Класс клиента делегирует создание Поставщика другим объектам. Следовательно, он создает Поставщика косвенно. В этом случае Клиент и Поставщик слабо связаны. Например, это происходит, если мы создаем Поставщик через один из Творения Patterns: пул объектов, Prototype Factory Method и т.д.

Примечания:

По большому счету, это не очень понятно, отличия от спецификации , Надеюсь, что в будущих версиях этого (более 2.5 версии) у нас есть более четкие определения.

+0

Является ли это вашей интерпретацией этих вещей или у вас есть источник, подтверждающий это мнение? –

+0

Это мой собственный анализ на основе спецификации UML – Vitaly

2

Michael Jesse Chonoles Да, «create» используется на диаграммах последовательности. Это стереотип сообщения. «Создать» также является стереотипом по поведенческой функции в классификаторе, указывающим, что это конструктор экземпляров этого классификатора (или эквивалент для объектов, не ориентированных на объекты).

Когда «Создать» используется для зависимости, он не сильно отличается от «Instantiate». Лично я использую зависимость «Instantiate». Когда я имею в виду истинное объектно-ориентированное создание, вызванное вызовом конструктора (каким образом я бы перевел модель в код). Я бы использовал «Создать», когда это другой вид создания, более косвенные, концептуальные или не объектно-ориентированные.

Вот несколько примеров. Я бы использовал «Создать», чтобы сказать MSWord -> «Создать» Документ, модельер «Создать» модель. Хотя я обычно не буду моделировать это подробно, я бы использовал «Создать», чтобы указать компонент «Создать» новую запись базы данных, менеджер базы данных «Создать» новую базу данных, программист «Создать» новое приложение. Или создайте новый элемент в массиве (не-oo). Это может произойти без прямого вызова традиционного объектно-ориентированного конструктора и не может быть напрямую преобразовано в код.

С другой стороны, если бы у меня была операция на браке с человеком, это, вероятно, «создало бы» объект класса ассоциации, связанный с браком.

Поскольку большинство моих моделей концептуально, на практике я обычно использую «create». Хотя, даже тогда это не так часто возникает.

+0

См. Также здесь: https://www.linkedin.com/grp/post/143183-6061637312238927877 –

Смежные вопросы