Главная / Программирование /
Объектно-ориентированное программирование и программная инженерия / Тест 8
Объектно-ориентированное программирование и программная инженерия - тест 8
Упражнение 1:
Номер 1
Что понимается под образцом проектирования?
Ответ:
 (1) образцово выполненный проект 
 (2) класс, допускающий повторное использование 
 (3) библиотека классов (DLL), допускающая повторное использование 
 (4) семейство классов, как правило отложенных, с заданной архитектурой, предназначенных для решения определенного круга задач 
Номер 2
Какие свойства справедливы для образца проектирования?
Ответ:
 (1) задает архитектуру набора классов, составляющих образец проектирования 
 (2) каждый класс, входящий в образец проектирования, должен быть полностью определен 
 (3) предназначен для решения определенного круга задач 
 (4) требует предварительной настройки при решении конкретной задачи 
Номер 3
Какие утверждения справедливы для образца проектирования "Наблюдатель"
(паттерн Observer)?
Ответ:
 (1) представляет классический, хорошо изученный образец проектирования 
 (2) не имеет недостатков 
 (3) может использоваться в языках, где нет агентов, универсальности и кортежей 
 (4) использует такие возможности ООП, как полиморфизм и динамическое связывание 
Упражнение 2:
Номер 1
Архитектура образца "Наблюдатель"
включает проектирование класса Publisher (Издатель)
, который является родителем соответствующего семейства классов. Какие утверждения справедливы относительно этого класса?
Ответ:
 (1) класс задает общие свойства и поведение издателей без учета какой-либо специфики конкретного издателя 
 (2) класс является эффективным с полностью заданной реализацией 
 (3) класс является отложенным 
 (4) класс задает свойства и поведение конкретного издателя 
Номер 2
Архитектура образца "Наблюдатель"
предполагает проектирование двух классов Publisher
(Издатель) и Subscriber
(Подпичик), которые являются родителями соответствующих семейств классов. Какие утверждения справедливы относительно этих классов?
Ответ:
 (1) оба класса проектируются как отложенные классы 
 (2) оба класса проектируются как эффективные – полностью реализованные классы 
 (3) класс Publisher
проектируется как эффективный – полностью реализованный класс, а класс Subscriber
проектируется как отложенный класс 
 (4) класс Subscriber
проектируется как эффективный – полностью реализованный класс, а класс Publisher
проектируется как отложенный класс 
Номер 3
Архитектура образца "Наблюдатель"
предполагает проектирование:
Ответ:
 (1) одного семейства классов 
 (2) двух семейств классов 
 (3) трех семейства классов 
 (4) четырех семейств классов 
Упражнение 3:
Номер 1
Какие поля и методы имеет класс Subscriber
?
Ответ:
 (1) поле subscribers
, задающее список подписчиков 
 (2) поле publishers
, задающее список издателей 
 (3) метод Subscribe
, позволяющий подписаться у издателя, заданного аргументом метода 
 (4) метод Unsubscribe
, позволяющий отменить подписку у издателя, заданного аргументом метода 
Номер 2
Каким отношением связаны классы Subscriber
и Publisher
?
Ответ:
 (1) класс Subscriber
является наследником класса Publisher
 
 (2) класс Publisher
является наследником класса Subscriber
 
 (3) класс Subscriber
является клиентом класса Publisher
 
 (4) класс Publisher
является клиентом класса Subscriber
 
Номер 3
Архитектура образца "Наблюдатель"
предполагает проектирование класса Subscriber
(Подписчик), который является родителем соответствующего семейства классов. Какие утверждения справедливы относительно этого класса?
Ответ:
 (1) класс задает общие свойства и поведение подписчиков без учета какой-либо специфики конкретного подписчика 
 (2) класс является эффективным с полностью заданной реализацией 
 (3) класс является отложенным 
 (4) класс задает свойства и поведение конкретного подписчика 
Упражнение 4:
Номер 1
При описании образца "Наблюдатель"
могут применяться две схемы задания аргументов события. Первая предполагает, что аргументы задаются списком, содержащим элементы произвольного типа, заданного параметром ANY
. Во второй схеме аргументы задаются в ориентации на конкретный вид сообщения. Какие утверждения справедливы относительно этих двух схем
Ответ:
 (1) первая схема носит универсальный характер и может применяться для сообщений с произвольным числом аргументов и произвольными типами, не требуя внесения изменений ни в класс Publisher
, ни в класс Subscriber
 
 (2) вторая схема носит универсальный характер и может применяться для сообщений с произвольным числом аргументов и произвольными типами, не требуя внесения изменений ни в класс Publisher
, ни в класс Subscriber
 
 (3) первая схема носит универсальный характер и может применяться для сообщений с произвольным числом аргументов и произвольными типами, но требует внесения изменений в класс Publisher
 
 (4) первая схема носит универсальный характер и может применяться для сообщений с произвольным числом аргументов и произвольными типами, но требует внесения изменений в классы, являющиеся потомками класса Subscriber
, для приведения аргумента, заданного типом ANY
к конкретному типу аргумента 
 (5) вторая схема требует настройки и внесения изменений в класс Publisher
 
Номер 2
Какой из методов класса Publisher
существует в нескольких вариантах?
Ответ:
 (1) Subscribe
 
 (2) Unsubscribe
 
 (3) Publish
 
 (4) Subscribed
 
Номер 3
Какие поля и методы имеет класс Publisher
?
Ответ:
 (1) поле subscribers
