Объектно-ориентированное программирование и программная инженерия



Говоря о качестве ПО, можно анализировать качество с разных точек зрения. Какое качество представляется не столь важным?

  • процесса разработки
  • текущей версии продукта
  • будущей, перспективной версии
  • (Правильный ответ) первоначальной, уже не используемой версии

Укажите правильную последовательность этапов в модели водопада:

  • анализ требований, спецификация, проверка правильности, реализация, развертывание
  • анализ требований, развертывание, спецификация, проверка правильности, реализация
  • спецификация, анализ требований, проверка правильности, реализация, развертывание
  • (Правильный ответ) анализ требований, спецификация, реализация, проверка правильности, развертывание

Контракты играют важную роль при проектировании. Какие утверждения справедливы для контрактов в процессе наследования?

  • (Правильный ответ) контракты следует задавать на как можно высоком уровне абстракции
  • при переопределении реализации метода наследником контракт метода также переопределяется
  • контракты нельзя задать на верхнем уровне абстракции. Они тесно связаны с реализацией
  • (Правильный ответ) при переопределении реализации метода наследником контракт метода сохраняется

Если в родительском классе есть отложенный метод, то наследник класса обязан?

  • оставить этот метод отложенным
  • задать реализацию отложенного метода
  • (Правильный ответ) задать реализацию либо оставить метод отложенным
  • в случае задания реализации создать новый отложенный метод

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

  • включение события не может быть причиной изменения облика
  • (Правильный ответ) подписчик, обрабатывая событие, может изменить облик
  • (Правильный ответ) издатели включают события, которые могут непосредственно изменить облик
  • обработка события не может быть причиной изменения облика ПО

Зависимые переменные лямбда-выражений, также как и формальные параметры методов в программировании, могут быть переименованы без потери смысла. Операция, выполняющая такое преобразование в лямбда-выражениях, называется альфа – преобразованием. При выполнении этого преобразования зависимой переменной x можно дать:

  • любое другое имя без всяких ограничений на выбор нового имени
  • новое имя, например , при условии, что новая переменная не является зависимой переменной лямбда-выражения
  • (Правильный ответ) новое имя, например , при условии, что новая переменная не является свободной и не является зависимой переменной лямбда-выражения. Выполнение этого условия необходимо и достаточно для выполнения альфа преобразования
  • новое имя, например , при условии, что новая переменная не является свободной переменной лямбда-выражения

Какие поля и методы имеет класс Subscriber?

  • (Правильный ответ) метод Subscribe, позволяющий подписаться у издателя, заданного аргументом метода
  • (Правильный ответ) метод Unsubscribe, позволяющий отменить подписку у издателя, заданного аргументом метода
  • поле subscribers, задающее список подписчиков
  • поле publishers, задающее список издателей

Что происходит с контрактами при наследовании. Укажите корректные утверждения?

  • контракты родительского класса наследуются и не могут быть изменены
  • в отличие от компонент класса контракты родительского класса не наследуются
  • (Правильный ответ) контракты родительского класса наследуются, должны выполняться потомком, но потомок может включить в контракт дополнительные обязательства
  • контракты родительского класса наследуются, но часть контракта может быть отменена

Образец «Наблюдатель» имеет серьезные недостатки. Поэтому в таких языках, как Eiffel, где есть такие средства как агенты и кортежи, можно использовать при работе с событиями другой образец, основанный на классе EVENT_TYPE. Какие утверждения справедливы для этого класса?

  • класс играет роль класса Subscriber, но для публикации необходим еще один класс – аналог класса Publisher
  • класс играет роль класса Publisher, но для подписки необходим еще один класс – аналог класса Subscriber
  • (Правильный ответ) это единственный класс, лежащий в основе нового образца
  • (Правильный ответ) методы класса позволяют осуществлять как публикацию сообщения, так и подписку на событие, а также отмену подписки

Какие факторы качества ПО относятся к долговременным факторам?

  • (Правильный ответ) переносимость
  • стоимость разработки
  • выполнение правил стиля программирования
  • эффективность процесса разработки
  • простота обучения
  • адекватность требованиям

