<extend> зависимость в UML - PullRequest
       17

<extend> зависимость в UML

3 голосов
/ 25 июля 2009

За исключением контекста UML, если A расширяет B, то B является подмножеством A.

Но в UML все наоборот, скажем, если A расширяет B, то A является подмножествомБ,

почему это так странно?

Ответы [ 3 ]

6 голосов
/ 26 июля 2009

Зависимость <<extend>> используется только для вариантов использования. Это означает, что один вариант использования расширяет другой при определенных обстоятельствах. В следующем:

Extends Use Case

Клиент просматривает данные учетной записи. При определенных обстоятельствах клиент может также «Просмотреть открытые заказы» как часть «Просмотр сведений об учетной записи». Также возможно, что клиент будет «Просмотреть историю» как часть «Просмотр сведений об учетной записи».

Это не имеет ничего общего с обобщением / специализацией.


<<extend>> сбивает с толкув диаграммах вариантов использования. Наименьшая часть путаницы заключается в том, что диаграммы вариантов использования не являются вариантами использования!

Вариант использования - это документ, а не диаграмма. Например, приведенная выше диаграмма могла быть взята из следующего варианта использования:

  1. Клиент просматривает данные учетной записи.

Расширения:
1a. Если клиент нажимает ссылку «Открытые заказы»
Клиент просматривает открытые заказы
1b. Если клиент нажимает ссылку «Просмотр истории»
История просмотра клиента

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

Сначала я действительно выучил UML, читая "UML Distilled" Мартина Фаулера. Я только что проверил эту книгу, прежде чем опубликовать этот ответ, и обнаружил, что Фаулер предлагает игнорировать <<extend>>.

1 голос
/ 26 июля 2009

Чтобы написать это с точки зрения вариантов использования (я полагаю, это контекст, который вы имели в виду - если нет, поправьте меня), чтобы не думать о заказе еды в вашем любимом ресторане быстрого питания.

Основной вариант использованиязаказать еду, но ее можно продлить, если предъявить купон на скидку. Каждый раз, когда вы проходите через эту шкалу, вы получаете еду, но только при особых обстоятельствах вы платите меньше, чем обычно (или получаете дополнительный бутерброд).

Я нашел довольно хороший пример здесь: http://www.agilemodeling.com/essays/useCaseReuse.htm. Как видно, регистрация для иностранных студентов включает в себя дополнительную проверку безопасности и применяется только к подмножеству зачислений. Надеюсь, это поможет больше.

0 голосов
/ 26 июля 2009

UML не использует термин «расширять / расширять». Вместо этого он использует термин «обобщать / обобщать»;люди также часто называют его «наследовать / наследовать».

Если B является обобщением A (то есть A наследует от B), то A является подмножеством B. Это должно стать ясно из "отношение is-a: если каждый A является B, то A явно является подмножеством B. В вашей терминологии, если A расширяет B, A является подмножеством B.

Тип является предикатом:для каждого объекта вы можете определить, принадлежит ли он к предикату. Расширение предиката означает сделать его более ограничительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...