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

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

Упражнение 1:
Номер 1
Универсальность и наследование – два тесно связанных механизма, обеспечивающие мощь ОО проектирования и программирования. Рассмотрим полиморфную структуру данных LIST[VEHICLE] – список, элементами которого являются транспортные средства. Укажите, элементы какого или каких классов не могут храниться в этом списке?

Ответ:

 (1) BUS 

 (2) TAXI 

 (3) STATION 

 (4) LINE 

 (5) TRAM 


Номер 2
Универсальность и наследование – два тесно связанных механизма, обеспечивающие мощь ОО проектирования и программирования. Рассмотрим универсальный класс LIST[T] – список, тип элементов которого задается параметром T. Укажите, какие классы получены в результате родового порождения?

Ответ:

 (1) LIST[TAXI] 

 (2) LINKEDLIST[T] 

 (3) LIST[BUS] 

 (4) LIST[PERSON] 

 (5) TWOLINKEDLIST[T] 


Номер 3
Универсальность и наследование – два тесно связанных механизма, обеспечивающие мощь ОО проектирования и программирования. Рассмотрим универсальный класс LIST[T] – список, тип элементов которого задается параметром T. Укажите, какие классы могут быть связаны отношением наследования с классом LIST[T]?

Ответ:

 (1) LIST[TAXI] 

 (2) LINKEDLIST[T] 

 (3) LIST[BUS] 

 (4) LIST[PERSON] 

 (5) TWOLINKEDLIST[T] 


Упражнение 2:
Номер 1
Пусть задан универсальный класс C[T] и одно из полей этого класса объявлено как x : T. Какие операции допустимы для сущности x?

Ответ:

 (1) любые операции любого типа данных, поскольку класс универсальный и никаких ограничений на Т не накладывается 

 (2) только операция проверки на равенство 

 (3) любые операции, определенные в классе ANY – предком всех классов 

 (4) операции сравнения 


Номер 2
Пусть задан универсальный класс C[T] и одно из полей этого класса объявлено как x : T. Какие операции допустимы для сущности x?

Ответ:

 (1) операции, определенные в классе С 

 (2) арифметические операции 

 (3) логические операции 

 (4) операции, разрешенные для всех типов 


Номер 3
Пусть задан универсальный класс C[T] и одно из полей этого класса объявлено как x : T. Какие операции допустимы для сущности x?

Ответ:

 (1) is_equall 

 (2) cloned 

 (3) любые операции, разрешенные для всех типов и определенные в классе ANY – предком всех классов 

 (4) greater_than 


Упражнение 3:
Номер 1
Ограничение универсальности класса C[T] означает:

Ответ:

 (1) ограничение возможностей класса C 

 (2) расширение возможностей класса C 

 (3) расширение числа операций для сущностей, тип которых задается параметром T 

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


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

Ответ:

 (1) уменьшение числа родовых параметров TJ 

 (2) наложение ограничений на один или несколько родовых параметров универсального класса TJ 

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

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


Номер 3
Пусть программист определил классы Т1 и Т2. Какие заголовки классов с ограничением универсальности синтаксически корректны в Eiffel?

Ответ:

 (1) class P[R -> T1, NUMERIC] 

 (2) class P[R -> {T1, NUMERIC}] 

 (3) class P[R1 -> T1, R2 -> NUMERIC] 

 (4) class P[R : T1, R2 :T1, T2] 

 (5) class P[R -> {COMPARABLE, NUMERIC}] 


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

Ответ:

 (1) необходимо задать ограничение на параметр ELEMENT, сделав его потомком класса NUMERIC 

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

 (3) необходимо, чтобы класс VECTOR был потомком класса NUMERIC 

 (4) необходимо и достаточно, чтобы класс VECTOR был потомком класса NUMERIC, а также ограничить параметр ELEMENT, сделав его потомком класса NUMERIC 


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

Ответ:

 (1) необходимо задать ограничение на параметр ELEMENT, сделав его потомком класса NUMERIC 

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

 (3) необходимо, чтобы класс MATRIX был потомком класса NUMERIC 

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


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

Ответ:

 (1) VECTOR[REAL] 

 (2) VECTOR[VECTOR[REAL]] 

 (3) VECTOR[PERSON] 

 (4) VECTOR[INTEGER] 

 (5) VECTOR[TRAM[REAL]] 


Упражнение 5:
Номер 1
Динамическое связывание и полиморфизм не являются единственно возможными механизмами, применяемыми в ситуациях, когда некоторую специфическую операцию следует применять к объектам разного типа. Какие утверждения справедливы для этих механизмов?

