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

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

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

Ответ:

 (1) класс является любым из видов классов, разрешенных в языке C# , то есть в классах, объявленных с ключевыми словами: class, struct, interface, delegate, enum  

 (2) класс является статическим ссылочным классом - классом, объявленным как static class  

 (3) класс является ссылочным, но не статическим классом - классом, объявленным как class  

 (4) класс является статическим развернутым классом - классом, объявленным как static struct  

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


Номер 2
 Укажите высказывания, характеризующие понятие события:

Ответ:

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

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

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


Номер 3
 Укажите синтаксически корректную формулу, задающую объявление события в классе:

Ответ:

 (1) [атрибуты] [модификаторы]event [имя события]  

 (2) [атрибуты] [модификаторы]<тип> event [имя события]  

 (3) [атрибуты] [модификаторы]event [тип, заданный делегатом] [имя события]  


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

Ответ:

 (1) У класса можно определить много событий 

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

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


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

Ответ:

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

 (2) у всех объектов класса одинаковый набор событий 

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


Номер 3
 Укажите высказывания, истинные для обработчиков событий:

Ответ:

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

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

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


Упражнение 3:
Номер 1
 Пусть в классе Town  объявлено событие с именем festival
public event Festival festival;  Чтобы это  объявление было корректным, Festival  должно означать:

Ответ:

 (1) имя класса, объявленного с ключевым словом class  

 (2) имя класса, объявленного с ключевым словом struct  

 (3) имя класса, объявленного с ключевым словом delegate  


Номер 2
 

Пусть в классе Town объявлено событие с именем festival

public event Festival festival;

В этом объявлении Festival - это класс делегат, поэтому истинными являются следующие высказывания:


Ответ:

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

 (2) класс Festival задает сигнатуру обработчиков события 

 (3) все обработчики события должны быть методами класса Festival


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

Ответ:

 (1) событие является экземпляром класса, заданного делегатом, указанным при объявлении события. Ключевое словом event накладывает некоторые дополнительные ограничения на этот экземпляр 

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

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

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


Упражнение 4:
Номер 1
 Отметьте истинные высказывания:

Ответ:

 (1) классом sender - классом отправителем сообщения называется класс с событиями, объекты которого могут "зажигать" события в процессе работы их методов; 

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

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

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


Номер 2
 Класс receiver  - класс получатель уведомления о событии должен:

Ответ:

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

 (2) быть клиентом класса с событиями, чтобы иметь доступ к событию - event объекту 

 (3) присоединить обработчик события к списку вызовов события - event объекту 


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

Ответ:

 (1) сигнатура делегата фиксирована и включает два аргумента, где первый аргумент принадлежит типу object , а второй - является потомком встроенного класса EventArgs  

 (2) имя делегата фиксировано - EventHandler  

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


Упражнение 5:
Номер 1
 Укажите операции и методы, допустимые при работе с обработчиками событий:

Ответ:

 (1) операция "+ ", присоединяющая обработчик к списку вызовов события 

 (2) операция "- ", удаляющая обработчик из списка вызовов события 

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

 (4) метод Combine , являющийся аналогом операции "+ ". 


Номер 2
 Список аргументов события может содержать:

Ответ:

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

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

 (3) как входные аргументы, так и выходные аргументы 

 (4) может быть пустым 


Номер 3
 Объект, зажегший событие, передает информацию группе обработчиков события через входные аргументы метода. В группе обработчиков могут возникать конфликты из-за повреждения одним из членов группы информации, требуемой всем обработчикам. Входная информация, содержащаяся во входных аргументах события:

Ответ:

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

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

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


Упражнение 6:
Номер 1
 Объект, зажегший событие, получает информацию от группы обработчиков события через выходные аргументы метода. Какое из следующих высказываний справедливо:

Ответ:

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

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

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


Номер 2
 Метод GetInvocationList , который есть у события, позволяет:

Ответ:

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

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

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


Номер 3
 У класса может быть много событий. Укажите, какие возможности объявления события доступны классу: 

Ответ:

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

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

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

 (4) событие может быть объявлено как метод - свойство, содержащий два метода - add и remove, оба из которых должны быть заданы. 


Упражнение 7:
Номер 1
 Обработчик события:

Ответ:

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

 (2) никогда не принадлежит классу, зажигающему событие 

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

 (4) принадлежит только одному классу, слушающему событие 

 (5) может принадлежать многим классам, слушающим события 


Номер 2
 Объекты одного класса:

Ответ:

 (1) имеют одинаковый набор событий 

 (2) в процессе вычислений зажигают одинаковый набор событий 

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

 (4) в разных сеансах работы зажигают одинаковый набор событий 

 (5) в разных сеансах работы могут зажигать разные события. 


Номер 3
 Правда ли, что:

Ответ:

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

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

 (3) стандартные интерфейсные объекты (кнопки, списки и прочие) обладают набором предопределенных событий 

 (4) классы наследники не наследуют события своих родителей 




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