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

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

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

Ответ:

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

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

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

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


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

Ответ:

 (1) в языке C# класс, объявленный с ключевым словом class, задает ссылочный тип 

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

 (3) память, как для ссылок, так и для самих объектов, отводится в куче 


Номер 3
 Отметьте высказывания, истинные для структур:

Ответ:

 (1) у структур нет конструкторов 

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

 (3) у структуры может быть много конструкторов 

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


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

Ответ:

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

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

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


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

Ответ:

 (1) поля структуры должны быть открытыми (иметь модификатор доступа public

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

 (3) поля структуры могут быть как открытыми, так и закрытыми 


Номер 3
 Отметьте высказывания, истинные для структур:

Ответ:

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

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

 (3) для структуры нельзя указать в качестве родителя класс или структуру 

 (4) структура может быть наследником одного или нескольких интерфейсов 


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

Ответ:

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

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

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


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

Ответ:

 (1) структура должна быть объявлена с модификатором static  

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

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


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

Ответ:

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

 (2) для структуры нельзя задать модификатор static  

 (3) для структуры нельзя задать модификаторы abstract и sealed  

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


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

Ответ:

 (1) [атрибуты][модификаторы]struct имя_структуры[:список_структур] {тело_структуры}  

 (2) [атрибуты][модификаторы]struct имя_структуры[:список_интерфейсов] {тело_структуры}  

 (3) static struct имя_структуры[:список_структур] {тело_структуры}  

 (4) [атрибуты][модификаторы]struct имя_структуры:object {тело_структуры}  


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

Ответ:

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

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

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


Номер 3
 Пусть C  - некоторый класс, а S  - структура с тем же набором полей. Пусть cx , cy  - объекты класса C ,  а sx , sy  - объекты структуры S . Отметьте истинные высказывания:

Ответ:

 (1) операторы присваивания cx = cy; sx = sy; имеют разную семантику и выполняются по-разному 

 (2) операторы присваивания cx = cy; sx = sy; имеют одинаковую семантику и сводятся к копированию значений полей объекта источника и присваивания этих значений полям объекта цели 

 (3) операция сравнения на равенство двух объектов, принадлежащих одной и той же структуре или одному и тому же классу cx == cy; sx == sy; определена как для классов, так и для структур 

 (4) операция сравнения на равенство двух объектов, принадлежащих одной и той же структуре или одному и тому же классу cx == cy; sx == sy; определена только для классов, для структур требуется ее переопределение в самой структуре 


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

Пусть дано описание класса и структуры с одинаковым набором полей

public class One { public string s; public int n; public One(string s; int n) { this.s = s; this.n = n;}} public struct Two { public string s; public int n; public Two(string s; int n) { this.s = s; this.n = n;}}

Пусть в клиентском классе созданы объекты

One cx = new One("Петров", 5), cy = new One("Петров", 5), cz = new One("Миронов", 4); Two sx = new Two("Петров", 5), sy = new Two("Петров", 5), sz = new Two("Миронов", 4); int res = 0;

Отметьте операторы, не приводящие к ошибкам на этапе компиляции или выполнения:


Ответ:

 (1) cx = cz  

 (2) sx = sz  

 (3) cx = sx  

 (4) sx = (Two)cx  

 (5) sx.s = cx.s  


Номер 2
 

Пусть дано описание класса и структуры с одинаковым набором полей

public class One { public string s; public int n; public One(string s, int n) { this.s = s; this.n = n;}} public struct Two { public string s; public int n; public Two(string s, int n) { this.s = s; this.n = n;}}

Пусть в клиентском классе созданы объекты

One cx = new One("Петров", 5), cy = new One("Петров", 5), cz = new One("Миронов", 4); Two sx = new Two("Петров", 5), sy = new Two("Петров", 5), sz = new Two("Миронов", 4); int res = 0;

Отметьте операторы, не приводящие к ошибкам на этапе компиляции или выполнения:


Ответ:

 (1) if (cx == cy) res = 1; 

 (2) if (sx == sy ) res = 2; 

 (3) if (sx == cx) res = 3; 

 (4) if (sx.s == cx.s) res = 4; 


Номер 3
Пусть дано описание класса и структуры с одинаковым набором полей

public class One {
 public string s; public int n;
public One(string s, int n) { this.s = s; this.n = n;}}
public struct Two {
 public string s; public int n;
public Two(string s, int n) { this.s = s; this.n = n;}}

Пусть в клиентском классе созданы объекты

One cx = new One("Петров", 5), cy = new One("Петров", 5), cz = new One("Миронов", 4);
Two sx = new Two("Петров", 5), sy = new Two("Петров", 5), sz = new Two("Миронов", 4);
int res = 0; 

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

if (cx == cy) res = 1;
           else if(sx.Equals(sy)) res = 5;
           cx = cz;           sx = sz;           cz.n = 3; sz.n = 3;
           if (cx.n == 3) res++;
           else if (sx.n == 3) res+=2;

Какое значение получит переменная res?

Ответ:

 (1)

 (2)

 (3)

 (4)

 (5)


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

Ответ:

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

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

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

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

 (5) все арифметические типы языка C# реализованы как структуры 


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

Ответ:

 (1) структуры не могут наследовать интерфейсы 

 (2) структуры могут наследовать интерфейсы 

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

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


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

Ответ:

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

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

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




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