Ответ:

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

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

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

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


Номер 2
Динамическое связывание и полиморфизм не являются единственно возможными механизмами, применяемыми в ситуациях, когда некоторую специфическую операцию следует применять к объектам разного типа. Какие утверждения справедливы для этих механизмов?

Ответ:

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

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

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

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


Номер 3
Какие утверждения справедливы относительно принципа кастинга (приведения типа)?

Ответ:

 (1) приведение типа должно выполняться статически, еще на этапе компиляции 

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

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

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


Упражнение 6:
Номер 1
Пусть p – сущность типа F. Динамическим кастингом или приведением типа называется конструкция (S) p, динамически изменяющая в период выполнения тип сущности на тип S. Какие утверждения справедливы относительно динамического кастинга?

Ответ:

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

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

 (3) динамический кастинг всегда приводит к разбору случаев 

 (4) динамический кастинг всегда можно заменить динамическим связыванием 


Номер 2
Пусть p – сущность типа F. Динамическим кастингом или приведением типа называется конструкция (S) p, динамически изменяющая в период выполнения тип сущности на тип S. Динамический кастинг опасная операция. В языке Eiffel для безопасного применения динамического кастинга введена конструкция, называемая тестом объекта. Тест объекта – это булевское выражение следующего вида: attached (S) p as t. Выражение получает значение false, если тип объекта, присоединенного к p, не согласован с типом S. Выражение получает значение true, если сущность p присоединена к объекту, согласованному по типу с типом S. В этом случае в качестве побочного эффекта создается локальная переменная t типа S, к которой присоединяется соответствующий объект. Пусть тест объекта появляется как условие if оператора. Какие утверждения справедливы относительно области определения локальной переменной t?

Ответ:

 (1) переменную t можно использовать только в then ветви оператора if 

 (2) переменную t можно использовать только в else ветви оператора if 

 (3) переменную t можно использовать как в then, так и в else ветви оператора if 

 (4) переменную t можно использовать в операторах, следующих за оператором if 


Номер 3
Пусть p – сущность типа F. Динамическим кастингом или приведением типа называется конструкция (S) p, динамически изменяющая в период выполнения тип сущности на тип S. Динамический кастинг опасная операция. В языке Eiffel для безопасного применения динамического кастинга введена конструкция, называемая тестом объекта. Тест объекта – это булевское выражение следующего вида: attached (S) p as t. Выражение получает значение false, если тип объекта, присоединенного к p, не согласован с типом S. Выражение получает значение true, если сущность p присоединена к объекту, согласованному по типу с типом S. В этом случае в качестве побочного эффекта создается локальная переменная t типа S, к которой присоединяется соответствующий объект. Пусть тест объекта появляется как отрицание условия if оператора. Какие утверждения справедливы относительно области определения локальной переменной t?

Ответ:

 (1) переменную t можно использовать только в then ветви оператора if 

 (2) переменную t можно использовать только в else ветви оператора if 

 (3) переменную t можно использовать как в then, так и в else ветви оператора if 

 (4) переменную t можно использовать в операторах, следующих за оператором if 


Упражнение 7:
Номер 1
Какие утверждения являются справедливыми относительно образца проектирования "Посетитель (Visitor)"?

Ответ:

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

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

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

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


Номер 2
Какие утверждения является корректными относительно применения механизма динамического связывания и образца проектирования "Посетитель"?

Ответ:

 (1) при динамическом связывании каждый тип знает о применяемых операциях 

 (2) в образце "Посетитель" каждая операция знает о применяемых типах 

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

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


Номер 3
Какие утверждения, связанные с образцом проектирования "Посетитель", являются справедливыми?

Ответ:

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

 (2) клиентскими классами для образца являются классы, которые применяют новую операцию к целевым объектам 

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

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


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

Ответ:

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

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

 (3) двойная диспетчеризация реализуется двойным применением механизма одиночной диспетчеризации 

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


Номер 2
Какие утверждения справедливы относительно реализации образца проектирования "Посетитель"?

Ответ:

 (1) паттерн "Посетитель" представляет популярный механизм, не имеющий недостатков 

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

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

 (4) образец не задает повторно используемое решение. Он должен заново программироваться при каждом его применении 


Номер 3
Какие утверждения являются корректными по отношению к образцу проектирования "Посетитель"?

Ответ:

 (1) новая операция добавляется в целевой класс 

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

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

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




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