Объектное программирование в классах на C# 3.0 - ответы
Исключительной ситуацией называется ситуация, возникающая в ходе выполнения программы, когда выполнение программы приостанавливается, поскольку нормальное продолжение выполнения не представляется возможным. Укажите, какие высказывания верны по отношению к исключительным ситуациям:
При множественном наследовании интерфейсов может возникнуть проблема коллизии имен, когда два или более интерфейса имеют методы с одинаковыми именами и сигнатурой. Эта проблема:
Укажите утверждения, справедливые для взаимных корректных преобразований текстов структур и классов:
Перечисление - это частный случай класса. Укажите те компоненты, которые могут быть заданы в теле этого класса:
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
Класс поставщик может закрывать поля и методы, делая их недоступными для своих клиентов. Скрытие информации
Пусть дано описание перечисления, заданного шкалой
[Flags] public enum Profession { плотник = 1, столяр = 2, водитель = 4, учитель = 8, врач = 16 }
В результате выполнения фрагмента кода
Profession worker = Profession.плотник; worker = worker | Profession.столяр | (Profession.врач | Profession.учитель);Console.WriteLine(worker.ToString());
будет напечатано:
В языке C# допустимо применение анонимных методов. Укажите высказывания, истинные для анонимных методов:
Пусть дано описание класса и структуры с одинаковым набором полей
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;
Отметьте операторы, не приводящие к ошибкам на этапе компиляции или выполнения:
Пусть в классе Town объявлено событие с именем festival
public event Festival festival;
В этом объявлении Festival - это класс делегат, поэтому истинными являются следующие высказывания:
Пусть дано описание класса и структуры с одинаковым набором полей
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;
Отметьте операторы, не приводящие к ошибкам на этапе компиляции или выполнения:
Пусть дано описание перечисления
public enum Profession { плотник, столяр, водитель, учитель, врач }
В результате выполнения фрагмента кода
Profession worker = Profession.плотник; worker = worker | Profession.столяр | (Profession.врач | Profession.учитель);Console.WriteLine(worker.ToString());
будет напечатано:
Понятие "интерфейс" широко используется при программировании на языке C#. Укажите контекст, в котором используется ключевое слово языка "interface":
В интерфейсе методы объявляются без указания модификатора доступа. Класс, являющийся наследником интерфейса, эти методы:
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как открытый метод класса. В этом случае:
Укажите высказывания, истинные для понятия "обертывания" в объектно-ориентированном программировании:
При множественном наследовании классов возможно возникновение проблемы "наследования от общего предка", когда два или более родительских класса имеют общего предка, от которого все они наследуют один и тот же метод. Для множественного наследования интерфейсов эта ситуация:
Укажите высказывания, истинные для конструкторов делегата - класса, задаваемого ключевым словом delegate:
Делегаты широко используются при задании функций высшего порядка. Укажите, какие определения функции высшего порядка являются корректными:
В языке C# допустимо применение анонимных методов. При задании анонимного метода можно использовать механизм лямбда выражений. Укажите синтаксическую формулу, корректно задающую анонимный метод:
При построении программной системы часто используется прием построения системы методом раскрутки. Раскрутка применима и при построении ОО-систем, когда вначале строятся классы внутреннего слоя, а затем надстраивается внешний слой, классы которого могут быть клиентами и наследниками классов внутреннего слоя, и, следовательно, могут свободно получать доступ к сервисам внутреннего слоя. Укажите, какие утверждения справедливы при таком способе построения программной системы:
Пусть в классе Town объявлено событие с именем festivalpublic event Festival festival; Чтобы это объявление было корректным, Festival должно означать:
Наследование и универсальность являются двумя основными механизмами, обеспечивающими мощность объектной технологии разработки. Возможно ли объединение этих механизмов? Отметьте истинные высказывания:
Задание атрибута можно рассматривать как вызов конструктора атрибутного класса и создание соответствующего объекта, связанного с сущностью, для которой атрибут задается. Укажите, какие синтаксические формы допустимы для задания атрибута, в атрибутном классе которого нет позиционных полей:
Хороший стиль разработки проектов предполагает, что документирование проекта сопровождает процесс разработки. Укажите, какие высказывания верны для процесса документирования в языке C# :
Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является повторное использование компонентов. Какие высказывания справедливы по отношению к повторному использованию:
Пусть P(x,z) - метод P с входными аргументами x и выходными z , и пусть P(x,z) корректен (полностью, или тотально) по отношению к предусловию Pre(x) и постусловию Post(x,z) . Какие высказывания истинны по отношению к тотально корректному методу P :
Для доказательства корректности цикла, как правило, используется понятие инварианта цикла. Какие утверждения являются справедливыми для этого понятия:
Оператор throw позволяет программно вызвать исключительную ситуацию, тип которой задается оператором throw . Какие высказывания, связанные с этим оператором, являются справедливыми:
Пусть дано описание перечисления, заданного шкалой
[Flags] public enum Profession { плотник = 1, столяр = 2, водитель = 4, учитель = 8, врач = 16 }
В результате выполнения фрагмента кода
Profession worker = new Profession(); worker = worker | Profession.столяр | (Profession.учитель & Profession.водитель); Console.WriteLine(worker.ToString());
будет напечатано:
В языке C# делегатом называют частный случай класса - класс, задаваемый ключевым словом delegate. Укажите высказывания, истинные для делегата:
Объект, зажегший событие, передает информацию группе обработчиков события через входные аргументы метода. В группе обработчиков могут возникать конфликты из-за повреждения одним из членов группы информации, требуемой всем обработчикам. Входная информация, содержащаяся во входных аргументах события:
Пусть дано описание класса и структуры с одинаковым набором полей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?
Объект, зажегший событие, получает информацию от группы обработчиков события через выходные аргументы метода. Какое из следующих высказываний справедливо:
Рассмотрим цикл типа While - (while(B) S;) , где B - предикат, задающий условие цикла, а S - тело цикла. Только некоторые инварианты цикла, называемые подходящими инвариантами цикла, могут использоваться для доказательства корректности цикла. Какие утверждения являются истинными по отношению к подходящему инварианту Inv :
Рассмотрим атрибут, принадлежащий встроенному классу FlagsAttribute . Укажите, какие утверждения справедливы по отношению к этому атрибуту:
Пусть C - некоторый класс, а S - структура с тем же набором полей. Пусть cx , cy - объекты класса C , а sx , sy - объекты структуры S . Отметьте истинные высказывания:
Пусть P(x,z) - метод P с входными аргументами x и выходными z , и пусть P(x,z) корректен (частично, или условно) по отношению к предусловию Pre(x) и постусловию Post(x,z) . Какие высказывания истинны в этом случае по отношению к условно корректному методу P :
Исключительной ситуацией называется ситуация, возникающая в ходе выполнения программы, когда выполнение программы приостанавливается, поскольку нормальное продолжение выполнения не представляется возможным. Укажите, два наиболее вероятных фактора, чаще других приводящих к появлению исключительных ситуаций:
Перечисление из n элементов задано шкалой и определяет n бинарных свойств. Пусть x - это число, задающее значение объекта перечисления. Укажите высказывания, истинные для числа x:
Пусть дано описание перечисления, заданного шкалой
[Flags] public enum Scale_Profession { плотник = 1, столяр = 2, водитель = 4, учитель = 8, врач = 16 }
В результате выполнения фрагмента кода
Scale_Profession worker = Scale_Profession.плотник; worker = worker | Scale_Profession.столяр | (Scale_Profession.врач & Scale_Profession.учитель);Console.WriteLine(worker.ToString());
будет напечатано:
Пусть потомок создает метод с именем, совпадающим с именем метода родителя. Отметьте высказывания, истинные в этой ситуации:
В языке C# для каждого вызова x1.M(arg1, arg2, … argN) связывание сущности x1 с методом М осуществляется:
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
Пусть задан интерфейс
interface IName { string Name { get; set; } }
Какие высказывания являются истинными:
Пусть дано объявление делегата
public delegate double DToD(double x);
Укажите корректные объявления экземпляров делегата:
Делегаты широко используются при задании функций обратного вызова (callback функций). Укажите, какие утверждения относительно функций обратного вызова являются корректными:
В языке C# допустимо применение анонимных методов. При задании анонимного метода можно использовать механизм делегатов. Укажите синтаксическую формулу, корректно задающую анонимный метод:
Объявление сущностей в языке C# начинается с возможного задания атрибутов сущности. Укажите, какие высказывания справедливы для задания атрибутов:
Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является использование механизма универсальных классов. Какие высказывания справедливы по отношению к универсализации классов:
Пусть P(x,z) - метод P с входными аргументами x и выходными z , и пусть P(x,z) корректен (полностью, или тотально) по отношению к предусловию Pre(x) и постусловию Post(x,z) . Какие высказывания истинны по отношению к тотально корректному методу P :
Согласно первому закону в сложных программах могут возникать ситуации, когда нарушаются спецификации, и программа перестает корректно работать, что приводит к появлению исключительных ситуаций. Исключительные ситуации могут возникать и в корректной программе из-за действий пользователя и других внешних причин, не зависящих от программы. Для поддержания устойчивой работы программной системы в таких ситуациях в языке C# предусмотрен механизм обработки исключительных ситуаций, основанный на try - catch - finally блоках. Укажите, какие утверждения справедливы для охраняемых try -блоков:
Согласно первому закону в сложных программах могут возникать ситуации, когда нарушаются спецификации, и программа перестает корректно работать, что приводит к появлению исключительных ситуаций. Но исключительные ситуации могут возникать и в корректной программе из-за действий пользователя и других внешних причин, не зависящих от программы. Для поддержания устойчивой работы программной системы в таких ситуациях в языке C# предусмотрен механизм обработки исключительных ситуаций, основанный на try - catch - finally блоках. Укажите, какие утверждения справедливы для catch - finally блоков:
Моделируя классы " Прямоугольник" и " Квадрат" описывающие геометрические фигуры, следует полагать, что:
Пусть дано описание перечисления
public enum Profession { плотник, столяр, водитель, учитель, врач }
В результате выполнения фрагмента кода
Profession worker = new Profession(); worker = worker | Profession.столяр | (Profession.учитель & Profession.водитель); Console.WriteLine(worker.ToString());
будет напечатано:
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как открытый метод класса. В этом случае:
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
Пусть дано объявление делегата
public delegate double DToD(double x);
В результате выполнения фрагмента кода
double res = new DToD(Math.Cos)(Math.PI);
произойдет следующее:
Какие высказывания являются истинными по отношению к неограниченной универсальности, когда на параметры универсального класса не накладываются никакие ограничения:
Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является использование механизма наследования. Какие высказывания справедливы по отношению к наследованию:
Пусть дано описание перечисления
public enum Profession { плотник, столяр, водитель, учитель, врач }
В результате выполнения фрагмента кода
Profession worker = Profession.плотник; worker = worker | Profession.столяр | (Profession.врач & Profession.учитель);Console.WriteLine(worker.ToString());
будет напечатано:
Какие высказывания являются истинными относительно двух важных механизмов - делегатов и полиморфизма:
Пусть создается класс с событиями, удовлетворяющий общим спецификациям CLS и допускающий повторное использование в проектах на разных языках. Укажите, какие ограничения следует наложить на делегата, задающего событие в этом случае:
Программист написал фрагмент кода, при компиляции которого возникла ошибка
class A1<A1, B> { A1 a1; B b;}
У программиста есть несколько версий причины возникновения ошибки. Укажите, какая из них верна:
Документируемые комментарии в программах на C# могут включать текст в формате XML , содержащий элементы, называемые тегами. Укажите высказывания, истинные для тегов:
Корректность программы и ее тестирование - это тесно связанные понятия. Укажите высказывания, истинные для связи этих понятий:
Пусть дано объявление делегата
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; } }
Укажите корректные объявления экземпляров делегата:
Программист написал фрагмент кода, при компиляции которого возникла ошибка
interface IC<C> { C Method(C arg); } class A2<B> : IC<C> { public C Method(C arg) { return arg; } }
У программиста есть несколько версий причины возникновения ошибки. Укажите, какая из них верна: