Ответы на курс: Основы объектно-ориентированного программирования
Сборка мусора – это?
|
обязанность программиста периодически освобождать память, отводимую объектам |
|
удаление методов класса сразу после их вызова |
|
автоматическое удаление неиспользуемых объектов |
|
удаление модулей, не вызываемых в текущей сессии работы ПО |
|
удаление объекта сразу после того, как с ним разорвана связь |
Обработка исключений
|
обеспечивает устойчивость ПО |
|
предназначена для обработки специальных случаев, предусмотренных спецификацией |
|
позволяет отключать некоторые модули приложения |
|
является механизмом восстановления в аварийных ситуациях |
При ОО-вычислениях
|
разрешается вызывать глобальные методы, не принадлежащие конкретному классу |
|
допустим единственный механизм – вызов объектом своего метода и свойства |
|
допустим широкий спектр организации вычислений |
|
методу могут передаваться аргументы в момент его вызова объектом |
|
разрешается использовать глобальные сущности |
Правило прямого отображения требует, чтобы
|
модульная структура ПО непосредственно отображала структуру модели предметной области |
|
модульная структура ПО непосредственно отображала структуру предметной области |
|
модульная структура ПО непосредственно отображала структуру спецификаций |
Верно ли, что различия между правилами, критериями и принципами модульности состоят в том, что
|
правила модульности следует выполнять при разработке ПО |
|
между правилами, критериями и принципами нет различий – это синонимичные понятия |
|
разрабатываемая система должна удовлетворять критериям модульности |
|
механизмы ООП следует проектировать в соответствии с принципами |
К правилам для обеспечения модульности относятся
|
непрерывность |
|
композиция |
|
явные интерфейсы |
|
скрытие информации |
Унифицированный доступ означает?
|
вызов объектом свойства или метода |
|
унификацию доступа к данным класса |
|
единый синтаксис вызова свойства и метода без аргументов, не позволяющий распознать клиенту, что вызывается – метод или свойство |
|
единый синтаксис вызова любых методов и свойств, не позволяющий распознать клиенту, что вызывается – метод или свойство |
Нужно ли создавать ПИК в процессе разработки системы?
|
всегда нет, поскольку это удорожает и замедляет процесс ее создания |
|
только при наличии большого опыта и экономических предпосылок |
|
всегда да, при наличии большого опыта |
|
всегда да, поскольку это удешевляет и убыстряет процесс ее создания |
Повторно использовать или переделывать
|
следует использовать объектный инструментарий (наследование, обертывание), удовлетворяющий критерию Открыт-Закрыт, допускающий расширяемость и повторное использование |
|
если компонент лишь частично удовлетворяет потребностям, его следует переделать |
|
повторно использовать следует лишь тот компонент, который полностью соответствует потребностям |
Что представляет собой наиболее приемлемый образец, полезный для повторного использования?
|
компонент ПО |
|
сценарий решения проблемы |
|
описание алгоритма |
|
спецификацию проблемы |
Отметьте истинные высказывания?
|
образцы, описанные в литературе, частично решают проблему повторного использования |
|
перегрузка метода является синтаксическим средством; она не решает важных проблем повторного использования и затрудняет читабельность текстов программ |
|
универсальность решает все проблемы повторного использования |
|
решение проблемы «повторно использовать или переделать» должно позволять сохранять одни свойства повторно используемого модуля и адаптировать другие |
Проблемы повторного использования связаны с?
|
непрерывностью представлений |
|
изменчивостью типов |
|
вариацией представлений |
|
взаимозависимостью операций |
Главная функция проекта
|
может меняться в процессе разработки |
|
проект может иметь несколько главных функций |
|
у проекта может вообще не существовать главной функции |
|
наиболее стабильная и неизменная часть проекта |
Отметьте истинные высказывания
|
функциональное проектирование сверху вниз не подходит для программных систем с долгим жизненным циклом, включающим их изменения и повторное использование |
|
описание, основанное на анализе функций системы с течением времени обеспечивает лучшую устойчивость и лучшие возможности для повторного использования, чем описание, основанное на типах объектов |
|
в классической объектной технологии имеются только два отношения между типами объектов: быть клиентом и быть наследником |
|
отношение наследования покрывает многочисленные формы специализации |
При проектировании системы типов можно использовать?
|
объекты физической реальности, к которой применяется ПО |
|
объекты солнечной системы |
|
объекты, описанные в литературе |
|
повторно используемые объекты |
Распределитель — это?
|
специальный вид контейнера данных, в котором клиент управляет размещением элементов |
|
специальный вид контейнера данных, в котором размещение элементов определяется внутренней дисциплиной |
|
системный администратор, распределяющий задания между исполнителями |
Спецификация
|
может быть противоречивой |
|
выражения, строящиеся на основе АТД, могут быть некорректными |
|
может быть неполной |
|
задает множество правильно построенных выражений |
Текущий объект – это?
|
объект, создаваемый в момент «большого взрыва» |
|
случайно выбираемый объект из множества объектов, созданных в процессе вычисления |
|
цель вызова в объектных вычислениях |
|
цель неквалифицированного вызова в объектных вычислениях |
Атрибут класса — это?
|
поле класса |
|
компонент класса |
|
часть структуры данных, представляющей объект |
|
метод класса |
Объект — это?
|
программный текст |
|
статическая структура |
|
динамическая структура, создаваемая в момент выполнения |
|
экземпляр класса |
Под динамическими псевдонимами понимается?
|
существование двух или более объектов, связанных с одной и той же сущностью |
|
существование двух или более объектов с одинаковыми значениями полей |
|
существование двух или более сущностей, присоединенных к одному и тому же объекту |
|
существование двух или более сущностей с одинаковыми именами |
Динамическая структура объектов, создаваемая в период выполнения
|
не имеет ничего общего со статической структурой классов |
|
имеет, как правило, сложность, значительно превосходящую сложность статической структуры классов |
|
имеет, как правило, сложность более простую, чем сложность статической структуры классов |
|
имеет ту же сложность, что и статическая структура классов |
При клонировании
|
при глубоком клонировании может создаваться несколько новых объектов |
|
создается копия существующего объекта |
|
изменяется состояние существующего объекта |
|
при поверхностном клонировании копируется только открытая часть объекта |
На основе изучения статического текста программы нельзя точно предсказать
|
когда будут созданы новые объекты |
|
когда ранее присоединенные ссылки становятся пустыми |
|
какие ссылки будут присоединены к объектам |
|
какие объекты будут созданы |
Присоединение 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 следует использовать наследование |
|
служат для задания перечислений |
|
следует использовать для перечислений с фиксированным набором значений |
|
уникальные, редко используемые значения |
В ОО-системах глобальные объекты
|
могут быть смоделированы |
|
не нужны |
|
существуют |
|
не существуют |
Добавить комментарий
Для отправки комментария вы должны авторизоваться.