Управление событиями, можно рассматривать как некоторую структуру управления, получившую название «издатели – подписчики». Какие утверждения справедливы относительно этой структуры?

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

Инженерный подход к разработке программного продукта предполагает измерение количественных показателей, характеризующих как сам продукт, так и процесс разработки. Какой из показателей наиболее трудно измерить численно?

  • время разработки
  • стоимость разработки
  • (Правильный ответ) сложность продукта
  • размер продукта

При переопределении метода возможно и переопределение контракта. Какие утверждения справедливы при переопределении контракта:

  • (Правильный ответ) изменяется базисная форма записи предложений require и ensure
  • если не задавать предусловие и постусловие, то отменяются условия, заданные родителем
  • (Правильный ответ) если не задавать предусловие и постусловие, то сохраняются условия, заданные родителем
  • предусловие и постусловие записываются в базисной форме – в предложениях require и ensure

Для объектно-ориентированного стиля разработки ПО наиболее подходит модель:

  • любая
  • (Правильный ответ) кластерная
  • спиральная
  • водопада

При моделировании 7-и уровневой классификации Линнея создан объект prima класса «Примат«. (В классификации Линнея это уровень – отряд. Согласно Линнею, к приматам относятся люди, обезьяны, летучие мыши, ленивцы). Какие утверждения справедливы по отношению к этому объекту?

  • если создан объект homo класса «Человек Разумный«, то возможно присваивание: homo := prima
  • (Правильный ответ) он описывает некоторые свойства прикладных математиков
  • (Правильный ответ) если создан объект homo класса «Человек Разумный«, то возможно присваивание: prima := homo
  • он полностью описывает все свойства приматов — прикладных математиков

При проектировании ПО следует выделять как отдельные элементы «модель» ПО и «облик» ПО. Какие утверждения справедливы относительно понятия «модель»? Модель ПО – это:

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

Из 15 сформулированных свойств хороших требований, какое из свойств не входит в этот список?

  • полнота
  • понятность
  • прослеживаемость
  • (Правильный ответ) вычислимость
  • обоснованность

При проектировании ПО следует выделять как отдельные элементы «модель» ПО и «облик» ПО. Какие утверждения справедливы относительно понятия «модель»? Облик ПО – это:

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

Когда выполняется присваивание x := agent r, то переменная x должна принадлежать специальному типу, часто называемому функциональным, поскольку объектами этого типа являются функции и процедуры. В Eiffel этот тип задается классом ROUTINE и тремя его потомками – классами PROCEDURE, FUNCTION, PREDICATE. Какой из этих классов задает агентов, связанных с командами?

  • FUNCTION
  • ROUTINE
  • PREDICATE
  • (Правильный ответ) PROCEDURE

Какие утверждения справедливы относительно лямбда определения функции:

  • лямбда определение синтаксически подобно присваиванию. В левой части определения указывается имя переменной любого типа, в правой – лямбда-выражение. Левую и правую части разделяет знак равенства
  • лямбда определение синтаксически подобно присваиванию. В левой части определения указывается имя переменной функционального типа, в правой – лямбда-выражение. Левую и правую части разделяет знак присваивания
  • (Правильный ответ) лямбда определение синтаксически подобно присваиванию. В левой части определения указывается имя переменной функционального типа, в правой – лямбда-выражение. Левую и правую части разделяет знак равенства
  • в левой части определения указывается имя переменной функционального типа, в правой – арифметическое выражение

Какие утверждения является корректными?

  • (Правильный ответ) прямым экземпляром типа является объект, создаваемый конструктором типа (оператором создания)
  • (Правильный ответ) метод класса является эффективным, если задана его реализация
  • реализация компонента является частью его спецификации
  • переобъявление метода у потомка всегда связано с изменением реализации метода

В каких ситуациях при итерировании контейнерной структуры применим механизм агентов?

  • (Правильный ответ) нужно выполнить обход структуры, пока не встретится элемент, для которого некоторое условие принимает значение true. Для каждого пройденного элемента требуется выполнить определенную операцию
  • (Правильный ответ) нужно обойти структуру и для каждого элемента, для которого некоторое условие принимает значение true, выполнить определенную операцию
  • (Правильный ответ) нужно обойти структуру и для каждого элемента выполнить определенную операцию
  • нужно обойти структуру и для каждого элемента выполнить специфическую операцию, зависящую от элемента

