Ответы на курс: Основы объектно-ориентированного программирования
Сборка мусора – это?
| обязанность программиста периодически освобождать память, отводимую объектам | |
| удаление методов класса сразу после их вызова | |
| автоматическое удаление неиспользуемых объектов | |
| удаление модулей, не вызываемых в текущей сессии работы ПО | |
| удаление объекта сразу после того, как с ним разорвана связь |
Обработка исключений
| обеспечивает устойчивость ПО | |
| предназначена для обработки специальных случаев, предусмотренных спецификацией | |
| позволяет отключать некоторые модули приложения | |
| является механизмом восстановления в аварийных ситуациях |
При ОО-вычислениях
| разрешается вызывать глобальные методы, не принадлежащие конкретному классу | |
| допустим единственный механизм – вызов объектом своего метода и свойства | |
| допустим широкий спектр организации вычислений | |
| методу могут передаваться аргументы в момент его вызова объектом | |
| разрешается использовать глобальные сущности |
Правило прямого отображения требует, чтобы
| модульная структура ПО непосредственно отображала структуру модели предметной области | |
| модульная структура ПО непосредственно отображала структуру предметной области | |
| модульная структура ПО непосредственно отображала структуру спецификаций |
Верно ли, что различия между правилами, критериями и принципами модульности состоят в том, что
| правила модульности следует выполнять при разработке ПО | |
| между правилами, критериями и принципами нет различий – это синонимичные понятия | |
| разрабатываемая система должна удовлетворять критериям модульности | |
| механизмы ООП следует проектировать в соответствии с принципами |
К правилам для обеспечения модульности относятся
| непрерывность | |
| композиция | |
| явные интерфейсы | |
| скрытие информации |
Унифицированный доступ означает?
| вызов объектом свойства или метода | |
| унификацию доступа к данным класса | |
| единый синтаксис вызова свойства и метода без аргументов, не позволяющий распознать клиенту, что вызывается – метод или свойство | |
| единый синтаксис вызова любых методов и свойств, не позволяющий распознать клиенту, что вызывается – метод или свойство |
Нужно ли создавать ПИК в процессе разработки системы?
| всегда нет, поскольку это удорожает и замедляет процесс ее создания | |
| только при наличии большого опыта и экономических предпосылок | |
| всегда да, при наличии большого опыта | |
| всегда да, поскольку это удешевляет и убыстряет процесс ее создания |
Повторно использовать или переделывать
| следует использовать объектный инструментарий (наследование, обертывание), удовлетворяющий критерию Открыт-Закрыт, допускающий расширяемость и повторное использование | |
| если компонент лишь частично удовлетворяет потребностям, его следует переделать | |
| повторно использовать следует лишь тот компонент, который полностью соответствует потребностям |
Что представляет собой наиболее приемлемый образец, полезный для повторного использования?
| компонент ПО | |
| сценарий решения проблемы | |
| описание алгоритма | |
| спецификацию проблемы |
Отметьте истинные высказывания?
| образцы, описанные в литературе, частично решают проблему повторного использования | |
| перегрузка метода является синтаксическим средством; она не решает важных проблем повторного использования и затрудняет читабельность текстов программ | |
| универсальность решает все проблемы повторного использования | |
| решение проблемы «повторно использовать или переделать» должно позволять сохранять одни свойства повторно используемого модуля и адаптировать другие |
Проблемы повторного использования связаны с?
| непрерывностью представлений | |
| изменчивостью типов | |
| вариацией представлений | |
| взаимозависимостью операций |
Главная функция проекта
| может меняться в процессе разработки | |
| проект может иметь несколько главных функций | |
| у проекта может вообще не существовать главной функции | |
| наиболее стабильная и неизменная часть проекта |
Отметьте истинные высказывания
| функциональное проектирование сверху вниз не подходит для программных систем с долгим жизненным циклом, включающим их изменения и повторное использование | |
| описание, основанное на анализе функций системы с течением времени обеспечивает лучшую устойчивость и лучшие возможности для повторного использования, чем описание, основанное на типах объектов | |
| в классической объектной технологии имеются только два отношения между типами объектов: быть клиентом и быть наследником | |
| отношение наследования покрывает многочисленные формы специализации |
При проектировании системы типов можно использовать?
| объекты физической реальности, к которой применяется ПО | |
| объекты солнечной системы | |
| объекты, описанные в литературе | |
| повторно используемые объекты |
Распределитель — это?
| специальный вид контейнера данных, в котором клиент управляет размещением элементов | |
| специальный вид контейнера данных, в котором размещение элементов определяется внутренней дисциплиной | |
| системный администратор, распределяющий задания между исполнителями |
Спецификация
| может быть противоречивой | |
| выражения, строящиеся на основе АТД, могут быть некорректными | |
| может быть неполной | |
| задает множество правильно построенных выражений |
Текущий объект – это?
| объект, создаваемый в момент «большого взрыва» | |
| случайно выбираемый объект из множества объектов, созданных в процессе вычисления | |
| цель вызова в объектных вычислениях | |
| цель неквалифицированного вызова в объектных вычислениях |
Атрибут класса — это?
| поле класса | |
| компонент класса | |
| часть структуры данных, представляющей объект | |
| метод класса |
Объект — это?
| программный текст | |
| статическая структура | |
| динамическая структура, создаваемая в момент выполнения | |
| экземпляр класса |
Под динамическими псевдонимами понимается?
| существование двух или более объектов, связанных с одной и той же сущностью | |
| существование двух или более объектов с одинаковыми значениями полей | |
| существование двух или более сущностей, присоединенных к одному и тому же объекту | |
| существование двух или более сущностей с одинаковыми именами |
Динамическая структура объектов, создаваемая в период выполнения
| не имеет ничего общего со статической структурой классов | |
| имеет, как правило, сложность, значительно превосходящую сложность статической структуры классов | |
| имеет, как правило, сложность более простую, чем сложность статической структуры классов | |
| имеет ту же сложность, что и статическая структура классов |
При клонировании
| при глубоком клонировании может создаваться несколько новых объектов | |
| создается копия существующего объекта | |
| изменяется состояние существующего объекта | |
| при поверхностном клонировании копируется только открытая часть объекта |
На основе изучения статического текста программы нельзя точно предсказать
| когда будут созданы новые объекты | |
| когда ранее присоединенные ссылки становятся пустыми | |
| какие ссылки будут присоединены к объектам | |
| какие объекты будут созданы |
Присоединение y к x
| использует y как цель | |
| имеет место при вызове подпрограммы, когда формальный аргумент x заменяется фактическим y | |
| использует x как цель | |
| имеет место при присваивании y:=x |
Работа по освобождении памяти, занятой недостижимыми объектами может вестись на уровне
| приложения | |
| исполнительной среды | |
| компилятора | |
| отдельной процедуры |
Несерьезный подход в освобождении памяти может применяться?
| в системах реального времени | |
| в системах, где время жизни объектов совпадает с временем жизни работы приложения | |
| в системах, где создается небольшое число объектов | |
| в системах, ориентированных на работу в среде без сборщика мусора |
Повторному использованию способствует объектный механизм наследования классов. Наследование позволяет классу иметь?
| одного и только одного непосредственного родителя | |
| одного или более непосредственных потомков | |
| одного и только одного непосредственного потомка | |
| одного или более непосредственных родителей |
Универсальный класс – это?
| класс с параметрами, заданными типами | |
| синоним родового класса | |
| синоним параметризованного класса | |
| класс, позволяющий решить проблему универсализации |
Корректно использовать сущность x, чей тип задан формальным родовым параметром G, можно?
| как фактический аргумент в вызове подпрограммы на месте формальных параметров типа G, или типа ANY | |
| в арифметических выражениях вида x+ y или x- y, где y также типа G | |
| как цель вызова компонента класса ANY | |
| в логических выражениях вида x = y или x /= y, где y также типа G |
Отметьте истинные высказывания
| механизм ограниченной универсальности поддерживается механизмом наследования | |
| универсализация требуется только в типизированном языке, гарантирующем статически проверяемую безопасность типов | |
| единственные допустимые операции над сущностью, чей тип является формальным родовым параметром, это операции, применимые к любому типу | |
| статическая типизация облегчает читаемость и повышает надежность программы |
Отметьте истинные высказывания
| фактический тип при родовом порождении может быть типом, полученным в результате родового порождения | |
| реализация универсальности предполагает фактическое создание классов при родовом порождении и приводит к увеличению программного кода | |
| форма универсализации, где формальный родовой параметр уже не может быть произвольным типом, а является типом, гарантирующим предоставление ряда операций, называется ограниченной универсализацией | |
| клиент родового класса должен предоставлять фактические типы для формальных параметров |
Неверное решение, принятое при разработке программной системы, классифицируется как
| ошибка | |
| неисправность | |
| жучок | |
| дефект |
Если процедуры создания корректны (по их завершению выполняются все инварианты класса) и каждый из экспортируемых методов сохраняет инварианты, то?
| гарантируется выполнение инвариантов во все стабильные моменты для программ без циклов | |
| эти условия еще не гарантируют выполнение инвариантов во все стабильные моменты | |
| гарантируется выполнение инвариантов во все стабильные моменты для программ без динамических псевдонимов | |
| гарантируется выполнение инвариантов во все стабильные моменты |
Каждый цикл
| имеет инвариант, позволяющий доказать его корректность | |
| имеет множество инвариантов | |
| имеет инвариант, позволяющий доказать завершаемость цикла | |
| имеет единственный инвариант |
Частью контракта, заключаемого между классом-поставщиком и классами, являющимися его клиентами, является ?
| гарантия клиентами выполнения всех предусловий методов класса в каждый момент выполнения клиентской программы | |
| проверка предусловия в клиентской программе непосредственно перед вызовом метода и проверка постусловия сразу же по завершении метода | |
| проверка предусловия в методе класса в тот момент, когда клиент вызывает этот метод | |
| выполнение предусловия в клиентской программе непосредственно перед вызовом метода |
Исключения могут возникать в результате следующих ситуаций
| выполнение инструкции, явно включающей исключение | |
| квалифицированный вызов a.f, в ходе которого обнаруживается отсутствие компонента f цели a | |
| выполняется утверждение инструкции check | |
| постусловие не выполняется на выходе |
Дисциплинированная обработка исключения должна завершаться одной из следующих ситуаций
| отказом | |
| повторением работы тела метода | |
| уведомлением о возникшем исключении и продолжением работы | |
| исправлением ситуации и возвращением в точку возникновения исключения |
Организованная паника
| означает, что приложение работает некорректно | |
| завершает работу вызванного метода и всего приложения | |
| подразумевает отказ для вызванного метода | |
| это один из двух нормальных способов завершения работы обработчика исключения |
В инструкции цикла
| предложение from, задающее инициализацию, факультативно | |
| проверка условия окончания цикла в предложении until выполняется в конце цикла | |
| предложение invariant обязательно, а предложение variant, — факультативно | |
| предложения invariant и variant, задающие инвариант и вариант цикла, факультативны |
Вызов компонента
| в форме x.f(…), где x – цель вызова, называется квалифицированным | |
| квалифицированный вызов всегда может быть преобразован в неквалифицированный | |
| всегда имеет цель вызова | |
| в форме f(…) называется неквалифицированным |
Замена формальных аргументов фактическими при вызове метода
| имеет семантику присваивания | |
| не требует соответствия аргументов по числу и типам | |
| имеет семантику передачи аргументов по значению, запрещая в связи с этим явную модификацию формальных аргументов (использование их в левых частях операторов присваивания, в процедурах создания) | |
| называется операцией присоединения |
Отметьте истинные высказывания
| обертывание чаще всего сводится к добавлению объектного интерфейса к необъектному содержанию | |
| взаимодействие с внешним ПО разумно осуществлять на уровне компонентов | |
| фактические аргументы при вызове не могут быть выражениями | |
| операции ввода-вывода поддерживаются специальными классами FILE и STD_FILES |
Полиморфизм – это способность обладать несколькими формами. Полиморфными могут быть?
| присваивания и присоединения | |
| методы | |
| сущности | |
| структуры данных |
Отложенный компонент, отложенный класс
| компонент является отложенным, если его реализация возлагается на потомка | |
| класс является отложенным, если все его компоненты отложены | |
| компонент является отложенным, если потомок переопределил реализацию, заданную его родителем | |
| класс является отложенным, если он имеет хотя бы один отложенный компонент |
Динамические и статические типы
| сущность имеет динамический и статический типы | |
| сущность имеет только статический тип | |
| объект имеет динамический и статический типы | |
| ссылка имеет динамический тип или может быть пустой |
Расширение или специализация
| экземпляры родительского класса являются экземплярами классов потомков | |
| у экземпляров потомков свойств и методов может быть больше, чем у экземпляров родительского класса | |
| наследование классов, рассматриваемое как наследование модулей, является расширением | |
| наследование классов, рассматриваемое как наследование типов, является специализацией |
Браком по расчету называется такое множественное наследование, когда?
| один класс предоставляет атрибуты (данные), а другой – процедуры и функции (действия) | |
| когда получено одобрение предков на множественное наследование | |
| один класс предоставляет спецификации, а другой – возможности их реализации | |
| один класс является красивым, а другой – богатым |
Дублируемое наследование
| запрещено из-за возникающих конфликтов | |
| это ситуация, при которой идет наследование от одного и того же класса по разным путям наследования | |
| это ситуация, при которой родительские классы имеют общих предков | |
| это ситуация, при которой родительские классы имеют компоненты с одинаковыми именами или совпадающими реализациями |
Достоинства, недостатки и проблемы множественного наследования
| проблема: родители имеют общих предков | |
| достоинство: наследование всех возможностей родителей | |
| недостаток: наследник не может отказаться от вредных или противоречащих родительских свойств | |
| проблема: компоненты родителей имеют одинаковые имена |
Закрепленное объявление – это способ?
| относительного объявления типа | |
| абсолютного объявления типа | |
| при котором тип сущности объявляется подобным типу опорного элемента | |
| при котором изменение типа опорного элемента приводит к изменению типов всех закрепленных сущностей |
Универсальные классы General и ANY — это библиотечные классы
| позволяющие клиентам решать все нужные им задачи | |
| содержащие атрибуты и методы, необходимые всем объектам независимо от их природы | |
| по определению являющиеся предками всех создаваемых классов | |
| автоматически вызываемые в специальных случаях |
Контракты и субподряды. Под субподрядом понимается создание класса – наследника существующего класса. Субподрядчик
| вправе улучшить для клиентов условия контракта | |
| может эффективнее выполнить работу, предусмотренную контрактом | |
| не вправе изменить существующий контракт | |
| обязан удовлетворить всем требованиям существующего контракта |
При повторном объявлении
| требуется сохранение сигнатуры компонента | |
| разрешается произвольное изменение типа атрибута и типа аргументов у компонентов | |
| разрешается изменение типа атрибута и типа аргументов у компонентов в соответствии с правилами согласованности типов | |
| разрешается изменение сигнатуры компонента |
Отметьте истинные высказывания
| при повторном использовании реализаций информация скрывается | |
| попытка присваивания может заменить динамическое связывание | |
| повторное объявление должно удовлетворять утверждениям оригинальной подпрограммы | |
| у клиента нет возможности контроля изменения семантики операций создателями классов, пользующимися повторными объявлениями и динамическим связыванием |
Отметьте истинные высказывания
| компонент, доступный классу, может быть не доступен его потомкам | |
| при повторном использовании интерфейсов скрывается информация о реализации | |
| наследование и скрытие информации – это взаимозависимые механизмы | |
| утверждения дают глубокое понимание природы наследования |
Замораживание компонента означает?
| запрет на переименование | |
| сохранение спецификаций потомком | |
| запрет потомкам изменять реализацию компонента | |
| сохранение его интерфейса с возможностью изменений в скрытой части |
Попытка присваивания
| предполагает динамическую проверку соответствия типов левой и правой части присваивания | |
| присваивание, заканчивающееся отказом | |
| это специальное обобщение операции присваивания | |
| это присваивание цели значения void в случае несоответствия типов |
Инвариант класса
| является конъюнкцией собственного инварианта класса и собственного инварианта родителя | |
| если у класса нет собственного инварианта, то инвариант True играет эту роль | |
| является конъюнкцией собственных инвариантов всех предков класса | |
| совпадает с собственным (непосредственным) инвариантом класса – конъюнкцией утверждений из его раздела invariant |
Динамическое связывание
| позволяет связать цель вызова с вызываемым компонентом еще на этапе компиляции | |
| выбирает связываемый компонент из класса, соответствующего статическому типу цели | |
| выбирает связываемый компонент из класса, соответствующего динамическому типу цели | |
| имеет тот же эффект, что и статическое связывание |
Скрытие потомком – это?
| скрытие потомком всех компонентов его родителя | |
| запрет потомком экспортировать компонент, разрешенный к экспорту его родителем | |
| запрет родителя классам потомкам экспортировать компоненты родителя | |
| запрет, налагаемый родителем, на экспорт потомком некоторого компонента родительского класса |
Наилучшим решением проблемы системной корректности является решение?
| на основе глобального анализа всей системы | |
| на основе закрепления | |
| на основе введения понятия кэтколла | |
| лучшее решение не найдено |
Статическая типизация
| возможна только для ОО-языков | |
| позволяет обнаруживать многие ошибки еще на этапе компиляции | |
| позволяет установить динамический тип сущности | |
| анализирует состояние объектов в период выполнения |
Статическое связывание
| выбирает связываемый компонент из класса, соответствующего динамическому типу цели | |
| позволяет связать цель вызова с вызываемым компонентом еще на этапе компиляции | |
| имеет тот же эффект, что и динамическое связывание | |
| выбирает связываемый компонент из класса, соответствующего статическому типу цели |
Ковариантность – это?
| параллельное изменение спецификации компонента и его реализации | |
| механизм, приводящий в сочетании со статической типизацией к нарушению корректности системы | |
| механизм, устраняющий нарушения корректности системы | |
| стратегия изменения типов при переопределении компонента |
Отметьте истинные высказывания
| задачи типизации и связывания могут быть решены только статически | |
| приведение типа (кастинг) препятствует строгой статической типизации | |
| в ряде случаев универсальность требуется ограничить | |
| задачи типизации и связывания могут быть решены только динамически |
Отметьте истинные высказывания
| класс не может экспортировать или скрывать константы | |
| потомки могут переопределять значения атрибутов-констант | |
| однократные функции могут применяться для моделирования глобальных значений – «системных параметров» | |
| константы занимают память, также как и обычные атрибуты |
Создание разделяемых объектов и разделяемых констант отличается тем, что?
| для констант задаются инварианты, запрещающие изменять их значения | |
| ничем не отличается | |
| как константы, так и разделяемые объекты являются константными ссылками | |
| в отличие от констант значения полей ссылки для разделяемых объектов изменяются в процессе работы |
Константы
| классы, которым требуются константы, как правило являются наследниками специальных классов с набором констант | |
| собираются вместе в специальных классах, предоставляющих этот набор другим классам | |
| классы, которым требуются константы, как правило являются клиентами специальных классов с набором констант | |
| разных классов объявляются в самих классах |
Однократная процедура – это процедура?
| удаляемая из класса после первого вызова | |
| вызываемая только один раз | |
| вычисления однократного интеграла | |
| выполняющая свою работу при первом обращении и ничего не делающая при последующих вызовах |
Разделяемые объекты
| создаются обычной процедурой создания класса | |
| представляют собой однократную функцию, вызывающую процедуру создания | |
| представляют собой обычную функцию, вызывающую процедуру создания | |
| создаются, используя специальные правила, заданные для каждого класса |
Значения Unique
| для перечислений, чье множество значений может изменяться, вместо механизма Unique следует использовать наследование | |
| служат для задания перечислений | |
| следует использовать для перечислений с фиксированным набором значений | |
| уникальные, редко используемые значения |
В ОО-системах глобальные объекты
| могут быть смоделированы | |
| не нужны | |
| существуют | |
| не существуют |


Добавить комментарий
Для отправки комментария вы должны авторизоваться.