игра брюс 2048
Главная / Программирование / Объектное программирование в классах на С# 3.0 / Тест 10

Объектное программирование в классах на С# 3.0 - тест 10

Упражнение 1:
Номер 1
 В языке C# делегатом называют частный случай класса - класс, задаваемый ключевым словом delegate. Укажите высказывания, истинные для делегата:

Ответ:

 (1) делегат определяет функциональный тип данных 

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

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


Номер 2
 Укажите синтаксически корректную формулу, задающую описание делегата:

Ответ:

 (1) [<модификатор доступа>] delegate <тип результата > <имя делегата> (<список формальных аргументов>) 

 (2) [<модификатор доступа>] delegate <тип результата > <имя делегата> (<список формальных аргументов>) { } 

 (3) [<модификатор доступа>] delegate <тип результата > <имя делегата> (<список формальных аргументов>) { <тело метода>} 

 (4) [<модификатор доступа>] Delegate <тип результата > <имя делегата> (<список формальных аргументов>) 


Номер 3
 Укажите высказывания, истинные для делегата - класса, задаваемого ключевым словом delegate:

Ответ:

 (1) делегат C# задает определение функционального типа (класса) данных; 

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

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


Упражнение 2:
Номер 1
 Укажите высказывания, истинные для конструкторов делегата - класса, задаваемого ключевым словом delegate:

Ответ:

 (1) у класса делегата нет конструкторов 

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

 (3) у класса делегата существует только один конструктор - конструктор без аргументов 

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


Номер 2
 

Пусть дано объявление делегата

public delegate double DToD(double x);

Укажите корректные объявления экземпляров делегата:


Ответ:

 (1) DToD del2 = Math.Cos 

 (2) DToD del = new DToD() 

 (3) DToD del1 = new DToD(Math.Sin)  


Номер 3
 

Пусть дано объявление делегата

public delegate double DToD(double x);

Дано объявление класса

public class Three{ public double F(double x){return x * 2;} public int F1(int x) { return x * 2; } }

Укажите корректные объявления экземпляров делегата:


Ответ:

 (1) Three three = new Three(); DToD del3 = three.F; 

 (2) Three three = new Three(); DToD del4 = new DToD(three.F);  

 (3) Three three = new Three(); DToD del5 = three.F1 


Упражнение 3:
Номер 1
 

Пусть дано объявление делегата

public delegate double DToD(double x);

В результате выполнения фрагмента кода

double res = new DToD(Math.Cos)(Math.PI);

произойдет следующее:


Ответ:

 (1) возникнет ошибка на этапе компиляции 

 (2) возникнет ошибка на этапе выполнения 

 (3) ошибки не будет и переменная res получит значение 1 

 (4) ошибки не будет и переменная res получит значение -1 

 (5) ошибки не будет и переменная res получит значение 0 


Номер 2
 Укажите объявления делегата, корректные в некотором контексте:

Ответ:

 (1) public class D = delegate void(string s);  

 (2) Delegate D1 = new Delegate( void(string s)  

 (3) public delegate void D2 (string s);  

 (4) public delegate int D3(int x1, ref int x2);  

 (5) public delegate T T1(int x)  


Номер 3
 Укажите высказывания, истинные для экземпляра делегата:

Ответ:

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

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

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


Упражнение 4:
Номер 1
 Делегаты широко используются при задании функций высшего порядка. Укажите, какие определения функции высшего порядка являются корректными:

Ответ:

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

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

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


Номер 2
 В каких задачах, рассмотренных в курсе лекций, использовался механизм функций высших порядков:

Ответ:

 (1) в методе вычисления определенного интеграла 

 (2) в методе сортировки массива объектов 

 (3) в методе умножения матриц 

 (4) в методе, оценивающем время работы других методов 


Номер 3
 Делегаты широко используются при задании функций обратного вызова (callback функций). Укажите, какие утверждения относительно функций обратного вызова являются корректными:

Ответ:

 (1) функцией обратного вызова называется функция, в теле которой вызывается другая функция 

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

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

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


Упражнение 5:
Номер 1
 В языке C# допустимо применение анонимных методов. Укажите высказывания, истинные для анонимных методов:

Ответ:

 (1) анонимные методы - это методы, заданные своей реализацией, но не имеющие имени 

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

 (3) анонимные методы - это методы, реализация которых неизвестна 


Номер 2
 В языке C# допустимо применение анонимных методов. При задании анонимного метода можно использовать механизм лямбда выражений. Укажите синтаксическую формулу, корректно задающую анонимный метод:

Ответ:

 (1) < имя метода> [(<сигнатура метода>)] => <тело метода> 

 (2) [(<сигнатура метода>)] => <тело метода> 

 (3) delegate [(<сигнатура метода>)]=> <тело метода> 

 (4) delegate [(<сигнатура метода>)] 


Номер 3
 В языке C# допустимо применение анонимных методов. При задании анонимного метода можно использовать механизм делегатов. Укажите синтаксическую формулу, корректно задающую анонимный метод:

Ответ:

 (1) delegate < имя метода> [(<сигнатура метода>)] <тело метода> 

 (2) delegate [(<сигнатура метода>)] <тело метода> 

 (3) delegate [(<сигнатура метода>)] 


Упражнение 6:
Номер 1
 При построении программной системы часто используется прием построения системы методом раскрутки. Раскрутка применима и при построении ОО-систем, когда вначале строятся классы внутреннего слоя, а затем надстраивается внешний слой, классы которого могут быть клиентами и  наследниками классов внутреннего слоя, и, следовательно, могут свободно получать доступ к сервисам внутреннего слоя. Укажите, какие утверждения справедливы при таком способе построения программной системы:

Ответ:

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

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

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


Номер 2
 Какие высказывания являются истинными относительно двух важных механизмов - делегатов и полиморфизма:

Ответ:

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

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

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


Номер 3
 Укажите истинные высказывания:

Ответ:

 (1) экземпляр делегата может быть задан как поле класса 

 (2) экземпляр делегата может быть задан как статический метод - свойство класса 

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


Упражнение 7:
Номер 1
 Укажите высказывания, истинные для делегатов:

Ответ:

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

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

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


Номер 2
 Укажите операции, допустимые над делегатами:

Ответ:

 (1)

 (2)

 (3)

 (4)


Номер 3
 Укажите методы, существующие в классе Delegate:

Ответ:

 (1) Combine 

 (2) Remove 

 (3) PutInvocationList 

 (4) GetInvocationList 




Главная / Программирование / Объектное программирование в классах на С# 3.0 / Тест 10