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



При разработке ПО в первую очередь следует заботиться о?

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

При разработке сложного ПО основная доля затрат приходится на?

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

Под скрытием информации понимается?

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

Сборка мусора – это?

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

Статическая типизация означает?

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

Правило прямого отображения требует, чтобы

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

К критериям модульности относятся

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

Верно ли, что различия между правилами, критериями и принципами модульности состоят в том, что

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

Принцип Открыт-Закрыт предполагает, что

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

Принцип единственного выбора предполагает, что?

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

К принципам модульности относятся

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

Роль универсальности в повторном использовании в том, что?

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

Повторное использование

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

Отметьте истинные высказывания?

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

Что можно повторно использовать?

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

Проблемы повторного использования связаны с?

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

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

  • как можно раньше
  • (Правильный ответ) с помощью логических ограничений
  • (Правильный ответ) как можно позже

Главная функция проекта

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

Отметьте истинные высказывания

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

При проектировании системы типов можно использовать?

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

Спецификация АТД включает разделы

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

При описании АТД можно?

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

Согласно принципу унифицированного доступа клиент не может отличить

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

Модуль – это?

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

К какому понятию относятся высказывания: «статическое понятие, применимое к тексту, идентификатор, имеет значение в период выполнения»?

  • класса
  • (Правильный ответ) сущности
  • объекта
  • ссылки

На основе изучения статического текста программы нельзя точно предсказать

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

Работа по освобождении памяти, занятой недостижимыми объектами может вестись на уровне

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

Достоинствами и недостатками статического режима управления памятью являются?

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

Отметьте истинные высказывания

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

Эффективно реализованный механизм универсализации требует минимальных затрат

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

Отметьте истинные высказывания

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

Отметьте истинные высказывания

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

Для двух стилей разработки характерно?

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

Укажите истинные триады Хоара

  • (Правильный ответ) {x>100} x:= x+ 10; {x >101}
  • {x>100} x:= x-90; {abs(x) <10}
  • (Правильный ответ) {x>100} x:= -x; {x < -100}
  • (Правильный ответ) {x>100} x:= -x; {abs(x) >10}

Цепочкой вызовов, связанной с программой rn, вызвавшей появление исключения, называется?

  • список всех программ, вызываемых в теле rn
  • список всех программ, начиная с rn, программы rn-1, непосредственно ее вызвавшей, вплоть до программы r0 – корневой программы
  • (Правильный ответ) список всех программ, определенный в предыдущем пункте, взятый в обратном порядке
  • список всех программ, вызывающих rn

Организованная паника

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

В ОО-окружении

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

Обертывание – это?

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

В инструкции множественного выбора inspect e when vi … else … end

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

В вызове p(x)

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

Динамические и статические типы

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

Расширение или специализация

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

Класс наследник

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

Форма класса, в которой

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

Под репликацией понимается?

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

Дублируемое наследование

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

Достоинства, недостатки и проблемы множественного наследования

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

Финальным именем компонента является?

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

Универсальные классы General и ANY — это библиотечные классы

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

Отметьте истинные высказывания

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

Наилучшим решением проблемы системной корректности является решение?

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

Статическое связывание

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

Классово-корректная система удовлетворяет следующим правилам

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

Создание разделяемых объектов и разделяемых констант отличается тем, что?

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

В ОО-системах глобальные объекты

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

Отметьте истинные высказывания?

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

Режимами управления памятью являются?

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

Некорректное использование типов может возникнуть из-за?

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

Цепочкой вызовов, связанной с программой rn, вызвавшей появление исключения, называется?

  • (Правильный ответ) список всех программ, начиная с r0, программы r1, непосредственно ее вызвавшей, вплоть до программы rn – корневой программы
  • список всех программ, начиная с rn, программы rn-1, непосредственно ее вызвавшей, вплоть до программы r0 – корневой программы
  • список всех программ, вызывающих rn
  • список всех программ, вызываемых в теле rn

Функциональная декомпозиция при проектировании сверху-вниз

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

Проектирование интерфейса пользователя

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

Функциональная декомпозиция имеет следующие ограничения

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

Отметьте истинные высказывания?

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

Родовое порождение

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

Для успешного применения статической типизации требуется совместное применение механизмов

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

Отметьте истинные высказывания

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

Строковые константы

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