Кога се използват 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 означава, че елементът е незавършен и не може да бъде създаден.

Ако е вярно, класификаторът не предоставя пълна декларация и обикновено не може да бъде създаден. Абстрактният класификатор е предназначен да бъде използван от други класификатори (напр. като цел на общи метаотношения или връзки на обобщение). Стойността по подразбиране е false.

  • isLeaf означава, че не можете да предефинирате елемента, както final в някои езици за програмиране.

Показва дали е възможно допълнително предефиниране на RedefinableElement. Ако стойността е true, тогава не е възможно допълнително да се предефинира RedefinableElement. Стойността по подразбиране е false.

person Xaelis    schedule 07.08.2013
comment
Благодаря Xaelis. Можете ли да ми дадете някои примери от реалния свят за това къде мога да ги използвам? - person PeanutsMonkey; 10.08.2013
comment
Да, @PeanutsMonkey. Забравете isRoot, вече не съществува. Едно превозно средство е абстрактно, защото не можете да го създадете. Не знаете вида му бетон. Дали е кола, автобус, лодка..? IsLeaf е по-скоро избор на софтуерен дизайн. Да приемем, че имате клас TrustedUser и искате да попречите на всеки друг архитект да предефинира този клас чрез наследяване. След това поставяте свойството му isLeaf като true. - person Xaelis; 10.08.2013

Не примери от реалния живот, а връзки към някои.

  1. isRoot: Мисля, че това вече не е част от UML. Тази статия е от 2004 г., което беше около времето, когато излезе UML 2, и се съмнявам, че Visio го поддържа. Все още може да не го поддържа.
  2. isAbstract: добра идея е да направите всички суперкласове абстрактни, така че да не можете да създадете екземпляр, който не е член на подкласовете. Класовете по същество са набори от екземпляри. Какво означава един екземпляр да бъде член на надмножество и нито едно от подмножествата? Не е ясно точно каква е класификацията на такъв екземпляр и тя може неволно да се промени с течение на времето. Също така е добра идея да направите подкласовете disjoint (неприпокриващи се) и covering (посочени всички известни подкласове). Има повече подробности и пример от реалния живот за това с помощта на Avians в Книгата на Лахман.
  3. isLeaf: по същество не позволява на хората да заменят вашия код. Не мога да проверя този цитат, но се предполага, Справочното ръководство за унифициран език за моделиране казва: < blockquote> #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