Взаимодействия Практика 5
Задача 1 Пассажир Person входит в лифт и нажимает кнопку pressButton лифта Lift с указанием целочисленного номера этажа floor. Лифт закрывает двери и начинает движение синхронным вызовом проезжаемых лифтом этажей сообщением floorReached c указанием номера этажа. Затем лифт вызывает операцию stopMoving и останавливается. Пассажир нажимает кнопку pressDoors лифт адля открытия дверей. Как можно уточнить модель взаимодействия, если известно, что лифт обслуживает с первого по пятый этаж?
Задача 1 Уточните взаимодействие пассажира с лифтом. Укажите, что до нажатия кнопки этажа, пассажир обязан закрыть двери кнопкой pressDoors. Используя фрагменты, покажите, что пассажир не может нажать кнопку открытия и закрытия дверей в процессе движения лифта. Укажите, что лифт проезжает один этаж за три секунды.
Задача 2 Взаимодействие выбора этажа SelectFloor содержит линию жизни кабины, представленной экземпляром активного класса Cabin, линию жизни floor экземпляра класса кнопки этажа FloorButton с селектором «1» и линию жизни класса Algorothm. D[fbvjltqcndbt начинается с синхронного выхова операции нажатия кнопки isPressed на линии floor от кабины. Операция возвращает логическое значение «истина», если кнопка нажата. Затем экземпляр класса Cabin вызывает операцию selectFloor у алгоритма на линиях в данном взаимодействии.
Задача 2 Используя оператор цикла, покажите, что проверяется нажатие кнопок всех этажей. Переменную цикла, содержащую номер кнопки этажа, объявите как атрибут взаимодействия. Уточните взаимодействие, добавив вызовы операции указания алгоритму этажей, кнопки которых нажаты. Пусть взаимодействие описывает поведение кооперации, линии жизни соответствуют ролям в этой кооперации. Каким образом необходимо изменить взаимодействие, если кооперация владеет ролью с линией жизни алгоритма? Приведите пример разрешенной и запрещенной траекторий в данном взаимодействии.
Задача 3 Маленькая рыбка smallfish класса Fish подплывает floatNearby близко к берегу моря Sea. Старик OldMan асинхронно забрасывает throw невод seine класса Seine в море Sea. Невод запрашивает у моря рыбку операцией tryFish, указывая себя в параметрах. Море асинхронно направляет add рыбку smallfish в невод seine. Старик вытягивает невод на берег операцией pullAshore. Добавьте еще одну рыбку mediumfish, она подплывает к берегу после маленькой рыбки и до забрасывания невода.
Задача 3 Используя фрагменты, доработайте модель взаимодействия и укажите, что море может передавать неводу как рыбу, так и тину SeaScum, если ни одна рыбка еще не подплыла к берегу. Покажите, что после вытягивания невода старик проверяет невод операцией checkSeine. (*) Изучите механизм разделения роли на части (part decompisition) при моделировании взаимодействийю Пусть невод, море и тина являются частями берега моря SeaShore. Представьте взаимодействие старика, берега моря и рыбки в том же сценарии, скрыв взаимодействие рыки и старика с частями берега.