Примеры заданий по ООАП с решениями

advertisement
Пример тестовых заданий и задач с ответами
I. Статические члены класса указываются на диаграмме классов с помощью:
a) 
написания курсивом;
d) 
подчеркивания;
b) 
написания заглавными буквами;
e) 
символа #;
c) 
выделения жирным шрифтом;
f) 
символа %.
II. Укажите все виды связей, которыми действующее лицо может соединяться с другими
действующими лицами на диаграмме вариантов использования:
a) 
ассоциация;
c) 
реализация;
e) 
включение;
b) 
расширение;
d) 
сообщение;
f) 
обобщение.
III. Выберите названия стадий жизненного цикла, предлагаемые технологией RUP, и укажите
их в порядке следования (ответ следует дать, перечислив буквы вариантов ответа, например:
a, b, c и т. д.): Ответ: a) d) b) e)
a) начальная стадия;
d) разработка;
b) конструирование;
e) ввод в действие;
c) тестирование;
f) финальная стадия.
IV Укажите последовательность действий и событий, согласующуюся
S1
с диаграммой справа:
a)  act1, act2, act3, act4, ev1, act5;
entry/ act1
b)  act1, act3, ev2, act4, act6, act3, ev1, act4, act2, act5;
exit/ act2
c)  act1, act3, ev1, act5, act2, act4;
S2
d)  act1, act3, ev1, act4, act2, act5;
entry/ act3
e)  act1, act3, ev1, act2, act4, act5;
exit/ act4
f)  act3, ev1, act4, act5;
g)  act1, act3, ev2, act4, act2, act6, act1, act3, ev1, act4, ev1 / act5
act2, act5.
ev2 / act6
V. Укажите диаграммы, где могут встретиться элементы и/или связи, в
обозначении которых используется незакрашенный ромб (не квадрат) ◊:
a) 
диаграммы классов;
d) 
диаграммы объектов;
b) 
диаграммы профиля;
e) 
диаграммы состояний;
f)

диаграммы последовательности.
c) 
диаграммы деятельности;
VI. Укажите цели, для которых можно использовать диаграмму взаимодействия:
a) 
описать сценарий в реализации варианта использования;
b) 
описать группу классов и связей между ними;
c) 
описать совместную работу объектов подсистемы в рамках реализации интерфейса;
d) 
описать конфигурацию системы на вычислительной среде.
VII. Укажите верные утверждения о связях между классами и интерфейсами:
a) 
Несколько классов могут быть соединены связью реализации с одним интерфейсом.
b) 
Не более чем один класс может быть соединен связью реализации с одним интерфейсом.
c) 
Класс может быть соединен связью реализации с любым количеством интерфейсов.
d) 
Класс может быть соединен связью реализации не более чем с одним интерфейсом.
e) 
Класс и интерфейс могут быть соединены только связью реализации.
VIII. Классы A и B связаны ассоциацией. Пусть экземпляры класса A, связанные с любым
экземпляром класса B, образуют упорядоченное мультимножество. Что следует сделать, чтобы
указать это свойство на диаграмме классов?
a) 
указать {bag} рядом с классом A;
f) 
указать {bag} рядом с классом B;
b) 
указать {ordered} рядом с классом A;
g) 
указать {ordered} рядом с классом B;
h) 
указать {sequence} рядом с классом B;
c) 
указать {sequence} рядом с классом A;
i)