Что справедливо для методологии Agile – гибкой разработки ПО?

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

Какое утверждение несправедливо относительно понятия «событие»?

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

Какие факторы процесса разработки оценивают качество механизмов, применяемых для создания ПО?

  • (Правильный ответ) измеримость
  • устойчивость
  • (Правильный ответ) воспроизводимость
  • (Правильный ответ) предсказуемость

Что обозначает агентное выражение agent g(a, ?, b)?

  • Функцию с тремя аргументами, реализация которой отложена и требует дальнейшего уточнения
  • выражение, в записи которого допущена синтаксическая ошибка
  • (Правильный ответ) функцию с одним аргументом, полученную из функции с тремя аргументами заморозкой первого и третьего аргумента фиксированными значениями a и b
  • функцию с тремя аргументами, имя одного из которых уточняется в момент вызова

Что происходит, когда подписчик получает уведомление о событии

  • (Правильный ответ) вызывает метод, указанный при регистрации подписки, который и обрабатывает информацию, пришедшую с событием
  • он отправляет сообщение в «долгий ящик»
  • в зависимости от информации, пришедшей с событием, подписчик вызывает тот или другой метод из тех, что есть в его распоряжении
  • может при желании обработать сообщение, а может посчитать его самом и проигнорировать факт получения сообщения

Манифестный агент – это агент:

  • (Правильный ответ) связанный с анонимным методом, который задается непосредственно в точке определения агента
  • связанный с методом класса
  • связанный с методом, для которого задан манифест
  • выходящий на манифестации

Какие свойства справедливы для образца проектирования?

  • (Правильный ответ) задает архитектуру набора классов, составляющих образец проектирования
  • (Правильный ответ) предназначен для решения определенного круга задач
  • (Правильный ответ) требует предварительной настройки при решении конкретной задачи
  • каждый класс, входящий в образец проектирования, должен быть полностью определен

Переопределение наследником метода, заданного родителем, должно делаться явно с использованием специального ключевого слова: redefine. Какие утверждения справедливы по отношению к этому термину?

  • включение имени метода в предложение redefine означает существование двух экземпляров метода с одним и тем же именем, но с разными реализациями (задание перегрузки метода)
  • (Правильный ответ) имена всех переопределяемых методов должны быть заданы в предложении redefine в inherit части класса, задающей наследование
  • ключевое слов redefine должно сопровождать объявление каждого метода
  • (Правильный ответ) включение имени метода в предложение redefine означает отсутствие перегрузки метода, поскольку после переопределения метод с таким именем существует в единственном экземпляре

Ограничение универсальности класса C[T] означает:

  • сужение числа операций для сущностей, тип которых задается родовым параметром T
  • (Правильный ответ) расширение числа операций для сущностей, тип которых задается параметром T
  • (Правильный ответ) расширение возможностей класса C
  • ограничение возможностей класса C

Какие утверждения справедливы относительно класса EVENT_TYPE, задающего описание типа события?

  • класс не является универсальным и имеет один аргумент типа ANY
  • (Правильный ответ) класс является универсальным и имеет один аргумент типа ARGUMENTS->TUPLE с ограничением наследования, требующим, чтобы аргументы представляли кортеж
  • класс является универсальным и имеет один аргумент типа ARGUMENTS
  • класс является универсальным и имеет один аргумент типа ANY

Какие утверждения справедливы для понятия «сигнатура события»?

  • сигнатура события принципиально отличается от сигнатуры методов ПО
  • сигнатура есть только у некоторых событий
  • (Правильный ответ) сигнатура события эквивалентна сигнатуре методов и состоит из указания имен аргументов события и связанных с ними типов
  • (Правильный ответ) каждое событие имеет сигнатуру