, задающее список подписчиков 
 (2) поле publishers
, задающее список издателей 
 (3) метод Subscribe
, позволяющий подписать подписчика, заданного аргументом метода 
 (4) метод Unsubscribe
, позволяющий отменить подписку подписчика, заданного аргументом метода 
Упражнение 5:
Номер 1
Образец "Наблюдатель"
имеет серьезные недостатки. Поэтому в таких языках, как Eiffel, где есть такие средства как агенты и кортежи, можно использовать при работе с событиями другой образец, основанный на классе EVENT_TYPE
. Какие утверждения справедливы для этого класса?
Ответ:
 (1) это единственный класс, лежащий в основе нового образца 
 (2) класс играет роль класса Subscriber
, но для публикации необходим еще один класс – аналог класса Publisher
 
 (3) класс играет роль класса Publisher
, но для подписки необходим еще один класс – аналог класса Subscriber
 
 (4) методы класса позволяют осуществлять как публикацию сообщения, так и подписку на событие, а также отмену подписки 
Номер 2
Какие утверждения о недостатках, характерных для образца "Наблюдатель"
, являются справедливыми?
Ответ:
 (1) связи между классами Subscriber
и Publisher
слабые, - издатели не знают своих подписчиков, подписчики не знают издателей, что мешает их взаимодействию 
 (2) связи между классами Subscriber
и Publisher
жесткие, - издатели знают своих подписчиков, подписчики знают издателей 
 (3) возможность применения двух схем аргументов обеспечивает гибкость и свободу выбора, облегчая разработку конкретного проекта 
 (4) обе схемы задания аргументов события, применяемые в образце "Наблюдатель"
, имеют серьезные недостатки 
Номер 3
Какой из методов не входит в интерфейс класса EVENT_TYPE
?
Ответ:
 (1) Publish
 
 (2) Handle
 
 (3) Subscribe
 
 (4) Unsubscribe
 
Упражнение 6:
Номер 1
Какие утверждения справедливы относительно класса EVENT_TYPE
, задающего описание типа события?
Ответ:
 (1) класс является универсальным и имеет один аргумент типа ANY
 
 (2) класс является универсальным и имеет один аргумент типа ARGUMENTS
 
 (3) класс является универсальным и имеет один аргумент типа ARGUMENTS->TUPLE
с ограничением наследования, требующим, чтобы аргументы представляли кортеж 
 (4) класс не является универсальным и имеет один аргумент типа ANY
 
Номер 2
Где следует объявлять событие?
Ответ:
 (1) если событие не зависит от контекста, то его следует объявлять в классе, доступном как издателю, публикующего событие, так и подписчикам события 
 (2) если событие зависит от контекста, то его следует объявлять в каждом классе, задающем контекст 
 (3) событие всегда следует объявлять в классе, задающем издателя 
 (4) событие всегда следует объявлять в классе, задающем подписчика 
Номер 3
Пусть в интерфейсе пользователя заданы 5 командных кнопок класса Button
и три пункта меню класса Menu
. Для всех этих элементов возможно событие Click
. Сколько объектов, задающих событие Click
, следует создать?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 5 
 (5) 8 
Упражнение 7:
Номер 1
Какие утверждения являются справедливыми относительно контроллера в модели МОК (MVC)?
Ответ:
 (1) контроллер является независимой частью ПО 
 (2) контроллер обеспечивает подписку элементов модели на типы события 
 (3) контроллер всегда связан с обликами 
 (4) контроллер связан с обликами, если используются контексты 
Номер 2
В образце МОК (MVC) класс EVENT_TYPE
:
Ответ:
 (1) не используется 
 (2) является частью модели 
 (3) является частью облика 
 (4) является частью контроллера 
Номер 3
Какие утверждения являются справедливыми относительно списка подписчиков для образца, связанного с классом EVENT_TYPE
?
Ответ:
 (1) список subscribers
теперь не нужен 
 (2) список subscribers
по-прежнему существует и содержит, как и ранее, объекты, задающие подписчиков 
 (3) список subscribers
по-прежнему существует, но теперь он включает агентов, задающих процедуры обработки события 
 (4) список subscribers
объявляется в каждом классе, задающем издателя 
 (5) список subscribers
является компонентом класса EVENT_TYPE
 
Упражнение 8:
Номер 1
Пусть в интерфейсе пользователя заданы 5 командных кнопок класса Button и три пункта меню класса Menu. Для всех этих элементов возможно событие Click
. Сколько обработчиков события Click
, следует создать в этой ситуации?
Ответ:
 (1) 1 
 (2) 2 
 (3) 3 
 (4) 5 
 (5) 8 
Номер 2
При подписке на событие выполнялся следующий оператор: my_button.my_click.subscribe(agent my_method)
Какие утверждения является корректными?
Ответ:
 (1) объект my_button
задает контекст события 
 (2) объект my_button
задает событие 
 (3) объект my_ click
задает событие 
 (4) объект my_ click
задает контекст события 
 (5) объект my_ method
задает контекст события 
 (6) объект my_ method
задает обработчик события 
Номер 3
При подписке на событие выполнялся следующий оператор: left_click.subscribe(agent my_method)
Какие утверждения является корректными?
Ответ:
 (1) объект left_click
задает контекст события 
 (2) объект left_click
задает событие 
 (3) объект my_ method
задает событие 
 (4) объект my_ method
задает обработчик события 
 (5) событие не использует контекст