указать {set} рядом с классом B;
d) 
указать {set} рядом с классом A;
j) 
указать {multiset} рядом с классом B.
e) 
указать {multiset} рядом с классом A;
IX. Укажите типы комбинированных фрагментов (иначе говоря, блоков), которые могут быть
использованы на диаграмме последовательности:
c) 
if;
e) 
while;
g) 
else;
a) 
alt;
d) 
opt;
f) 
ref;
h) 
par.
b) 
loop;
X. Пусть на диаграмме состояний есть переход из состояния Z в состояние Y, и этому переходу
приписаны триггер T, сторожевое условие G и действие A. У состояния Z есть действие по
выходу X. Укажите все пункты, верно описывающие работу такого конечного автомата, когда Z
является текущим состоянием и срабатывает триггер T:
a) 
Всегда, когда срабатывает триггер T, выполняется действие A.
b) 
Действие A не может быть выполнено раньше, чем будет выполнено действие X.
c) 
Условие G проверяется не раньше, чем будет выполнено действие X.
d) 
Сначала проверяется условие G, а потом может быть выполнено действие X.
Пример тестовых заданий и задач с ответами
«Таблица»
Постройте диаграмму классов, имена которых выделены в условии. Для классов укажите
атрибуты, связи и OCL-ограничения, о которых есть сведения в условии. Явно укажите
мощности ассоциаций (в том числе мощность 1 должна быть явно указана!). Явно укажите
ассоциации, являющиеся агрегациями или композициями. Создавать дополнительные классы
(помимо классов, отмеченных подчеркиванием) не следует. Моделировать операции классов
также не следует.
Таблицы используются для визуального представления информации. Каждая таблица состоит
из непустого упорядоченного набора строк и непустого упорядоченного набора столбцов.
К свойствам таблицы относятся количество строк, количество столбцов, высота и ширина
таблицы в пикселях. Строка таблицы состоит из непустого набора ячеек, количество
которых определяется количеством столбцов таблицы. Любая строка имеет порядковый номер
и высоту, причем сумма высот строк равна высоте таблицы. Столбец определяется
порядковым номером и шириной. Суммарная ширина столбцов совпадает с шириной таблицы.
Каждый столбец состоит из непустого набора ячеек, количество которых равно количеству
строк в таблице. Любая ячейка принадлежит только той строке таблицы и только тому
столбцу, на пересечении которых она находится. Ширина ячейки равна ширине её столбца, а
высота - высоте её строки. У ячейки есть содержимое: либо текст, либо изображение, либо
вложенная таблица. Высота и ширина изображения, являющегося содержимым ячейки, не могут
превышать высоту и ширину этой ячейки. Высота и ширина вложенной таблицы совпадает с
высотой и шириной ячейки, в которую вложена таблица.
OCL:
сontext Таблица::колвоСтрок derive: self.Строка->size()
{ordere
d}
{ordere
d}
сontext Таблица::колвоСтолбцов derive: self.Столбец->
size()
context Таблица::высота derive: self.Строка.высота->sum()
context Таблица::ширина derive: self.Столбец.ширина->
sum()
context Ячейка::высота derive: self.Строка.высота
context Ячейка::ширина derive: self.Столбец.ширина
context Ячейка inv: Таблица.asSet()->size()+Текст.asSet()->
size() + Изображение.asSet()->size() = 1
context Ячейка inv: Таблица.asSet()->notEmpty() implies
(self.ширина = Таблица.ширина) and (self.высота =
Таблица.высота)
context Ячейка inv: Изображение.asSet()->notEmpty()
implies (self.ширина >= Изображение.ширина) and
(self.высота >= Изображение.высота)
context Строка::номер derive self.Таблица.Строка->
indexOf(self)
context Столбец::номер derive self.Таблица.Столбец->
indexOf(self)
Пример тестовых заданий и задач с ответами
«Вентилятор»
На корпусе вентилятора есть кнопки «Вкл/Выкл», «Старт», «Стоп», «Режим №1», «Режим №2»,
«Режим №3». В начале работы вентилятор выключен, его мотор не работает. В этом
состоянии вентилятор реагирует только на нажатие кнопки «Вкл/Выкл». Если кнопка была
нажата, вентилятор переходит в состояние ожидания и устанавливает значение скорости
работы мотора вентилятора по умолчанию – малая скорость, соответствующая режиму №1.
В состоянии ожидания, мотор вентилятора не работает, но можно выбирать режим. Нажатие
на любую из трёх кнопок выбора режима задаёт скорость работы мотора вентилятора:
«Режим №1» – малая скорость; «Режим №2» – средняя скорость; «Режим №3» – высокая
скорость. Кнопки выбора режима можно нажимать несколько раз. В этом случае последнее
нажатие определяет, какой режим выбран. Нажатие на кнопку «Стоп» во время ожидания
игнорируется. Нажатие на кнопку «Старт» переводит вентилятор в состояние работы и
запускает мотор с той скоростью, которая установлена последним нажатием на кнопку
выбора режима. Нажатие на кнопку «Вкл/Выкл» выключает вентилятор. Если вентилятор
находится в состоянии ожидания 30 минут, он автоматически выключается.
В состоянии работы нажатие на кнопки «Старт», «Режим №1», «Режим №2», «Режим №3»
игнорируются. Нажатие на «Стоп» переводит вентилятор в состояние ожидания и
останавливает его мотор. При этом установленный режим сохраняется. Если вентилятор
находится в состоянии работы в течение 30 минут, то по истечении этого времени мотор
вентилятора автоматически останавливается и вентилятор переходит в состояние ожидания.
Установленное значение скорости (режима) при возврате из состояния работы в состояние
ожидания не меняется. Нажатие на «Вкл/Выкл» во время работы выключает вентилятор и
останавливает его мотор.
Нарисуйте диаграмму состояний, описывающую поведение вентилятора, исходя из того, что
нажатия на кнопки выполняются только последовательно, не одновременно. На диаграмме
следует показать события на переходах, необходимые сторожевые условия и действия
вентилятора. Следует использовать только следующий набор событий:
события, связанные с нажатиями на кнопки вклвыкл, старт, стоп, режим1, режим2, режим3;
событие времени after(30min);
события изменения, связанные с какими-либо переменными when(...).
Список допустимых действий:
engineOff – действие, выключающее мотор;
engineOn(v) – действие, включающее мотор, где v – № режима – имеет значение 1, 2 или 3.
Недопустимы никакие другие действия, в том числе условные (if b then a1), циклы и т. п.
Избегайте повторных действий вроде отключения ранее выключенного мотора.
Download