Отложенные классы характерны для верхних уровней проектирования программных систем. Некоторые методы отложенного класса носят название «программы с дырами». Какие это методы?

  • метод, в котором часть исполняемого кода отсутствует и заменена псевдокодом
  • (Правильный ответ) эффективный метод с заданной реализацией, но код которого вызывает отложенные методы, не имеющие реализации
  • метод, в котором отсутствует реализация
  • метод, в коде которого мыши прогрызли дыры

Какие факторы можно не учитывать, когда речь идет об инженерии программ?

  • коммуникации в команде разработчиков
  • процесс разработки программного проекта
  • требования к программному проекту
  • этику программирования
  • (Правильный ответ) хобби членов команды

Какие утверждения являются справедливыми относительно списка подписчиков для образца, связанного с классом EVENT_TYPE?

  • список subscribers по-прежнему существует и содержит, как и ранее, объекты, задающие подписчиков
  • (Правильный ответ) список subscribers является компонентом класса EVENT_TYPE
  • (Правильный ответ) список subscribers по-прежнему существует, но теперь он включает агентов, задающих процедуры обработки события
  • список subscribers объявляется в каждом классе, задающем издателя
  • список subscribers теперь не нужен

Какой связкой объединятся наследуемый инвариант и инвариант, заданный в классе наследника?

  • implies
  • (Правильный ответ) and then
  • and
  • or else
  • or

Полиморфизм и динамическое связывание позволяет автоматически проводить разбор случаев – при вызове динамически выбирается наиболее подходящий метод. Такой разбор случаев можно проводить и явно, написав соответствующий программный код. Какие утверждения справедливы относительно этих двух подходов?

  • (Правильный ответ) при добавлении нового варианта в схему с наследованием приходится добавить новый класс, но не требуется изменять существующий код, что гораздо предпочтительнее
  • наследование, поддерживаемое полиморфизмом всегда предпочтительнее разбора случаев
  • (Правильный ответ) наследование, поддерживаемое полиморфизмом чаще всего предпочтительнее разбора случаев
  • (Правильный ответ) при добавлении нового варианта в схему разбора случаев приходится изменять существующий код, что является отрицательным фактором
  • разбор случаев всегда предпочтительнее наследования, поддерживаемого полиморфизмом

Пусть проектируется класс MATRIX[ELEMENT], задающий матрицу, тип элементов которой задается параметром класса. Операции класса предполагают возможность выполнения арифметических операций, как над элементами матрицы, так и над самими матрицами. Какие утверждения справедливы в этом случае?

  • (Правильный ответ) необходимо задать ограничение на параметр ELEMENT, сделав его потомком класса NUMERIC
  • (Правильный ответ) необходимо и достаточно, чтобы класс MATRIX был потомком класса NUMERIC, а также ограничить параметр ELEMENT, сделав его потомком класса NUMERIC
  • достаточно задать ограничение на параметр ELEMENT, сделав его потомком класса NUMERIC
  • (Правильный ответ) необходимо, чтобы класс MATRIX был потомком класса NUMERIC

Какие утверждения справедливы?

  • отложенным методом называется метод, содержащий реализацию, но спецификация которого не задана
  • достаточно задать контракт метода, чтобы сделать его эффективным
  • (Правильный ответ) эффективный метод может быть «программой с дырами», содержащей вызовы отложенных методов
  • (Правильный ответ) метод класса является эффективным, если задана его спецификация и реализация

При рассмотрении наследования используются такие термины как: потомок, наследник, правильный потомок, родитель, предок, правильный предок. Какие утверждения справедливы относительно этих терминов?

  • (Правильный ответ) родительский класс можно называть предком
  • класс А является своим правильным предком
  • (Правильный ответ) если класс А является правильным потомком класса В, а класс В является правильным потомком класса С, то класс А является правильным потомком класса С
  • класс А является своим правильным потомком

Управление событиями, можно рассматривать как некоторую структуру управления, получившую название «издатели – подписчики». Какие утверждения справедливы относительно этой структуры?

  • (Правильный ответ) подписчики – другие элементы ПО – могут получать сообщения о событиях и обрабатывать события
  • (Правильный ответ) эту структуру можно рассматривать как еще одну управляющую структуру наравне с циклическими структурами и структурами выбора
  • каждый издатель обязан знать своих подписчиков
  • (Правильный ответ) издатели – элементы ПО – могут включать события

