игра брюс 2048
Главная / Программирование / Объектно-ориентированное программирование и программная инженерия / Тест 2

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

Упражнение 1:
Номер 1
Проектирование семейства классов начинается с создания класса – прародителя семейства. Как правило, такой класс является отложенным классом, называемым также абстрактным классом. Какой же класс называется отложенным?

Ответ:

 (1) класс, создание которого отложено на завтра 

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

 (3) класс, в котором у некоторых методов задана сигнатура и спецификация, но не задана реализация 

 (4) класс, у которого может не быть отложенных методов, но объявленный с ключевым словом deferred 

 (5) только такой класс, у которого отложены все методы 


Номер 2
Проектирование семейства классов начинается с создания класса – прародителя семейства. Как правило, такой класс является отложенным классом. У отложенного класса есть хотя бы один отложенный метод. Какой же метод называется отложенным?

Ответ:

 (1) метод, для которого задана реализация, но не задана сигнатура и спецификация 

 (2) метод, для которого задана сигнатура и спецификация, но не задана реализация 

 (3) метод, для которого задана сигнатура и реализация, но не задана спецификация 

 (4) метод, для которого задана сигнатура, но не задана реализация и спецификация 


Номер 3
Проектирование семейства классов начинается с создания класса – прародителя семейства. Как правило, такой класс является отложенным классом. У отложенного класса ряд методов являются отложенными. Укажите причины, по которым на верхних уровнях проектирования разумно создавать отложенные методы?

Ответ:

 (1) в целях сокращения размера кода родительского класса 

 (2) код метода достаточно прост, и его легко реализовать в каждом потомке 

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

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


Упражнение 2:
Номер 1
Если в родительском классе есть отложенный метод, то наследник класса обязан?

Ответ:

 (1) оставить этот метод отложенным 

 (2) задать реализацию отложенного метода 

 (3) задать реализацию либо оставить метод отложенным 

 (4) в случае задания реализации создать новый отложенный метод 


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

Ответ:

 (1) у отложенного класса нет конструкторов (операторов создания) объектов класса 

 (2) для отложенного класса обязательно задание конструктора без аргументов 

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

 (4) объекты отложенного класса можно объявлять и присоединять к ним потомков отложенного класса 


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

Ответ:

 (1) метод класса является эффективным, если эффективен размер его кода и время выполнения 

 (2) метод класса является эффективным, если задана его реализация 

 (3) тип или класс является эффективным, если все его компоненты эффективны 

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

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


Упражнение 3:
Номер 1
Какие утверждения справедливы для понятий экземпляр типа и прямой экземпляр типа?

Ответ:

 (1) экземпляр типа является объектом, а прямой экземпляр таковым не является 

 (2) экземпляр типа создается конструктором (оператором создания) этого типа 

 (3) экземпляр типа и прямой экземпляр типа – это эквивалентные понятия 

 (4) прямой экземпляр типа создается конструктором (оператором создания) этого типа 

 (5) экземпляром типа является прямой экземпляр этого типа или прямой экземпляр согласованного типа (потомка класса) 


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

Ответ:

 (1) метод, в коде которого мыши прогрызли дыры 

 (2) метод, в котором часть исполняемого кода отсутствует и заменена псевдокодом 

 (3) метод, в котором отсутствует реализация 

 (4) эффективный метод с заданной реализацией, но код которого вызывает отложенные методы, не имеющие реализации 


Номер 3
Какие утверждения о проектировании системы классов, связанных отношением наследования, следует считать корректными:

Ответ:

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

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

 (3) число уровней в иерархии наследования зависит от специфики задачи. Минимизировать число уровней не следует 

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


Упражнение 4:
Номер 1
Если родитель задал реализацию метода, то наследник:

Ответ:

 (1) обязан сохранить эту реализацию в неприкосновенности 

 (2) может сохранить и использовать реализацию родителя 

 (3) может переопределить эту реализацию 

 (4) может отменить реализацию и объявить метод отложенным 


Номер 2
Говорят, что наследник переопределяет родительский метод, если

Ответ:

 (1) у родителя метод отложенный, а наследник задает его реализацию 

 (2) у родителя метод имеет реализацию (эффективен), а наследник ее изменяет 

 (3) у родителя метод отложенный, а наследник изменяет сигнатуру или контракт, оставляя метод отложенным 

 (4) У родителя метод имеет реализацию (эффективен), а наследник объявляет метод отложенным 


Номер 3
Какие высказывания справедливы для таких понятий как переопределение и переобъявление методов?

Ответ:

 (1) переобъявление более широкое понятие и включает переопределение 

 (2) переопределение более широкое понятие и включает переобъявление 

 (3) эти понятия эквивалентны 

 (4) если выполняется переопределение метода, то переобъявление не происходит 

 (5) переобъявление означает изменение чего-либо – контракта, сигнатуры, реализации 

 (6) переопределение метода должно быть явным и сопровождаться ключевым словом redefine 


