5.5. Отношение «extend» 131
мент не выполняется. Постусловия ограничивают состояние системы
после выполнения сегмента.
У самих расширяющих прецедентов могут быть расширяющие или
включаемые прецеденты. Однако лучше избегать такой вложенности,
поскольку это сильно усложняет систему.
5.5.2. Несколько сегментов вставки
В расширяющем прецеденте может быть несколько сегментов встав
ки. Это полезно в тех случаях, когда не получается полностью реали
зовать расширение в одном сегменте изза того, что необходимо вер
нуться и чтото сделать в основном потоке базового прецедента. Обра
тимся к примеру, изображенному на рис. 5.13. Пусть после записи
и распечатки штрафа выполнение возвращается в основной поток для
обработки других просроченных книг, после чего в точке расширения
payFine (выплатить штраф) должнику предлагается заплатить общую
сумму штрафа. Конечно, такая процедура более эффективна, чем взи
мание платежей по каждому штрафу в отдельности (так произошло
бы, если бы эти два сегмента были сведены в один сегмент IssueFine).
При создании расширяющих прецедентов с несколькими сегментами
необходимо четко нумеровать каждый сегмент, как показано на
рис. 5.13, поскольку здесь важен порядок сегментов: первый сегмент
Расширяющий прецедент: IssueFine
Второстепенные актеры:
Нет.
Сегмент 1 предусловия:
1. Возвращенная книга просрочена.
Сегмент 1 постусловия:
1. Штраф записан в системе.
2. Система распечатала штраф.
Поток сегмента 1:
1. Librarian вводит данные штрафа в систему.
2. Система распечатывает штраф.
ID: 10
Краткое описание:
Сегмент 1: Librarian записывает и распечатывает штраф.
Сегмент 2: Librarian принимает платеж по штрафу.
ReturnBook
extension points
overdueBook
payFine
IssueFine
extension points: overdueBook, payFine
первый сегмент расширяющего
прецедента IssueFine вводится в точке
расширения overdueBook, а второй
сегмент – в точке payFine
Сегмент 2 предусловия:
1. Штраф взыскан с должника.
Сегмент 2 постусловия:
1. Штраф зарегистрирован как выплаченный.
2. Система распечатала квитанцию об уплате штрафа.
Поток сегмента 2:
1. Librarian принимает платеж по штрафу от должника.
2. Librarian вводит выплаченный штраф в систему.
3. Librarian распечатывает квитанцию об уплате штрафа.
Главные актеры:
Librarian
«extend»
Рис. 5.13. Расширяющий прецедент с двумя сегментами вставки