Пусть наследник класса переопределил метод М родителя, задав например реализацию отложенного метода М. В контракте метода М у родителя задано постусловие Р, которое должно выполняться при вызове М. Какие утверждения справедливы относительно постусловия РР метода М в классе наследника?

  • (Правильный ответ) наследник может сохранить постусловие метода (РР = Р)
  • (Правильный ответ) наследник может усилить постусловие метода (РР => Р and not(PP = P))
  • наследник может ослабить постусловие метода (Р => PР and not(PP = P))
  • наследник обязан сохранить постусловие метода (РР = Р)

Какие утверждения справедливы относительно отложенных классов, их методов и объектов?

  • метод класса является эффективным, если эффективен размер его кода и время выполнения
  • (Правильный ответ) можно объявлять сущности отложенного типа и благодаря полиморфизму и динамическому связыванию присоединять к ним согласованные по типу объекты
  • (Правильный ответ) метод класса является эффективным, если задана его реализация
  • (Правильный ответ) тип или класс является эффективным, если все его компоненты эффективны
  • (Правильный ответ) создание объектов отложенного типа невозможно, поскольку у класса нет конструкторов

Пусть заданы классы P, F, M, S, D, где P – родитель классов F и M, класс F – родитель S, а M – родитель D. Пусть созданы объекты этих классов – op, of, om, os, od. Какие утверждения являются несправедливыми?

  • (Правильный ответ) присваивание op := os недопустимо
  • (Правильный ответ) присваивание op := os допустимо. В результате присваивания статический и динамический тип op задан классом S
  • присваивание op := os допустимо. В результате присваивания статический тип op задан классом P, а динамический тип – классом S
  • (Правильный ответ) допустимы взаимные присваивания всех заданных объектов

Что можно делать с агентами?

  • (Правильный ответ) задать определение агента, связав агент с методом
  • создать агента, используя конструктор класса агента
  • задать реализацию метода call
  • (Правильный ответ) вызвать метод call, который в свою очередь вызовет метод агента

Архитектура образца «Наблюдатель» предполагает проектирование класса Subscriber (Подписчик), который является родителем соответствующего семейства классов. Какие утверждения справедливы относительно этого класса?

  • класс задает свойства и поведение конкретного подписчика
  • класс является эффективным с полностью заданной реализацией
  • (Правильный ответ) класс задает общие свойства и поведение подписчиков без учета какой-либо специфики конкретного подписчика
  • (Правильный ответ) класс является отложенным

Ограничение универсальности класса C[T1, T2, …TK] означает

  • (Правильный ответ) увеличение числа возможных операций для тех сущностей, на типы которых наложены ограничения
  • уменьшение числа возможных операций для тех сущностей, на типы которых наложены ограничения
  • уменьшение числа родовых параметров TJ
  • (Правильный ответ) наложение ограничений на один или несколько родовых параметров универсального класса TJ

Какие утверждения справедливы для отложенного класса и его объектов?

  • (Правильный ответ) невозможно создать объект отложенного класса, используя конструктор класса
  • для отложенного класса обязательно задание конструктора без аргументов
  • (Правильный ответ) у отложенного класса нет конструкторов (операторов создания) объектов класса
  • (Правильный ответ) объекты отложенного класса можно объявлять и присоединять к ним потомков отложенного класса

При проектировании класса VECTOR[ELEMENT-> NUMERIC] сам класс был объявлен наследником класса NUMERIC. Какие родовые порождения допустимы в этом случае?

  • (Правильный ответ) VECTOR[REAL]
  • VECTOR[PERSON]
  • (Правильный ответ) VECTOR[INTEGER]
  • VECTOR[TRAM[REAL]]
  • (Правильный ответ) VECTOR[VECTOR[REAL]]

Какие выражения синтаксически корректны в Eiffel?

  • (Правильный ответ) agent James_Bond
  • agent 007
  • agent Iren & agent John
  • (Правильный ответ) agent x

При рассмотрении наследования используются такие термины как: потомок, наследник, правильный потомок, родитель, предок, правильный