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

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

Упражнение 1:
Номер 1
 Понятие "интерфейс" широко используется при программировании на языке C#. Укажите контекст, в котором используется ключевое слово языка "interface":

Ответ:

 (1) при описании открытой части класса, составляющей интерфейс клиентов класса 

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

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


Номер 2
 Укажите основную цель введения интерфейсов в язык C#:

Ответ:

 (1) устранить недостатки абстрактных классов 

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

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


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

Ответ:

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

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

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

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


Упражнение 2:
Номер 1
 Класс, являющийся наследником интерфейса:

Ответ:

 (1) обязан задать реализацию всех методов интерфейса 

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

 (3) может задать реализацию части методов интерфейса, отказавшись от реализации оставшихся методов интерфейса 


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

Ответ:

 (1) у интерфейса нет конструкторов класса 

 (2) нельзя объявлять объекты интерфейсного класса 

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

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


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

Ответ:

 (1) класс может иметь несколько интерфейсов в качестве родителей 

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

 (3) интерфейс не может иметь в качестве родителя другой интерфейс 

 (4) класс может иметь несколько интерфейсов в качестве потомков  


Упражнение 3:
Номер 1
 Если у класса несколько интерфейсов выступают в качестве родителя, то все родительские интерфейсы 

Ответ:

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

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

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


Номер 2
 В интерфейсе методы объявляются без указания модификатора доступа. Класс, являющийся наследником интерфейса, эти методы:

Ответ:

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

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

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


Номер 3
 Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как открытый метод класса. В этом случае:

Ответ:

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

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

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


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

Ответ:

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

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

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


Номер 2
 Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:

Ответ:

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

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

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


Номер 3
 Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:

Ответ:

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

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

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


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

Ответ:

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

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

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

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


Номер 2
 Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:

Ответ:

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

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

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


Номер 3
 Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:

Ответ:

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

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

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


Упражнение 6:
Номер 1
 При множественном наследовании интерфейсов может возникнуть проблема коллизии имен, когда два или более интерфейса имеют методы с одинаковыми именами и сигнатурой. Эта проблема:

Ответ:

 (1) является неразрешимой в языке C#, что заставляет отказываться от множественного наследования 

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

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


Номер 2
 

Пусть задан интерфейс

interface IName { string Name { get; set; } }

Какие высказывания являются истинными:


Ответ:

 (1) это объявление интерфейса синтаксически не корректно 

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

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

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


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

Ответ:

 (1) не может возникать 

 (2) может возникать и приводит к ошибке, обнаруживаемой на этапе компиляции 

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




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