Упражнение 5:
Номер 1
С присваиванием связаны два механизма – трансформация и полиморфное присоединение.  Какие утверждения справедливы для этих механизмов?

Ответ:

 (1) если применяется полиморфное присоединение, то обязательно происходит и трансформация объекта источника 

 (2) если применяется полиморфное присоединение, то может выполняться и трансформация объекта источника 

 (3) если применяется полиморфное присоединение, то трансформация объекта источника не применяется 

 (4) если применяется один механизм, то второй применяться не может 

 (5) трансформация допустима для ссылочного присваивания, если оно не является полиморфным 


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

Ответ:

 (1) имена всех переопределяемых методов должны быть заданы в предложении redefine в inherit части класса, задающей наследование 

 (2) ключевое слов redefine должно сопровождать объявление каждого метода 

 (3) включение имени метода в предложение redefine означает существование двух экземпляров метода с одним и тем же именем, но с разными реализациями (задание перегрузки метода) 

 (4) включение имени метода в предложение redefine означает отсутствие перегрузки метода, поскольку после переопределения метод с таким именем существует в единственном экземпляре 


Номер 3
В некоторых языках программирования используется перегрузка методов, когда несколько методов имеют одно и то же имя, но разную сигнатуру.  Какие из утверждений являются справедливыми?

Ответ:

 (1) в языке Eiffel перегрузка методов не допускается 

 (2) в языке Eiffel перегрузка методов широко используется 

 (3) в языках C++, C#, Java перегрузка методов не допускается 

 (4) в языках C++, C#, Java перегрузка методов широко используется 


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

Ответ:

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

 (2) контракты следует задавать на как можно высоком уровне абстракции 

 (3) при переопределении реализации метода наследником контракт метода сохраняется 

 (4) при переопределении реализации метода наследником контракт метода также переопределяется 


Номер 2
При проектировании важное значение играет скрытие информации. В чем ценность этого приема?

Ответ:

 (1) разработчик класса сохраняет свое "know how", не раскрывая деталей реализации 

 (2) клиенты класса могут работать с классом без необходимости рассмотрения деталей реализации 

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

 (4) клиентам класса вполне достаточно знать интерфейс класса поставщика, включающий контракты 


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

Ответ:

 (1) разбор случаев всегда предпочтительнее наследования, поддерживаемого полиморфизмом 

 (2) наследование, поддерживаемое полиморфизмом всегда предпочтительнее разбора случаев 

 (3) наследование, поддерживаемое полиморфизмом чаще всего предпочтительнее разбора случаев 

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

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


Упражнение 7:
Номер 1
Каждый создаваемый объект содержит поля, в которых хранятся значения атрибутов класса, задающие свойства объекта. В языке Eiffel при создании объекта добавляются поля, содержащие дополнительную информацию. Каково число таких полей?

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 2
Каждый создаваемый объект содержит поля, в которых хранятся значения атрибутов класса, задающие свойства объекта. В реализации языка Eiffel при создании объекта добавляются поля, содержащие дополнительную информацию. Эти поля содержат информацию, задающую:

Ответ:

 (1) тип объекта 

 (2) значение объекта 

 (3) число классов - предков 

 (4) число классов - потомков 

 (5) данные для сборщика мусора 


Номер 3
Какие утверждения относительно возможности эффективной реализации динамического связывания являются справедливыми?

Ответ:

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

 (2) динамическое связывание, основанное на использовании таблицы методов, позволяет найти нужный метод за константное время O(1) 

 (3) компилятор Eiffel всегда выполняет динамическое связывание, поскольку оно задает корректную семантику вызова 

 (4) компилятор Eiffel выполняет статическое связывание в тех ситуациях, когда оно задает корректную семантику вызова 


Упражнение 8:
Номер 1
Какие утверждения справедливы?

Ответ:

 (1) метод класса является эффективным, если задана его спецификация и реализация 

 (2) достаточно задать контракт метода, чтобы сделать его эффективным 

 (3) эффективный метод может быть "программой с дырами", содержащей вызовы отложенных методов 

 (4) отложенным методом называется метод, содержащий реализацию, но спецификация которого не задана 


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

Ответ:

 (1) реализация компонента является частью его спецификации 

 (2) метод класса является эффективным, если задана его реализация 

 (3) прямым экземпляром типа является объект, создаваемый конструктором типа (оператором создания) 

 (4) переобъявление метода у потомка всегда связано с изменением реализации метода 


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

Ответ:

 (1) спецификацию компонента составляет его контракт и его сигнатура 

 (2) полиморфизм предполагает, что потомки класса могут изменять реализацию метода, заданную в классе 

 (3) потомок не может объявить метод отложенным, если задана реализация метода одним из предков 

 (4) динамическое связывание необходимо для реализации полиморфизма 




Главная / Программирование / Объектно-ориентированное программирование и программная инженерия / Тест 2