2009-07-25 2 views
3

для контекста UML Кроме этого, если А продолжается B, то B является подмножеством А.<extend> зависимость в UML

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

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

ответ

1

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

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

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

+0

о, похоже, это недоразумение в «расширении». Для другого примера, если теория B основана на теории A, но покрывает больше, мы говорим теорию B (глагол). A. Вот что этот глагол здесь, кажется, не «расширяется», правильно? Извините, английский язык не является моим родным языком .. – omg

+0

UML's определение «расширение» означало бы, что если теория B расширила теорию A, она описала бы некоторый краевой случай с дополнительными условиями и выводами, а не более общей. Однако я вижу, что это немного запутанно. – maciejkow

+0

@ maciejkow, поэтому вы подразумеваете, что глагол должен быть «обобщен». Я хочу знать, что это несколько запутывает для носителей английского языка? Или, если быть более конкретным, «обобщать» и «расширять»? Или эти два слова идут совершенно иначе Если A расширяет B, то A является подмножеством B.But, если A обобщает B, то B является подмножеством A, правильно? – omg

6

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

Extends Use Case

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

Это не имеет никакого отношения к обобщению/специализации.


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

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

  1. Клиент рассматривает детали счета.

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

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

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

+0

Но в UML «extend» похож на «specializaton», правильно? – omg

+0

Да, но эти термины также разные. Вы используете расширение по отношению к прецедентам и специализацию по отношению к классам. – maciejkow

+0

о, еще раз спасибо. В конце концов, я хочу знать, что «распространяется» аналогично «specializaton», без контекста UML? – omg

-2

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

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

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

+0

Term extend используется в контексте диаграмм использования. – maciejkow

+0

Как вы сказали: Расширение предиката означает сделать его более ограничительным. Так что «простирание» похоже на «специализация», верно? – omg

+0

Я не думаю, что это подразумевается под OP. Зачем использовать слово «подмножество» при обращении к случаям использования? См. Также http://stackoverflow.com/questions/1182967/a-logical-doubt-about-extend-and-generalize от того же автора. –

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

  • Нет связанных вопросов^_^