Когда используются IsRoot, IsAbstract и IsLeaf в UML?

Я наткнулся на следующее описание IsRoot, IsAbstract и IsLeaf, однако не понимаю, когда вы их использовали.

Выдержка из http://www2.sys-con.com/itsg/virtualcd/dotnet/archives/0108/clark/index.htm:

Установив флажок IsRoot, вы запрещаете классу наследовать от других классов. Проверка IsAbstract ограничивает создание экземпляра класса и вынуждает клиентов создавать экземпляр производного класса для доступа к функциям класса. Проверка IsLeaf указывает на то, что класс запечатан. Запечатанные классы не наследуются и помогают ограничить глубину цепочки наследования.

Мое понимание

  1. IsRoot, кажется, предполагает, что это суперкласс
  2. IsAbstract, кажется, предполагает, что это абстрактный класс
  3. IsLeaf — это класс, который не может быть унаследован, но может быть создан.

Может ли кто-нибудь дать мне реальный пример модели, которая их использует? Например, я могу представить такой класс, как «автомобиль», который является суперклассом и является абстрактным, и под ним у вас будут такие классы, как «Вольво», «Шевроле» и т. д.


uml
person PeanutsMonkey    schedule 07.08.2013    source источник
comment
Кто-нибудь все еще использует формальный UML? (кроме эскизов)   -  person Mitch Wheat    schedule 07.08.2013
comment
@Mitch Wheat - Вы будете особенно удивлены архитектурой, будь то инфраструктура или программное обеспечение. Он также используется для бизнес-моделирования.   -  person PeanutsMonkey    schedule 07.08.2013
comment
@PeanutsMonkey очень хороший вопрос   -  person user2019510    schedule 07.08.2013


Ответы (2)


  • isRoot больше не существует в UML2. В UML 1 это означает (из спецификации):

isRoot: указывает, является ли GeneralizableElement корневым GeneralizableElement без предков. True указывает, что у него может не быть предков, false указывает, что у него могут быть предки (независимо от того, есть ли у него какие-либо предки на данный момент).

  • isAbstract означает, что элемент неполный и не может быть создан.

Если значение равно true, классификатор не предоставляет полного объявления и обычно не может быть создан. Абстрактный классификатор предназначен для использования другими классификаторами (например, в качестве цели общих метаотношений или отношений обобщения). Значение по умолчанию — ложь.

  • isLeaf означает, что вы не можете переопределить элемент, как и final в некоторых языках программирования.

Указывает, возможно ли дальнейшее переопределение RedefinableElement. Если значение равно true, дальнейшее переопределение RedefinableElement невозможно. Значение по умолчанию — ложь.

person Xaelis    schedule 07.08.2013
comment
Спасибо, Ксаэлис. Можете ли вы привести несколько реальных примеров того, где я мог бы их использовать? - person PeanutsMonkey; 10.08.2013
comment
Да @PeanutsMonkey. Забудьте об isRoot, его больше не существует. Транспортное средство является абстрактным, потому что вы не можете создать его экземпляр. Вы не знаете его конкретного типа. Это машина, автобус, лодка...? IsLeaf — это скорее выбор дизайна программного обеспечения. Допустим, у вас есть класс TrustedUser, и вы хотите запретить любому другому архитектору переопределять этот класс путем наследования. Затем вы устанавливаете его свойство isLeaf как истинное. - person Xaelis; 10.08.2013

Не реальные примеры, а ссылки на некоторые из них.

  1. isRoot: Я думаю, что это больше не часть UML. Эта статья написана в 2004 году, примерно в то время, когда вышел UML 2, и я сомневаюсь, что Visio ее поддерживает. Он все еще может не поддерживать его.
  2. isAbstract: рекомендуется сделать все суперклассы абстрактными, чтобы вы не могли создать экземпляр, который не является членом подклассов. Классы по сути являются наборами экземпляров. Что означает для экземпляра быть членом надмножества и ни одного из подмножеств? Точно неясно, какова классификация такого экземпляра, и со временем она может непреднамеренно измениться. Также неплохо сделать подклассы disjoint (неперекрывающиеся) и covering (указать все известные подклассы). Более подробная информация и реальный пример использования Авиан приведены в книга Ламана.
  3. isLeaf: по сути, удерживает людей от переопределения вашего кода. Я не могу проверить эту цитату, но предположительно Справочное руководство по унифицированному языку моделирования гласит: < цитата> #P2#

Это помогает?

person Jim L.    schedule 07.08.2013
comment
Извините, это не так. Это слишком расплывчато. Будьте добры, чтобы получить несколько реальных примеров на диаграмме. - person PeanutsMonkey; 10.08.2013
comment
Вы смотрели книгу Ламана? Он уже проделал огромную работу, чтобы предоставить реальный пример (2). Я даже дал вам ссылку, где вы можете прочитать об этом бесплатно. (1) не имеет значения. Что непонятно в (3)? - person Jim L.; 10.08.2013
comment
Джим Л.: Мне непонятно, когда и как вы будете использовать его (IsLeaf) в UML. - person PeanutsMonkey; 11.08.2013