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