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

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

Правильные ответы выделены зелёным цветом.
Все ответы: Курс посвящен основам объектного программирования. В качестве языка программирования выбран язык C# - его версия 3.0, в качестве среды разработки программных проектов – Visual Studio 2008 Professional Edition и Framework .Net в версии 3.5. Вторая часть курса посвящена созданию программных систем, построенных на классах. Изложение сопровождается большим числом примеров. Курс является учебником и задачником. Задачи сопровождают каждую лекцию курса.
В языке C# делегатом называют частный случай класса - класс, задаваемый ключевым словом delegate. Укажите высказывания, истинные для делегата:
(1) делегат определяет функциональный тип данных
(2) делегат задает реализацию метода (функции), единую для всех экземпляров делегата
(3) каждый метод, сигнатура которого совпадает с сигнатурой делегата, может рассматриваться как экземпляр класса, заданного делегатом
События можно определить в классе, если:
(1) класс является любым из видов классов, разрешенных в языке C# , то есть в классах, объявленных с ключевыми словами: class, struct, interface, delegate, enum
(2) класс является статическим ссылочным классом - классом, объявленным как static class
(3) класс является ссылочным, но не статическим классом - классом, объявленным как class
(4) класс является статическим развернутым классом - классом, объявленным как static struct
(5) класс является развернутым, но не статическим классом - классом, объявленным как struct
Универсальный класс - это класс:
(1) методы которого позволяют решать любые задачи, необходимые клиентам класса
(2) между объектом которого x и объектом y любого другого класса существует взаимное преобразования типа, так что допустимо двустороннее присваивание x = y и y = x
(3) с параметрами, задающими типы полей, методов и других сущностей, определяемых в классе
Укажите высказывания, истинные для атрибутов языка C# :
(1) атрибуты - необязательная часть объявления сущностей языка C#
(2) для некоторых сущностей языка C# задание атрибутов является обязательным
(3) задание атрибутов никак не влияет на выполнение программной системы
(4) разные атрибуты могут быть заданы при объявлении одной сущности
Укажите высказывания, истинные для понятия корректности программы:
(1) корректная программа - это программа, работающая в точном соответствии со своими спецификациями
(2) знание спецификаций программы не обязательно для доказательства корректности программы
(3) существуют программы, корректные по отношению ко всем спецификациям
(4) каждая работающая программа корректна по отношению к некоторой спецификации
Укажите истинные высказывания:
(1) в объектно-ориентированном программировании основной архитектурной единицей является класс
(2) в объектно-ориентированном программировании основной архитектурной единицей является метод класса - процедура или функция
(3) в интересах архитектуры системы все классы должны иметь одинаковые размеры
Укажите высказывания, истинные для развернутого типа:
(1) в языке C# класс, объявленный как структура с ключевым словом struct , задает развернутый тип
(2) каждый из объектов структуры имеет собственную память
(3) несколько объектов развернутого типа могут разделять общую память в стеке
(4) память под объекты структуры отводится в стеке
Перечисление - это частный случай класса. Укажите те компоненты, которые могут быть заданы в теле этого класса:
(1) поля
(2) методы
(3) список возможных значений
(4) события
(5) встроенные классы
Классы А и В находятся в отношении "клиент - поставщик", если:
(1) класс А объявляет себя клиентом класса B
(2) класс B объявляет себя поставщиком класса А
(3) полем класса А является объект класса В
Понятие "интерфейс" широко используется при программировании на языке C#. Укажите контекст, в котором используется ключевое слово языка "interface":
(1) при описании открытой части класса, составляющей интерфейс клиентов класса
(2) при описании частного случая класса, представляющего собой полностью абстрактный класс, все методы которого абстрактны
(3) при описании элементов управления, расположенных на форме Windows проекта, формирующих визуальный интерфейс пользователя
Укажите высказывания, истинные для конструкторов делегата - класса, задаваемого ключевым словом delegate:
(1) у класса делегата нет конструкторов
(2) в классе делегата можно создать сколь угодно много конструкторов, каждый из которых определяет собственный метод
(3) у класса делегата существует только один конструктор - конструктор без аргументов
(4) у класса делегата существует только один конструктор - конструктор с одним аргументом, которому передается метод, отвечающий сигнатуре делегата
Укажите истинные высказывания:
(1) У класса можно определить много событий
(2) клиенты класса определяют, какие события могут быть у класса
(3) каждый экземпляр класса может иметь собственный набор событий
Наследование и универсальность являются двумя основными механизмами, обеспечивающими мощность объектной технологии разработки. Возможно ли объединение этих механизмов? Отметьте истинные высказывания:
(1) класс может быть объявлен как абстрактный класс, но тогда он не может быть универсальным классом
(2) класс может быть объявлен как универсальный класс, но тогда он не может быть абстрактным классом
(3) класс может быть объявлен как абстрактный класс, и одновременно он может быть универсальным классом
Атрибуты и объекты. Какие высказывания являются истинными
(1) атрибуты не являются объектами языка C#
(2) атрибуты являются объектами единственного атрибутного класса Attribute
(3) существует множество атрибутных классов, и каждый атрибут является объектом одного из этих классов
Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является повторное использование компонентов. Какие высказывания справедливы по отношению к повторному использованию:
(1) повторное использование готовых и надежных компонентов уменьшает сложность разработки
(2) повторное использования компонента предполагает наличие спецификации этого компонента
(3) повторное использование компонента возможно лишь при условии, что вся система собирается из готовых компонентов
Какие высказывания являются истинными? Модульное построение программной системы позволяет:
(1) вести параллельную разработку модулей системы
(2) создавать систему большим коллективом разработчиков
(3) не рассматривать связей между модулями
(4) создавать систему из уже готовых стандартных модулей
Укажите истинное высказывание:
(1) поля структуры должны быть объявлены без инициализации
(2) поля структуры должны быть инициализированы в момент объявления
(3) поля структуры могут быть инициализированы
В памяти компьютера значение объекта перечисления представлено:
(1) вещественным числом
(2) целым числом
(3) константой типа string
(4) идентификатором
Укажите высказывания истинные для отношения "родитель - наследник":
(1) родитель знает всех своих наследников
(2) наследник знает всех своих родителей
(3) класс может быть сам себе наследник
(4) класс может быть сам себе родитель
Класс, являющийся наследником интерфейса:
(1) обязан задать реализацию всех методов интерфейса
(2) может задать реализацию части методов интерфейса, оставив остальные методы для реализации своим потомкам
(3) может задать реализацию части методов интерфейса, отказавшись от реализации оставшихся методов интерфейса

Пусть дано объявление делегата

public delegate double DToD(double x);

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

double res = new DToD(Math.Cos)(Math.PI);

произойдет следующее:

(1) возникнет ошибка на этапе компиляции
(2) возникнет ошибка на этапе выполнения
(3) ошибки не будет и переменная res получит значение 1
(4) ошибки не будет и переменная res получит значение -1
(5) ошибки не будет и переменная res получит значение 0
Пусть в классе Town объявлено событие с именем festival public event Festival festival; Чтобы это объявление было корректным, Festival должно означать:
(1) имя класса, объявленного с ключевым словом class
(2) имя класса, объявленного с ключевым словом struct
(3) имя класса, объявленного с ключевым словом delegate
Класс, являющийся наследником универсального класса с параметрами:
(1) должен быть универсальным классом и включать в число параметров все параметры родительского класса
(2) может не иметь параметров
(3) может быть универсальным классом, но включать только часть параметров родителя
Укажите, для каких сущностей и элементов программы могут быть заданы атрибуты:
(1) для аргументов метода
(2) для значения, возвращаемого методом класса
(3) для программных блоков, заключенных в фигурные скобки
(4) для условий в операторе if
Пусть P(x,z) - метод P с входными аргументами x и выходными z , и пусть P(x,z) корректен (частично, или условно) по отношению к предусловию Pre(x) и постусловию Post(x,z) . Какие высказывания истинны в этом случае по отношению к условно корректному методу P :
(1) на входе x , удовлетворяющем предусловию, условно корректный метод P может, как завершить свою работу, так и зациклиться - оба варианта не противоречат условной корректности метода
(2) если на входе x , удовлетворяющем предусловию, условно корректный метод P завершит свою работу, то на выходе гарантируется выполнение постусловия
(3) если на входе x , удовлетворяющем предусловию, условно корректный метод P завершит свою работу, то выполнение постусловия на выходе не гарантируется
(4) если на входе x , удовлетворяющем предусловию, метод P не завершит свою работу (зациклится), то это означает, что метод не является условно корректным
Укажите корректную синтаксическую формулу, задающую описание класса:
(1) [атрибуты][модификаторы]class имя_класса(список_родителей) {тело_класса}
(2) [атрибуты][модификаторы]class имя_класса[:список_родителей] {тело_класса}
(3) class имя_класса:{тело_класса}
(4) [атрибуты][модификаторы] имя_класса[:список_родителей] {тело_класса}
Укажите высказывания, истинные для конструкторов структуры:
(1) в конструкторе структуры нельзя присваивать значения ее полям
(2) в конструкторе структуры нельзя вызывать методы структуры
(3) нельзя определить собственный конструктор без аргументов
При задании перечисления:
(1) можно указать базовый класс, на который проецируются значения перечисления
(2) можно указать начало отрезка базового класса, на который плотно проецируются значения перечисления
(3) для каждого значения перечисления можно указать число базового класса, на которое будет проецироваться это значение
(4) для каждого значения перечисления можно указать свой отрезок базового класса, на числа которого некоторым случайным образом будет проецироваться это значение
Отношение "клиент - поставщик" является транзитивным отношением. Транзитивность означает:
(1) из истинности утверждений "В клиент А" и "С клиент Е" следует истинность утверждений "С клиент А" и " В клиент Е"
(2) из истинности утверждений " В клиент А" и " С клиент В" следует истинность утверждения " С клиент А"
(3) из истинности утверждений " В клиент А" и "С клиент В" следует истинность утверждения " А поставщик С"
Если у класса несколько интерфейсов выступают в качестве родителя, то все родительские интерфейсы
(1) не могут иметь методы с одинаковыми именами во избежание коллизии имен
(2) могут иметь методы с одинаковыми именами, но сигнатуры этих методов должны отличаться
(3) могут иметь методы с одинаковыми именами и сигнатурами
Делегаты широко используются при задании функций высшего порядка. Укажите, какие определения функции высшего порядка являются корректными:
(1) функцией высшего порядка называется функция, в теле которой вызывается другая функция
(2) функцией высшего порядка называется функция, в теле которой есть вызов самой функции
(3) функцией высшего порядка называется функция, у которой тип одного или нескольких формальных аргументов задается делегатами
Отметьте истинные высказывания:
(1) классом sender - классом отправителем сообщения называется класс с событиями, объекты которого могут "зажигать" события в процессе работы их методов;
(2) класс sender содержит обработчики всех событий, которые зажигаются объектами класса
(3) классом reciever - классом получателем сообщения называется класс, у которого есть метод, удовлетворяющий сигнатуре события, присоединившийся к списку вызовов события и играющий роль обработчика события
(4) обработчики одного события могут быть методами разных классов
Какие высказывания являются истинными по отношению к неограниченной универсальности, когда на параметры универсального класса не накладываются никакие ограничения:
(1) в качестве фактического параметра можно использовать любой тип, разрешенный в C#
(2) над объектами, тип которых задан параметром типа, допустимы любые операции, разрешенные в языке C#
(3) над объектами, тип которых задан параметром типа, допустимы только операции, разрешенные для объектов типа object языка C# - присваивание и сравнение на равенство и неравенство;
Укажите высказывания, истинные для класса Attribute :
(1) является абстрактным классом
(2) является потомком интерфейса _ Attribute и следовательно наследует его методы
(3) для каждой сущности языка C# автоматически создается объект класса Attribute , описывающий свойства сущности
(4) объявление класса Attribute содержит атрибуты.
Для доказательства корректности цикла, как правило, используется понятие инварианта цикла. Какие утверждения являются справедливыми для этого понятия:
(1) инвариантом цикла называется предикат, который принимает значение true после выполнения тела цикла
(2) инвариантом цикла называется предикат, из истинности которого перед началом выполнения тела цикла, следует его истинность после выполнения тела цикла
(3) инвариантом цикла называется предикат, который принимает значение true после завершения цикла
(4) инвариантом цикла называется предикат, из истинности которого перед началом выполнения цикла, следует его истинность после завершения цикла
Если модификатор доступа для поля класса не задан, то значением по умолчанию является модификатор:
(1) private
(2) public
(3) protected
(4) internal
Укажите истинную синтаксическую формулу, задающую объявление структуры:
(1) [атрибуты][модификаторы]struct имя_структуры[:список_структур] {тело_структуры}
(2) [атрибуты][модификаторы]struct имя_структуры[:список_интерфейсов] {тело_структуры}
(3) static struct имя_структуры[:список_структур] {тело_структуры}
(4) [атрибуты][модификаторы]struct имя_структуры:object {тело_структуры}
Укажите высказывания, истинные для конструкторов перечислений:
(1) у перечислений только один конструктор
(2) у перечислений нет конструкторов
(3) у перечислений может быть много конструкторов
(4) единственный конструктор перечисления нельзя переопределить
Моделируя классы " Круг" и " Квадрат" описывающие геометрические фигуры, следует полагать, что:
(1) эти классы не связаны никаким отношением
(2) класс " Круг" является родителем класса " Квадрат"
(3) класс " Круг" является клиентом класса " Квадрат"
(4) оба класса являются потомками общего родителя - класса " Геометрическая_Фигура"
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как открытый метод класса. В этом случае:
(1) клиент класса может создать объект класса и, используя его как цель, непосредственно вызывать открытый метод интерфейса
(2) клиент класса может создать объект класса, объявить объект интерфейса, связать его с объектом класса, и вызывать метод интерфейса, используя в качестве цели объект интерфейса
(3) клиент класса не может вызвать метод интерфейса, если только класс не создал метод, обертывающий метод интерфейса
В языке C# допустимо применение анонимных методов. Укажите высказывания, истинные для анонимных методов:
(1) анонимные методы - это методы, заданные своей реализацией, но не имеющие имени
(2) анонимные методы можно рассматривать как константы функционального типа, поскольку они, как и обычные константы, заданы своими значениями
(3) анонимные методы - это методы, реализация которых неизвестна
Укажите операции и методы, допустимые при работе с обработчиками событий:
(1) операция "+ ", присоединяющая обработчик к списку вызовов события
(2) операция "- ", удаляющая обработчик из списка вызовов события
(3) операция присваивания " = ", присоединяющая обработчик к списку вызовов события, предварительно очищая список вызовов, если он был не пуст
(4) метод Combine , являющийся аналогом операции "+ ".
При задании ограничений на параметры универсального класса:
(1) для каждого параметра, на который накладывается ограничение, строится свое предложение where
(2) в одном предложении where можно наложить ограничения на все параметры универсального класса
(3) в одном предложении where на один параметр универсального класса можно наложить разные виды ограничений
Укажите истинные высказывания:
(1) в момент объявления сущности можно задать атрибут, связав тем самым сущность с атрибутом
(2) любой атрибут может быть связан с любой сущностью
(3) атрибут может быть связан с сущностью, если только сущность соответствует цели атрибута, устанавливаемой параметром ValidOn , возможные значения которого задаются перечислением AttributeTargets .
Какие утверждения являются истинными по отношению к корректности класса:
(1) для корректности класса необходимо, чтобы все его методы были корректными
(2) для корректности класса достаточно, чтобы все его методы были корректными
(3) для корректности класса необходимо, чтобы все его методы гарантировали сохранность инвариантов класса по завершении своей работы
Какие высказывания являются истинными?
(1) Методы класса могут быть вызваны только в методах самого класса
(2) открытые методы задают интерфейс класса (сервисы, которые класс предоставляет своим клиентам)
(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;

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

(1) cx = cz;
(2) sx = sz;
(3) cx = sx;
(4) sx = (Two)cx;
(5) sx.s = cx.s;

Пусть дано описание перечисления

public enum Profession { плотник, столяр, водитель, учитель, врач }

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

Profession worker = new Profession(); worker = worker | Profession.столяр | (Profession.учитель & Profession.водитель); Console.WriteLine(worker.ToString());

будет напечатано:

(1) водитель
(2) врач
(3) учитель
(4) столяр
Класс А является клиентом класса В, если:
(1) в одном из методов класса А "на лету" создается объект класса В
(2) в одном из методов класса А объявляется локальная переменная - объект класса В
(3) класс А не создает объектов класса В, но использует статический объект класса В и вызывает статические свойства и статические методы класса В
Укажите высказывания, истинные для понятия "обертывания" в объектно-ориентированном программировании:
(1) обертывающим методом называют метод с дополнительными фигурными скобками
(2) под обертыванием понимают создание метода класса, содержащего вызов недоступного клиентам метода
(3) обертывание библиотеки процедур, написанной на языке С или другом не объектном языке программирования, позволяет обернуть ее в одежды класса, а каждую процедуру библиотеки превратить в метод класса
(4) целью обертывания метода может быть изменение его пользовательского интерфейса, создавая новый интерфейс, более привлекательный для клиентов класса
При построении программной системы часто используется прием построения системы методом раскрутки. Раскрутка применима и при построении ОО-систем, когда вначале строятся классы внутреннего слоя, а затем надстраивается внешний слой, классы которого могут быть клиентами и наследниками классов внутреннего слоя, и, следовательно, могут свободно получать доступ к сервисам внутреннего слоя. Укажите, какие утверждения справедливы при таком способе построения программной системы:
(1) построить систему методом раскрутки невозможно без использования механизма делегатов
(2) механизм делегатов не может помочь при построении системы таким способом
(3) механизм делегатов применим для описания контракта, когда у метода внутреннего слоя возникает необходимость вызова методов еще не созданного внешнего слоя
Объект, зажегший событие, получает информацию от группы обработчиков события через выходные аргументы метода. Какое из следующих высказываний справедливо:
(1) выходные аргументы принципиально не могут быть защищены от записи в обработчиках событий, и потому объект может получить результаты работы только первого обработчика события из списка вызовов методов события
(2) выходные аргументы принципиально не могут быть защищены от записи в обработчиках событий, и потому объект может получить результаты работы только последнего обработчика события из списка вызовов методов события
(3) выходные аргументы принципиально не могут быть защищены от записи в обработчиках событий, но, используя метод GetInvocationList , обработчики события из списка вызовов можно вызывать поочередно, что позволяет справиться с проблемой защиты выходных аргументов и получать результаты работы каждого из обработчиков события

Программист написал фрагмент кода, при компиляции которого возникла ошибка

class A1<A1, B> { A1 a1; B b;}

У программиста есть несколько версий причины возникновения ошибки. Укажите, какая из них верна:

(1) я написал правильный код, это ошибка в работе компилятора
(2) ошибка состоит в том, что для класса А1 заданы два родовых параметра, а разрешается только один
(3) ошибка состоит в том, что в классе А1 заданы поля, тип которых определяется параметрами класса, что недопустимо
(4) ошибка состоит в том, что для класса А1 указан параметр, имя которого совпадает с именем класса, что недопустимо
Пусть M это метод класса. Укажите утверждения, истинные для метода M :
(1) метод называется условно компилируемым, если для метода M задан атрибут условной компиляции Conditional ;
(2) если для метода M задан атрибут условной компиляции Conditional , то метод не будет компилироваться;
(3) если для метода M задан атрибут условной компиляции Conditional , то метод будет компилироваться, когда выполняется условие компиляции - совпадение параметра атрибута Conditional и константы компиляции, заданной в параметрах проекта;
Частью доказательного стиля программирования, применяемого в программах на языке C# , является вызов метода Assert в контрольных точках программы. Какие утверждения справедливы для метода Assert :
(1) метод Assert является статическим методом двух классов - Debug и Trace
(2) вызов метода Assert является причиной появления исключительной ситуации
(3) если утверждение при вызове методе Assert получает значение true , то программа продолжает выполняться, и вызов метода в этой ситуации не оказывает влияния на естественный ход выполнения программы
(4) если утверждение при вызове методе Assert получает значение false , то выполнение программы приостанавливается, в этом случае появляется окно с сообщением, в котором можно указать, что в контрольной точке нарушается условие, требуемое для доказательства корректности работы программы
Укажите высказывания, истинные для конструкторов класса:
(1) у класса может быть только один конструктор
(2) для конструктора не задается возвращаемое методом значение
(3) когда для создания объекта вызывается конструктор, то он в первую очередь вызывает конструктор своего непосредственного родителя, так транзитивно продолжается до тех пор, пока не будет вызван конструктор класса object
Укажите истинные высказывания:
(1) структуры (классы, объявленные как struct ) относятся к развернутым типам
(2) классы (классы, объявленные как class ) относятся к ссылочным типам
(3) в языке C# есть модификатор expand , позволяющий отнести класс к развернутому типу
(4) объектам развернутого типа память отводится в куче
(5) все арифметические типы языка C# реализованы как структуры
Укажите высказывания, истинные для перечислений из n элементов, заданных шкалой:
(1) содержательно объект перечисления задает набор из n бинарных свойств реальных объектов
(2) шкалы позволяют эффективно хранить информацию о свойствах реальных объектов
(3) шкалы позволяют эффективно находить среди множества объектов те объекты, которые обладают заданным набором свойств
(4) любое перечисление следует задавать как шкалу
Укажите высказывания, истинные для отношения наследования:
(1) наследование позволяет придать новую функциональность классу, оставляя без изменения хорошо работающий родительский класс
(2) при создании наследников, родительский класс теряет часть своих свойств и методов
(3) если у класса несколько наследников, то каждый из них наследует часть свойств родительского класса
(4) класс потомок наследует все возможности родительского класса - все поля и все методы, открытую и закрытую часть класса, статическую и динамическую части класса. Единственным исключением являются конструкторы класса, которые потомок не наследует
При множественном наследовании интерфейсов может возникнуть проблема коллизии имен, когда два или более интерфейса имеют методы с одинаковыми именами и сигнатурой. Эта проблема:
(1) является неразрешимой в языке C#, что заставляет отказываться от множественного наследования
(2) может быть решена механизмом склеивания, когда класс, наследующий интерфейсы, реализует все методы с совпадающими именами и сигнатурами, как единственный открытый метод класса
(3) может быть решена механизмом переименования, когда класс, наследующий интерфейсы, реализует метод каждого интерфейса, как закрытый метод с уникальным составным именем, включающим имя интерфейса
Укажите высказывания, истинные для делегатов:
(1) делегаты в языке C# реализуют более мощный тип данных в сравнении с обычным функциональным типом данных, поскольку с каждым экземпляром делегата может связываться не один метод, а список методов, последовательно выполняемых при вызове экземпляра делегата
(2) в список методов, связанных с экземпляром делегата, можно добавлять новые методы
(3) если в список методов, связанных с экземпляром делегата, добавляется метод, уже существующий в списке, то повторно он добавляться не будет
Обработчик события:
(1) всегда принадлежит классу, зажигающему событие
(2) никогда не принадлежит классу, зажигающему событие
(3) может принадлежать классу, зажигающему событие
(4) принадлежит только одному классу, слушающему событие
(5) может принадлежать многим классам, слушающим события
Комментарии языка C# могут быть:
(1) обычными строчными
(2) документируемыми строчными
(3) обычными блочными (многострочными)
(4) документируемыми блочными
(5) документируемый блочный комментарий может появляться в любом месте программы
Оператор throw позволяет программно вызвать исключительную ситуацию, тип которой задается оператором throw . Какие высказывания, связанные с этим оператором, являются справедливыми:
(1) исключения при работе программы могут появляться только при выполнении оператора throw
(2) профессиональный программист никогда не включает в свой код оператор throw, приводящий к появлению исключительной ситуации
(3) оператор throw является полезным механизмом обеспечения устойчивости программных систем и его появление в программном коде свидетельствует о профессиональном стиле разработки программной системы
Укажите истинные высказывания:
(1) статический класс - это класс, объявленный с модификатором static, у которого все поля и методы статические
(2) статический класс - это класс, у которого хотя бы одно поле или метод является статическим
(3) если класс статический, то он играет только одну роль модуля
(4) разрешается создавать сколь угодно много объектов статического класса

Пусть дано описание перечисления, заданного шкалой

[Flags] public enum Profession { плотник = 1, столяр = 2, водитель = 4, учитель = 8, врач = 16 }

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

Profession worker = new Profession(); worker = worker | Profession.столяр | (Profession.учитель & Profession.водитель); Console.WriteLine(worker.ToString());

будет напечатано:

(1) водитель
(2) врач
(3) учитель
(4) столяр
Отметьте истинные высказывания:
(1) потомок наследует все конструкторы родителя
(2) если потомок не определяет собственных конструкторов класса, то автоматически в класс добавляется конструктор по умолчанию - конструктор без аргументов
(3) конструктор по умолчанию - конструктор без аргументов автоматически добавляется в класс потомка, независимо от того, определяет ли потомок собственные конструкторы класса
В языке C# контроль типов осуществляется:
(1) статически, на этапе компиляции
(2) динамически, на этапе выполнения
(3) может осуществляться как статически, так и динамически, в зависимости от значения модификатора static
Укажите синтаксически корректную формулу, задающую описание делегата:
(1) [<модификатор доступа>] delegate <тип результата > <имя делегата> (<список формальных аргументов>)
(2) [<модификатор доступа>] delegate <тип результата > <имя делегата> (<список формальных аргументов>) { }
(3) [<модификатор доступа>] delegate <тип результата > <имя делегата> (<список формальных аргументов>) { <тело метода>}
(4) [<модификатор доступа>] Delegate <тип результата > <имя делегата> (<список формальных аргументов>)
Укажите высказывания, характеризующие понятие события:
(1) содержательно, событием является некоторое специальное состояние, в котором может оказаться объект класса
(2) события позволяют специфицировать поведение объектов
(3) два объекта одного класса, у которых возникает одно и то же событие, всегда одинаковым образом реагируют на это событие
Параметры, задающие тип, может иметь:
(1) класс
(2) метод класса
(3) поле класса
Укажите высказывания, истинные для атрибутов языка C# :
(1) атрибуты играют роль комментариев, и их задание никак не влияет на выполнение программной системы
(2) задание атрибутов может повлиять на выполнение программной системы
(3) задание атрибутов может не влиять на выполнение программной системы
Корректность программы и ее тестирование - это тесно связанные понятия. Укажите высказывания, истинные для связи этих понятий:
(1) тестирование - это процесс, направленный на достижение корректности программы
(2) можно построить универсальную систему тестов, подходящую для любой программы
(3) только зная спецификации программы, можно построить подходящую систему тестов
(4) тестирование позволяет доказать, что программа не является корректной
(5) тестирование позволяет доказать корректность программы
Укажите истинные высказывания:
(1) в языке C# каждый класс играет роль модуля - архитектурной единицы построения системы
(2) модуль может не представлять собой содержательную единицу, его размер и содержание определяется архитектурными соображениями, а не семантическими
(3) не всякий класс в языке C# играет роль модуля
Укажите высказывания, истинные для ссылочного типа:
(1) в языке C# класс, объявленный с ключевым словом class, задает ссылочный тип
(2) несколько объектов ссылочного типа могут разделять общую память в куче
(3) память, как для ссылок, так и для самих объектов, отводится в куче
Укажите корректную синтаксическую формулу, задающую объявления перечисления
(1) [атрибуты][модификаторы]enum имя_перечисления {список_ полей}
(2) [атрибуты][модификаторы]enum имя_перечисления [:список_родительских_классов] {список_возможных_значений}
(3) [атрибуты][модификаторы]enum имя_перечисления[:базовый класс] {список_возможных_значений}
(4) [атрибуты][модификаторы]enum имя_перечисления[:базовый класс] {список_методов}
Классы А и В находятся в отношении "клиент - поставщик", если:
(1) полем класса А является объект класса В
(2) хотя бы в одном из методов класса А происходит вызов свойств или методов класса В
(3) класс А подписывается на поставку сервисов класса В
Укажите основную цель введения интерфейсов в язык C#:
(1) устранить недостатки абстрактных классов
(2) улучшить работу клиентов класса, позволяя им познакомиться с закрытой частью класса
(3) справиться с проблемой множественного наследования, обеспечивая возможность классу иметь несколько родителей - один полноценный класс, а остальные родители являются интерфейсами

Пусть дано объявление делегата

public delegate double DToD(double x);

Укажите корректные объявления экземпляров делегата:

(1) DToD del2 = Math.Cos
(2) DToD del = new DToD()
(3) DToD del1 = new DToD(Math.Sin)
Укажите истинные высказывания:
(1) события связываются с объектом класса и определяются в момент создания объекта класса
(2) у всех объектов класса одинаковый набор событий
(3) у всех объектов класса одинаковый набор методов, обрабатывающих событие
Укажите высказывания истинные для параметров универсального класса:
(1) когда формальный параметр T заменяется фактическим типом TFact , то там, где разрешено появляться объектам типа TFact , разрешены и объекты, принадлежащие классам-потомкам TFact
(2) когда формальный параметр T заменяется фактическим типом TFact , то там, где разрешено появляться объектам типа TFact , не разрешены объекты, принадлежащие классам-потомкам TFact
(3) на тип, задаваемый параметром T , можно наложить ограничение наследования, требующее чтобы тип (класс) T был наследником некоторого класса и/или ряда интерфейсов
Атрибуты и объекты. Какие высказывания являются истинными:
(1) в библиотеке FCL есть множество атрибутных классов, все они являются потомками класса Attribute, определяющего общие свойства и поведение объектов, называемых атрибутами
(2) все атрибуты, появляющиеся в программах на языке C# , принадлежат встроенным атрибутным классам из библиотеки FCL
(3) имена атрибутных классов должны заканчиваться суффиксом Attribute
(4) программист может определять собственные атрибутные классы, но этот класс должен быть потомком класса Attribute и его имя должно заканчиваться суффиксом Attribute .
Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является использование механизма наследования. Какие высказывания справедливы по отношению к наследованию:
(1) наследование позволяет уменьшить общий объем программного кода системы, поскольку классы потомки наследуют код родительского класса без его дублирования
(2) наследование позволяет не задавать спецификации для классов потомков
(3) динамическое связывание и полиморфизм позволяют автоматически включать объекты классов-потомков в уже существующие схемы работы
Какие высказывания являются истинными?
(1) в хорошо спроектированной ОО-системе каждый модуль системы имеет вполне определенную смысловую нагрузку
(2) в определенных условиях класс имеет возможность играть только одну роль - роль модуля
(3) в определенных условиях класс имеет возможность играть только одну роль - роль типа данных
Укажите истинное высказывание:
(1) поля структуры должны быть открытыми (иметь модификатор доступа public )
(2) поля структуры должны быть закрытыми (иметь модификатор доступа private)
(3) поля структуры могут быть как открытыми, так и закрытыми
Базовым классом для перечислений может быть класс:
(1) string
(2) char
(3) double
(4) любой целочисленный тип
Отношение "родитель - наследник" является транзитивным отношением. Транзитивность означает:
(1) из истинности утверждений "В наследник А" и "С наследник Е" следует истинность утверждений "С наследник А" и "В наследник Е"
(2) из истинности утверждений "В наследник А" и "С наследник В" следует истинность утверждения "С наследник А"
(3) из истинности утверждений "В наследник А" и " С наследник В" следует истинность утверждения " А родитель С"
Укажите высказывания, истинные для интерфейса - класса, заданного с ключевым словом interface:
(1) у интерфейса нет конструкторов класса
(2) нельзя объявлять объекты интерфейсного класса
(3) нельзя создавать объекты интерфейсного класса с помощью конструктора класса
(4) объект интерфейсного класса может быть задан ссылкой на объект класса потомка, наследующего интерфейс
Укажите объявления делегата, корректные в некотором контексте:
(1) public class D = delegate void(string s);
(2) Delegate D1 = new Delegate( void(string s)
(3) public delegate void D2 (string s);
(4) public delegate int D3(int x1, ref int x2);
(5) public delegate T T1(int x)

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

public event Festival festival;

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

(1) все обработчики события должны быть экземплярами класса Festival ;
(2) класс Festival задает сигнатуру обработчиков события
(3) все обработчики события должны быть методами класса Festival .
Какие объявления классов являются синтаксически корректными:
(1) public class T {public void M<P> (P field) { } }
(2) public delegate P F<P>( P s)
(3) public interface Inter<P> { P Method(P x);}
(4) public enum C<P> : P{ item1, item2, item3}
Укажите, для каких сущностей и элементов программы могут быть заданы атрибуты:
(1) для событий
(2) для модуля
(3) для сборки
(4) для документируемых комментариев
Пусть P(x,z) - метод P с входными аргументами x и выходными z , и пусть P(x,z) корректен (полностью, или тотально) по отношению к предусловию Pre(x) и постусловию Post(x,z) . Какие высказывания истинны по отношению к тотально корректному методу P :
(1) на входе x , удовлетворяющем предусловию, тотально корректный метод P может завершить свою работу, а может и зациклиться
(2) на входе x , удовлетворяющем предусловию, тотально корректный метод P завершит свою работу, и на выходе гарантируется выполнение постусловия
(3) на входе x , удовлетворяющем предусловию, тотально корректный метод P завершит свою работу, но на выходе не гарантируется выполнение постусловия
(4) если на входе x , удовлетворяющем предусловию, метод P не завершит свою работу (зациклится), то это означает, что метод не является тотально корректным
Какие модификаторы являются модификаторами доступа для класса:
(1) private
(2) abstract
(3) public
(4) internal
(5) protected
Укажите истинное высказывание:
(1) структура должна быть объявлена с модификатором static
(2) структура не должна быть объявлена с модификатором static , но этот модификатор приписывается по умолчанию
(3) структура не может быть объявлена с модификатором static , поскольку структура всегда задает некоторый тип данных.
Укажите истинное высказывание:
(1) перечисление должно быть объявлено с модификатором static
(2) перечисление не должно быть объявлено с модификатором static, но этот модификатор приписывается по умолчанию
(3) перечисление не может быть объявлено с модификатором static, поскольку перечисление всегда задает некоторый тип данных
Отношение "А имеет В" (has) следует рассматривать, как:
(1) отношение вложенности и реализовывать отношением на классах "клиент - поставщик"
(2) отношение наследования и реализовывать отношением на классах "родитель - наследник"
(3) отношение, которое в одних ситуациях следует реализовывать отношением на классах "клиент - поставщик", в других - "родитель - наследник"
(4) особое отношение, которое нельзя реализовать ни отношением наследования, ни отношением вложенности
В интерфейсе методы объявляются без указания модификатора доступа. Класс, являющийся наследником интерфейса, эти методы:
(1) обязан реализовать как открытые методы, доступные клиентам класса
(2) обязан реализовать как закрытые методы, доступные внутри класса, но не доступные его клиентам
(3) может реализовать некоторые методы как открытые методы, другие как закрытые
В каких задачах, рассмотренных в курсе лекций, использовался механизм функций высших порядков:
(1) в методе вычисления определенного интеграла
(2) в методе сортировки массива объектов
(3) в методе умножения матриц
(4) в методе, оценивающем время работы других методов
Класс receiver - класс получатель уведомления о событии должен:
(1) иметь обработчик события - метод, согласованный по сигнатуре с делегатом, задающим тип события
(2) быть клиентом класса с событиями, чтобы иметь доступ к событию - event объекту
(3) присоединить обработчик события к списку вызовов события - event объекту
Какие высказывания являются истинными по отношению к ограничению универсальности:
(1) на параметры универсального класса нельзя накладывать ограничения
(2) если на параметры универсального класса накладываются ограничения, то они накладываются на все параметры одновременно
(3) на каждый параметр универсального класса можно наложить только одно ограничение
(4) в версии языка C# 3.0 существуют три вида ограничений, которые можно накладывать на параметры универсального класса
Поля атрибутного класса имеют специфику, отличную от обычной семантики полей класса. Укажите, какие высказывания справедливы для полей атрибутного класса:
(1) у атрибутного класса могут быть поля класса, значения которых должны быть заданы в конструкторе класса в обязательном порядке. Такие поля называются позиционными
(2) у атрибутного класса могут быть открытые поля класса, значения которых могут быть заданы или не заданы при вызове конструкторе класса. Такие поля называются именованными
(3) у каждого атрибутного класса есть позиционные поля
(4) у каждого атрибутного класса есть именованные поля
Для доказательства корректности цикла, как правило, используется понятие инварианта цикла. Какие утверждения являются справедливыми для этого понятия:
(1) у каждого цикла существует только один инвариант цикла
(2) у каждого цикла существует множество инвариантов цикла
(3) каждое тождественное утверждение является инвариантом любого цикла
(4) только некоторые инварианты цикла могут использоваться для доказательства корректности работы цикла
Отметьте высказывания, истинные для полей класса:
(1) все переменные, объявленные на уровне класса, являются полями класса
(2) все константы, объявленные на уровне класса, являются статическими полями класса
(3) каждый класс должен содержать поля
(4) поскольку поля доступны всем методам класса для записи и чтения, то поля используются для обмена информацией между методами класса
Укажите истинное высказывание:
(1) в теле структуры можно определять только поля и методы структуры
(2) в теле структуры можно определять поля, методы и события, но нельзя определять вложенные в структуру интерфейсы, структуры, перечисления и другие частные случаи классов
(3) в состав тела структуры могут входить все компоненты, которые могут входить в состав ссылочного класса
Над объектами перечисления определены следующие операции:
(1) сравнения на равенство и неравенство (==, !=)
(2) сравнения на больше, меньше ( >,<,>=, <=)
(3) сложения (+)
(4) побитовые логические операции (~, &, |, ^)
(5) логические операции (!, &&, ||)
(6) операции сдвига (>>,<<)
Моделируя классы " Прямоугольник" и " Квадрат" описывающие геометрические фигуры, следует полагать, что:
(1) эти классы не связаны никаким отношением
(2) класс " Прямоугольник" является родителем класса " Квадрат"
(3) класс " Прямоугольник" является клиентом класса " Квадрат"
(4) оба класса являются потомками общего родителя - класса " Геометрическая_Фигура"
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
(1) объявление закрытого метода должно включать модификатор доступа private
(2) объявление закрытого метода не должно включать модификатор доступа, но модификатор private приписывается автоматически
(3) объявление закрытого метода может включать модификатор доступа private, а может и не включать его
В языке C# допустимо применение анонимных методов. При задании анонимного метода можно использовать механизм лямбда выражений. Укажите синтаксическую формулу, корректно задающую анонимный метод:
(1) < имя метода> [(<сигнатура метода>)] => <тело метода>
(2) [(<сигнатура метода>)] => <тело метода>
(3) delegate [(<сигнатура метода>)]=> <тело метода>
(4) delegate [(<сигнатура метода>)]
Список аргументов события может содержать:
(1) только входные аргументы, передающие обработчикам события информацию от объекта, создавшего событие
(2) только выходные аргументы, передающие информацию от обработчиков события объекту, создавшему событие;
(3) как входные аргументы, так и выходные аргументы
(4) может быть пустым
При задании ограничений на параметры универсального класса:
(1) ограничение на каждый параметр задается предложением where
(2) для одного параметра можно задать несколько предложений where
(3) предложения where отделяются пробелами
(4) разные виды ограничений в одном предложении where отделяются запятыми
Объявление сущностей в языке C# начинается с возможного задания атрибутов сущности. Укажите, какие высказывания справедливы для задания атрибутов:
(1) атрибуты сущности задаются в одной или нескольких атрибутных секциях
(2) атрибутная секция может содержать список объявлений атрибутов, заключенный в квадратные скобки
(3) допустимо задание только одной атрибутной секции
(4) порядок задания атрибутных секций играет важную роль
Укажите истинные высказывания:
(1) тестирование может доказать некорректность программы
(2) тестирование может доказать корректность программы
(3) если все тесты прошли успешно, то корректность программы гарантируется
Классы A и B являются дружественными классами, если:
(1) один из классов является клиентом другого класса
(2) один из классов является потомком другого класса
(3) классы A и B являются классами одного проекта.

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

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

Пусть дано описание перечисления

public enum Profession { плотник, столяр, водитель, учитель, врач }

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

Profession worker = Profession.плотник; worker = worker | Profession.столяр | (Profession.врач & Profession.учитель); Console.WriteLine(worker.ToString());

будет напечатано:

(1) врач
(2) столяр
(3) учитель
(4) плотник
Укажите истинные высказывания:
(1) класс поставщик создает сервисы, предоставляемые своим клиентам
(2) клиенты не могут ни повлиять на поведение методов поставщика, ни изменить состав предоставляемых им сервисов, они не могут вызывать закрытые поставщиком поля и методы класса поставщика
(3) клиент не может создавать объекты поставщика, это может делать только сам поставщик
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
(1) в методах класса вызов закрытого метода может быть неквалифицированным, достаточно указать составное имя закрытого метода
(2) в методах класса вызов закрытого метода должен быть квалифицированным, а в качестве цели вызова следует указать текущий объект this
(3) в методах класса вызов закрытого метода должен быть квалифицированным, а в качестве цели вызова следует указать текущий объект this, приведенный к интерфейсному классу (IName)this. где IName - это имя интерфейсного класса
Какие высказывания являются истинными относительно двух важных механизмов - делегатов и полиморфизма:
(1) эти механизмы по сути являются эквивалентными и всегда допускают замену одного механизма другим
(2) это принципиально различные механизмы, которые не могут заменять друг друга ни в каких ситуациях
(3) у этих двух различных механизмов есть общее понятие контракта, основанное на фиксации сигнатуры вызываемых методов
Метод GetInvocationList , который есть у события, позволяет:
(1) последовательно вызывать методы, присоединившиеся к списку вызовов события
(2) объекту, создавшему событие, игнорировать результаты работы некоторых обработчиков события
(3) запретить некоторым классам слушать и обрабатывать события

Программист написал фрагмент кода, при компиляции которого возникла ошибка

interface IC<C> { C Method(C arg); } class A2<B> : IC<C> { public C Method(C arg) { return arg; } }

У программиста есть несколько версий причины возникновения ошибки. Укажите, какая из них верна:

(1) я написал правильный код, это ошибка в работе компилятора
(2) ошибка состоит в том, что класс А2 , являющийся наследником интерфейса, обязан включить в состав своих параметров все параметры интерфейса
(3) ошибка состоит в том, что класс А2 , являющийся наследником интерфейса, может иметь в качестве родовых параметров только параметры интерфейса
Пусть M это условно компилируемый метод класса. Укажите утверждения, истинные для метода M :
(1) при вызове метода M он выполняться не будет
(2) при вызове метода M он будет выполняться, если истинно условие компиляции
(3) если условие компиляции не выполняется, то при вызове метода M возникнет ошибка периода выполнения
(4) если условие компиляции не выполняется, то вызов метода M будет проигнорирован, не приводя к ошибкам
Исключительной ситуацией называется ситуация, возникающая в ходе выполнения программы, когда выполнение программы приостанавливается, поскольку нормальное продолжение выполнения не представляется возможным. Укажите, два наиболее вероятных фактора, чаще других приводящих к появлению исключительных ситуаций:
(1) причиной исключительной ситуации может быть некорректно работающее оборудование
(2) причиной исключительной ситуации может быть некорректно работающая программа
(3) причиной исключительной ситуации может быть некорректно работающее программное окружение - компиляторы, операционная система и другие программные средства, обеспечивающие работу программы
(4) причиной исключительной ситуации могут быть некорректные действия пользователя
Укажите высказывания, истинные для методов-свойств:
(1) метод-свойство является методом класса с особым синтаксисом и позволяет реализовать различные стратегии доступа к закрытым полям класса
(2) синтаксически в состав метода-свойства входят два метода - get (получатель значения свойства) и set (установитель значения свойства), один из которых может быть опущен
(3) если поле класса закрыто, то для него обязательно создается метод-свойство
(4) каждый метод-свойство содержит как метод get, так и метод set
Укажите особенности, характерные для структур:
(1) структуры не могут наследовать интерфейсы
(2) структуры могут наследовать интерфейсы
(3) поля структуры не могут быть инициализированы в момент объявления
(4) для структур нельзя создать собственный конструктор без аргументов
Перечисление из n элементов задано шкалой и определяет n бинарных свойств. Пусть x - это число, задающее значение объекта перечисления. Укажите высказывания, истинные для числа x:
(1) если x = 0, то это означает, что объект не обладает ни одним свойством
(2) если math, то это означает, что объект обладает ровно одним свойством
(3) если значение числа x увеличивается, то это означает, что увеличивается число свойств, которыми обладает объект
(4) если x принадлежит интервалу math, то это означает, что объект обладает некоторым набором свойств
(5) если x больше чем число math, то теряется содержательный смысл объекта перечисления
(6) значение x большее, чем число math, для перечислений, задающих шкалу, недопустимо и вызывает ошибку на этапе выполнения
Укажите высказывания, истинные для отношения наследования:
(1) все поля и методы, закрытые для клиентов, закрыты и для потомков класса
(2) поля и методы, закрытые для клиентов, могут быть открыты для потомков класса
(3) хорошей стратегией при проектировании класса является предоставление потомкам класса прямого доступа ко всем полям и методам родительского класса

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

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

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

(1) это объявление интерфейса синтаксически не корректно
(2) это объявление корректно, но класс, наследующий этот интерфейс, не сможет его реализовать, так что возникнет ошибка на этапе выполнения
(3) этот интерфейс задает метод - свойство, и класс, реализующий интерфейс может иметь закрытое поле name, доступ к которому будет обеспечиваться методом интерфейса
(4) этот интерфейс задает метод - свойство, и класс, реализующий интерфейс, обязан иметь закрытое поле name, доступ к которому будет обеспечиваться методом интерфейса
Укажите операции, допустимые над делегатами:
(1) +
(2) -
(3) *
(4) %
Объекты одного класса:
(1) имеют одинаковый набор событий
(2) в процессе вычислений зажигают одинаковый набор событий
(3) в процессе вычислений зажигают набор событий, характерный для объекта
(4) в разных сеансах работы зажигают одинаковый набор событий
(5) в разных сеансах работы могут зажигать разные события.
Хороший стиль разработки проектов предполагает, что документирование проекта сопровождает процесс разработки. Укажите, какие высказывания верны для процесса документирования в языке C# :
(1) генератор документации является частью компилятора C#
(2) для того чтобы генератор документации построил отчет, необходимо включить соответствующий флажок в параметрах проекта
(3) документируемые комментарии являются частью отчета
(4) профессиональный программист не документирует программный текст, полагая, что его текст не нуждается в комментариях
Согласно первому закону в сложных программах могут возникать ситуации, когда нарушаются спецификации, и программа перестает корректно работать, что приводит к появлению исключительных ситуаций. Исключительные ситуации могут возникать и в корректной программе из-за действий пользователя и других внешних причин, не зависящих от программы. Для поддержания устойчивой работы программной системы в таких ситуациях в языке C# предусмотрен механизм обработки исключительных ситуаций, основанный на try - catch - finally блоках. Укажите, какие утверждения справедливы для охраняемых try -блоков:
(1) любой блок в теле метода может быть сделан охраняемым
(2) в охраняемом блоке исключения не могут возникать
(3) если в охраняемом блоке возникло исключение, то оно может быть перехвачено одним из catch - блоков
Укажите истинные высказывания:
(1) каждый класс может иметь статические поля и методы
(2) только статический класс может иметь статические поля и методы
(3) если у класса есть хотя бы одно статическое поле или метод, то автоматически создается статический объект с именем класса
(4) нельзя определить статический конструктор класса

Пусть дано описание перечисления, заданного шкалой

[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());

будет напечатано:

(1) врач
(2) столяр
(3) плотник, столяр
(4) плотник
Пусть потомок создает метод с именем, совпадающим с именем метода родителя. Отметьте высказывания, истинные в этой ситуации:
(1) если сигнатура нового метода отличается от сигнатуры метода родителя, то у потомка появляется перегруженный метод
(2) если сигнатура нового метода не отличается от сигнатуры метода родителя и метод родителя не имеет специальных модификаторов abstract, virtual, override, то потомок скрывает метод родителя, доступ к которому по-прежнему остается возможным
(3) если сигнатура нового метода не отличается от сигнатуры метода родителя и метод родителя не имеет специальных модификаторов abstract, virtual, override, то потомок удаляет метод родителя, доступ к которому теперь становится невозможным
(4) если сигнатура нового метода не отличается от сигнатуры метода родителя и метод родителя имеет специальные модификаторы abstract, virtual или override, то метод является полиморфным и потомок создает собственную реализацию этого метода
В языке C# для каждого вызова x1.M(arg1, arg2, … argN) связывание сущности x1 с методом М осуществляется:
(1) статически, на этапе компиляции
(2) динамически, на этапе выполнения
(3) может осуществляться как статически, так и динамически, в зависимости от наличия или отсутствия у метода одного из модификаторов - abstract, virtual или override
Укажите высказывания, истинные для делегата - класса, задаваемого ключевым словом delegate:
(1) делегат C# задает определение функционального типа (класса) данных;
(2) экземплярами такого класса являются специально отобранные методы, лучшие в своем классе
(3) экземплярами такого класса являются специально отобранные методы, за которые проголосовало большее число клиентов класса
Укажите синтаксически корректную формулу, задающую объявление события в классе:
(1) [атрибуты] [модификаторы]event [имя события]
(2) [атрибуты] [модификаторы]<тип> event [имя события]
(3) [атрибуты] [модификаторы]event [тип, заданный делегатом] [имя события]
Универсальным может быть класс, заданный с ключевым словом:
(1) class
(2) struct
(3) interface
(4) delegate
(5) enum
Укажите высказывания, истинные для атрибутов языка C# :
(1) в атрибутах содержится декларативная информация, некоторое описание, сопровождающее код
(2) информация, заданная атрибутом, преобразуется компилятором в метаинформацию, сопровождающую сборку
(3) метаинформация недоступна в программе, и потому никак не может влиять на ход выполнения программы
(4) метаинформация доступна в программе, и потому может влиять на ход выполнения программы
Укажите высказывания, истинные для понятия устойчивости программы:
(1) устойчивость - это способность программы "разумно " работать в условиях, когда нарушаются спецификации
(2) понятие устойчивости может быть строго формализовано
(3) обработка исключительных ситуаций - процесс, направленный на достижение устойчивости
Укажите истинные высказывания:
(1) модульность построения - основное средство борьбы со сложностью программной системы
(2) теоретически невозможно построить монолитную систему, состоящую из одного модуля
(3) классы языка C# могуть иметь не только архитектурную, но и содержательную роль, поскольку могут являться описанием некоторого типа данных
Отметьте высказывания, истинные для структур:
(1) у структур нет конструкторов
(2) у структуры может быть только один конструктор
(3) у структуры может быть много конструкторов
(4) конструктор по умолчанию - конструктор без аргументов нельзя переопределить в структуре
Укажите высказывания, истинные для перечислений:
(1) у перечислений нет полей, нет методов, нет событий
(2) при определении перечисления задается список возможных значений
(3) элементами списка возможных значений являются идентификаторы, как правило, имеющие содержательный смысл
(4) элементами списка возможных значений являются строковые константы
(5) элементами списка возможных значений являются числа
Укажите высказывания истинные для отношения "клиент - поставщик":
(1) поставщик знает всех своих клиентов
(2) клиент знает всех своих поставщиков
(3) класс может быть сам себе клиент
(4) класс может быть сам себе поставщик
(5) у поставщика могут быть привилегированные клиенты, которым доступно больше сервисов, чем обычным клиентам
Укажите высказывания, истинные для интерфейса - класса, заданного с ключевым словом interface:
(1) одно из синтаксических отличий интерфейса от абстрактного класса состоит в том, что его методы объявляются без указания модификатора доступа
(2) в интерфейсе можно объявлять поля класса, а в абстрактном классе этого делать нельзя
(3) в абстрактном классе можно объявлять поля класса, а в интерфейсе этого делать нельзя
(4) в интерфейсе нельзя объявлять поля класса, но можно объявлять методы-свойства, обеспечивающие доступ к полям класса, наследующего интерфейс

Пусть дано объявление делегата

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; } }

Укажите корректные объявления экземпляров делегата:

(1) Three three = new Three(); DToD del3 = three.F;
(2) Three three = new Three(); DToD del4 = new DToD(three.F);
(3) Three three = new Three(); DToD del5 = three.F1
Укажите высказывания, истинные для обработчиков событий:
(1) обработчиком события называется метод, вызываемый в ответ на возникновение события у объекта класса
(2) когда у объекта класса возникает событие, то могут быть вызваны несколько обработчиков события, каждый из которых вносит свой вклад в обработку события
(3) для всех событий, возникающих у объекта, предусмотрен один обработчик, связанный с этим объектом
Укажите объявление класса, которое может быть синтаксически корректным в некотором контексте
(1) public class Univers1 : P1, P2 { }
(2) public class Univers2 < P1, P2> { }
(3) public class Univers3 ( P1, P2) { }
Укажите, для каких сущностей и элементов программы могут быть заданы атрибуты:
(1) для классов и всех его частных случаев
(2) для методов класса
(3) для программных блоков
(4) для полей класса
Одним из эффективных средств, позволяющих программисту справиться со сложностью создаваемой им программной системы, является использование механизма универсальных классов. Какие высказывания справедливы по отношению к универсализации классов:
(1) универсализация позволяет уменьшить общий объем программного кода системы, поскольку конкретизация типов данных возможна без дублирования программного кода, созданного для универсального класса
(2) универсализация позволяет задать общие спецификации, остающихся справедливыми при конкретизации типов данных, заданных формальными параметрами универсального класса
(3) универсализация требует задания специфических реализаций методов класса для каждой подстановки фактических типовых параметров класса
Укажите истинные высказывания:
(1) если класс задает тип данных, то можно создавать множество объектов этого класса
(2) для классов, играющих единственную роль модуля, создание объектов класса не допускается, такой класс существует в единственном экземпляре
(3) язык C# допускает как классы, являющиеся типами данных, так и классы, играющие единственную роль модуля
(4) каждый класс языка C# должен задавать тип данных
(5) большинство классов в объектно-ориентированном программировании являются типами данных
Отметьте высказывания, истинные для структур:
(1) у структур нет наследников
(2) у структуры может быть только один наследник
(3) для структуры нельзя указать в качестве родителя класс или структуру
(4) структура может быть наследником одного или нескольких интерфейсов
По умолчанию значения перечисления, содержащего n элементов, проецируются на отрезок:
(1) [0, n-1] типа byte
(2) [0, n-1] типа int
(3) [1, n] типа byte
(4) [1, n] типа int
Классы А и В находятся в отношении " родитель - наследник", если:
(1) класс А объявляет себя родителем класса В
(2) класс В объявляет своим родителем класс А
(3) полем класса В является объект класса А
Укажите высказывания, истинные для интерфейса - класса, заданного с ключевым словом interface:
(1) класс может иметь несколько интерфейсов в качестве родителей
(2) интерфейс не может иметь в качестве родителя обычный класс
(3) интерфейс не может иметь в качестве родителя другой интерфейс
(4) класс может иметь несколько интерфейсов в качестве потомков
Укажите высказывания, истинные для экземпляра делегата:
(1) представляет собой обычный указатель на функцию (метод)
(2) представляет собой структуру, одно из полей которой задает ссылку на функцию (метод)
(3) представляет собой структуру, одно из полей которой задает ссылку на целевой объект, вызывающий метод
Укажите высказывания, истинные для событий:
(1) событие является экземпляром класса, заданного делегатом, указанным при объявлении события. Ключевое словом event накладывает некоторые дополнительные ограничения на этот экземпляр
(2) под "зажиганием " события понимается вызов события, что приводит к вызову списка методов - обработчиков события, сигнатура которых задана соответствующим делегатом
(3) под "зажиганием " события понимается удаление обработчиков события из списка вызовов методов, присоединившихся к событию
(4) вызов события имеет смысл, если только к списку вызовов события присоединился хотя бы один обработчик события.
Класс, являющийся наследником универсального интерфейса с параметрами:
(1) должен быть универсальным классом и включать в число параметров все параметры родительского интерфейса
(2) может не быть универсальным классом
(3) может быть универсальным классом, но включать только часть параметров родительского интерфейса
Рассмотрим атрибут, принадлежащий встроенному классу FlagsAttribute . Укажите, какие утверждения справедливы по отношению к этому атрибуту:
(1) атрибут может быть задан для любой сущности языка C# - класса, метода, поля
(2) атрибут может быть задан при объявлении всех частных случаев класса
(3) атрибут может быть задан только при объявлении классов C# задающих перечисление, то есть только для enum классов
(4) задание атрибута Flags для перечисления влияет на то, как будет выполняться метод ToString для объектов перечисления
Пусть P(x,z) - метод P с входными аргументами x и выходными z , и пусть P(x,z) корректен (полностью, или тотально) по отношению к предусловию Pre(x) и постусловию Post(x,z) . Какие высказывания истинны по отношению к тотально корректному методу P :
(1) если на входе x , предусловие принимает значение false , то на таком входе тотально корректный метод P может вести себя любым образом, оставаясь корректным
(2) программисту наиболее сложно обеспечить корректную работу метода P , когда предусловие метода задается константой true , поскольку требуется обеспечить выполнение постусловия на всех входах
(3) программисту наиболее сложно обеспечить корректную работу метода P , когда предусловие метода задается константой false
Если модификатор доступа для класса не задан, то значением по умолчанию является модификатор
(1) private
(2) public
(3) protected
(4) internal
Отметьте истинные высказывания:
(1) каждая структура задает тип данных и, следовательно, можно создать множество объектов этого типа
(2) для структуры нельзя задать модификатор static
(3) для структуры нельзя задать модификаторы abstract и sealed
(4) для структуры нельзя задать модификатор доступа
Укажите истинные высказывания:
(1) над объектами перечисления никакие операции не заданы
(2) объекты перечисления можно только сравнивать на равенство и неравенство
(3) все операции, допустимые для целых чисел, допустимы и для объектов перечислений
(4) над объектами перечисления определены операции сравнения и логические побитовые операции.
Отношение "А является В" (is) следует рассматривать, как:
(1) отношение вложенности и всегда реализовывать отношением на классах "клиент - поставщик"
(2) отношение наследования и всегда реализовывать отношением на классах "родитель - наследник"
(3) отношение, которое в одних ситуациях следует реализовывать отношением на классах " клиент - поставщик" в других - " родитель - наследник"
(4) особое отношение, которое нельзя реализовать ни отношением наследования, ни отношением вложенности
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как открытый метод класса. В этом случае:
(1) класс может использовать открытый метод в своих интересах, вызывая его в методах класса
(2) класс может создать обертку метода под новым именем, открывая обертывающий метод для клиентов класса
(3) класс обязан создать обертывающий метод, если он хочет предоставить клиентам доступ к методу интерфейса
Делегаты широко используются при задании функций обратного вызова (callback функций). Укажите, какие утверждения относительно функций обратного вызова являются корректными:
(1) функцией обратного вызова называется функция, в теле которой вызывается другая функция
(2) функцией обратного вызова называется функция, в теле которой содержится вызов этой же функции
(3) функцией обратного вызова называется функция F, которой в момент ее вызова в качестве фактического аргумента передается функция G, вызываемая в теле F
(4) функцией обратного вызова называется функция высшего порядка, у которой тип одного или нескольких формальных аргументов задается делегатами
Пусть создается класс с событиями, удовлетворяющий общим спецификациям CLS и допускающий повторное использование в проектах на разных языках. Укажите, какие ограничения следует наложить на делегата, задающего событие в этом случае:
(1) сигнатура делегата фиксирована и включает два аргумента, где первый аргумент принадлежит типу object , а второй - является потомком встроенного класса EventArgs
(2) имя делегата фиксировано - EventHandler
(3) имя делегата может быть произвольным, но обычно начинается с префикса EventHandler .
Укажите, какие ограничения допустимы для параметров универсального класса:
(1) ограничение наследования, когда для типа T указывается его родитель class S<T> where T : Parent { }
(2) ограничение операций, когда у типа T должны быть определены операции, перечисленные в списке операций class S<T> where T : Operations( +, -, *, /) { }
(3) ограничение конструктора, когда у типа T должен быть задан конструктор без аргументов class S<T> where T : new() { }
(4) ограничение ссылочный/развернутый, когда тип T должен относиться либо к ссылочным либо к развернутым типам class S<T> where T : struct { }
Задание атрибута можно рассматривать как вызов конструктора атрибутного класса и создание соответствующего объекта, связанного с сущностью, для которой атрибут задается. Укажите, какие синтаксические формы допустимы для задания атрибута, в атрибутном классе которого нет позиционных полей:
(1) достаточно указать краткое имя класса, опустив суффикс Attribute (например [Flags] )
(2) достаточно указать полное имя класса (например [FlagsAttribute] )
(3) можно указать полное имя класса, дополнив его скобками, как это делается при вызове конструктора (например [FlagsAttribute()])
(4) допустима только полная форма вызова конструктора (new [FlagsAttribute()])
Рассмотрим цикл типа While - (while(B) S;) , где B - предикат, задающий условие цикла, а S - тело цикла. Только некоторые инварианты цикла, называемые подходящими инвариантами цикла, могут использоваться для доказательства корректности цикла. Какие утверждения являются истинными по отношению к подходящему инварианту Inv :
(1) предикат Inv становится истинным непосредственно перед выполнением оператора цикла
(2) предикат Inv является инвариантом цикла while
(3) из истинности предиката Inv следует истинность утверждения, доказывающего корректность выполнения цикла
(4) из истинности предиката Inv и условия завершения цикла (Inv & !B) следует истинность утверждения, доказывающего корректность выполнения цикла
Что из перечисленного может быть объявлено как в классе, так и вне класса:
(1) классы
(2) структуры
(3) поля
(4) методы
(5) интерфейсы
(6) события
Пусть 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; определена только для классов, для структур требуется ее переопределение в самой структуре
Укажите истинные высказывания:
(1) возможные значения двух разных перечислений не могут совпадать
(2) возможные значения двух разных перечислений могут совпадать
(3) возможные значения в перечислении могут быть словами русского языка, синтаксически являясь идентификаторами
Моделируя классы " Животные" и " Кошки" описывающие мир животных, следует полагать, что:
(1) эти классы не связаны никаким отношением
(2) класс "Животные" является родителем класса " Кошки"
(3) класс " Животные" является клиентом класса "Кошки"
(4) оба класса являются потомками общего родителя - класса "Млекопитающие"
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
(1) имя закрытого метода должно быть составным и начинаться с имени интерфейса, за которым через точку следует имя метода
(2) имя закрытого метода не должно включать имя интерфейса, но это имя приписывается автоматически
(3) имя закрытого метода может быть составным, а может состоять только из имени метода интерфейса
В языке C# допустимо применение анонимных методов. При задании анонимного метода можно использовать механизм делегатов. Укажите синтаксическую формулу, корректно задающую анонимный метод:
(1) delegate < имя метода> [(<сигнатура метода>)] <тело метода>
(2) delegate [(<сигнатура метода>)] <тело метода>
(3) delegate [(<сигнатура метода>)]
Объект, зажегший событие, передает информацию группе обработчиков события через входные аргументы метода. В группе обработчиков могут возникать конфликты из-за повреждения одним из членов группы информации, требуемой всем обработчикам. Входная информация, содержащаяся во входных аргументах события:
(1) защищена автоматически, так как все аргументы события по умолчанию доступны только для чтения
(2) эта информация не защищена, и защитить ее невозможно, так как аргументы события доступны как для чтения, так и для записи
(3) эта информация не защищена, но защитить ее возможно, реализовав для входных аргументов стратегию доступа "только чтение", что может быть сделано при создании класса, являющемся наследником класса EventArgs .
Отметьте истинные высказывания:
(1) компилятор C# строит код для каждого класса, получаемого заменой формальных параметров универсального класса на фактические, что приводит к дублированию программного кода;
(2) компилятор C# строит параметризованный код универсального класса. При конструировании объектов конкретного типа происходит подстановка соответствующих параметров типа, так что дублирования кода не происходит
(3) универсальность и наследование позволяют существенно сократить объем кода программной системы
(4) предложение using позволяет задать имя для класса, представляющего родовое порождение, и это имя многократно использовать при объявлении объектов этого класса
Какие из встроенных атрибутов могут быть заданы для методов класса:
(1) Flags
(2) Serializable
(3) Conditonal
(4) Description
Укажите, какое средство программист обычно не использует в процессе отладки:
(1) точки останова
(2) пошаговое исполнение программы
(3) наблюдение за состоянием переменных
(4) условно компилируемые методы
(5) гадание на картах
Укажите высказывания, истинные для конструкторов класса:
(1) конструктор класса - это особый метод, предназначенный для создания объектов класса
(2) класс может не иметь конструкторов
(3) у класса может быть много конструкторов
(4) у класса всегда есть конструктор по умолчанию - конструктор без аргументов
(5) имя конструктора совпадает с именем класса

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

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
(2) 3
(3) 5
(4) 6
(5) 7

Пусть дано описание перечисления

public enum Profession { плотник, столяр, водитель, учитель, врач }

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

Profession worker = Profession.плотник; worker = worker | Profession.столяр | (Profession.врач | Profession.учитель); Console.WriteLine(worker.ToString());

будет напечатано:

(1) врач
(2) столяр
(3) учитель
(4) плотник
(5) 7
Класс поставщик может закрывать поля и методы, делая их недоступными для своих клиентов. Скрытие информации
(1) свидетельствует о злонамеренности поставщика и клиентам следует избегать таких поставщиков
(2) не дает возможности клиентам изменять сервисы, предоставляемые поставщиком
(3) делается в интересах клиентов класса. Классы клиенты строят свою реализацию, основываясь только на знании интерфейсной части класса поставщика. Изменения в закрытой части класса не скажутся на работе клиентов, если интерфейс класса не меняется
Пусть класс, являющийся наследником интерфейса, реализует метод интерфейса как закрытый метод класса. В этом случае:
(1) клиент класса может создать объект класса и, используя его как цель, непосредственно вызывать закрытый метод интерфейса
(2) клиент класса может создать объект класса, объявить объект интерфейса, связать его с объектом класса, и вызывать закрытый метод интерфейса, используя в качестве цели объект интерфейса
(3) клиенту класса может быть доступен закрытый метод интерфейса, если класс создал открытый метод, обертывающий закрытый метод интерфейса
Укажите истинные высказывания:
(1) экземпляр делегата может быть задан как поле класса
(2) экземпляр делегата может быть задан как статический метод - свойство класса
(3) если предполагается создание большого числа объектов класса, а в классе требуется задать несколько экземпляров делегатов, то предпочтительнее задать их не как поля класса, а как методы - свойства, поскольку это позволит экономить такой ресурс как память компьютера
У класса может быть много событий. Укажите, какие возможности объявления события доступны классу:
(1) событие может быть объявлено как поле класса
(2) событие может быть объявлено как метод - свойство, содержащий два метода - get и set , один из которых может быть опущен
(3) событие может быть объявлено как метод - свойство, содержащий два метода - add и remove , один из которых может быть опущен
(4) событие может быть объявлено как метод - свойство, содержащий два метода - add и remove, оба из которых должны быть заданы.
Укажите, в каких фрагментах кода возникнут ошибки:
(1) class A<B, C> { B b; C c;}
(2) interface ID<D> { D Method(D arg); } class A2<B> : ID<D> { public D Method(D arg) { return arg; } }
(3) class A<A, B> { A a1; B b;}
(4) class A<B, C> { B b; C c;} class A3<B> where B : A<int, int> { }
Пусть программистом создан собственный атрибутный класс MyAt . Укажите истинные высказывания:
(1) при объявлении класса MyAt можно указать те целевые сущности, для которых возможно задание атрибутов этого класса
(2) задание для сущности атрибута класса MyAt приведет к тому, что информация, заданная атрибутом станет частью метаинформации, сопровождающей проект
(3) информация, заданная атрибутом класса MyAt , может повлиять на выполнение проекта
(4) информация, заданная атрибутом класса MyAt , никак не может повлиять на выполнение проекта
Исключительной ситуацией называется ситуация, возникающая в ходе выполнения программы, когда выполнение программы приостанавливается, поскольку нормальное продолжение выполнения не представляется возможным. Укажите, какие высказывания верны по отношению к исключительным ситуациям:
(1) в языке C# при возникновении исключительной ситуации выполнение программы приостанавливается и создается объект специального класса, описывающий исключение
(2) существует единственный встроенный класс Exception , задающий исключения
(3) все классы, описывающие исключения, являются встроенными
(4) все классы, описывающие исключения, являются потомками класса Exception
(5) можно создавать собственные классы исключений
Укажите высказывания, истинные для метода, называемого индексатором:
(1) индексатор является методом класса с особым синтаксисом и позволяет реализовать различные стратегии доступа к закрытому полю класса, задающему массив
(2) у класса может быть много индексаторов
(3) у класса может быть только один индексатор
(4) у индексатора имя фиксировано - this
Укажите утверждения, справедливые для взаимных корректных преобразований текстов структур и классов:
(1) синтаксически корректный текст, задающий объявление структуры, всегда можно преобразовать в синтаксически корректный текст, задающий объявление класса, заменив слово struct словом class
(2) синтаксически корректный текст, задающий объявление класса, всегда можно преобразовать в синтаксически корректный текст, задающий объявление структуры, заменив слово class словом struct
(3) синтаксически корректный текст, задающий объявление класса, иногда можно преобразовать в синтаксически корректный текст, задающий объявление структуры, заменив слово class словом struct
Шкалой называется перечисление, содержащее n элементов, у которого:
(1) элементы перечисления отображаются в отрезок [1, n] типа int
(2) для каждого элемента перечисления задано число, в которое отображается этот элемент
(3) элемент перечисления с номером k отображается в число math при условии, что нумерация элементов начинается с нуля
Потомок класса может:
(1) определить новые поля класса
(2) скрыть поля родительского класса, определив по-новому поля с именами, существующими в родительском классе
(3) определить новые методы класса
(4) скрыть методы родительского класса, определив по-новому методы с именами, существующими в родительском классе
При множественном наследовании классов возможно возникновение проблемы "наследования от общего предка", когда два или более родительских класса имеют общего предка, от которого все они наследуют один и тот же метод. Для множественного наследования интерфейсов эта ситуация:
(1) не может возникать
(2) может возникать и приводит к ошибке, обнаруживаемой на этапе компиляции
(3) может возникать, но легко разрешима в классе наследника за счет использования, например, стратегии склеивания
Укажите методы, существующие в классе Delegate:
(1) Combine
(2) Remove
(3) PutInvocationList
(4) GetInvocationList
Правда ли, что:
(1) если обработчику события не передаются дополнительные аргументы, то можно пользоваться стандартным делегатом с именем EventHandler
(2) при зажигании события выполнение метода прерывается, пока не закончат работу все обработчики события
(3) стандартные интерфейсные объекты (кнопки, списки и прочие) обладают набором предопределенных событий
(4) классы наследники не наследуют события своих родителей
Документируемые комментарии в программах на C# могут включать текст в формате XML , содержащий элементы, называемые тегами. Укажите высказывания, истинные для тегов:
(1) допускаются только предопределенные в языке C# теги
(2) информация, заданная предопределенными тегами summary, param, returns и другими, используется при построении XML отчета при документировании проекта
(3) информация, заданная предопределенными тегами summary, param, returns и другими, используется в интеллектуальной подсказке при работе с объектами
(4) информация, заданная предопределенными тегами summary, param, returns и другими, используется при работе браузера объектов
(5) информация, заданная предопределенными тегами summary, param, returns и другими, является комментарием, поясняющим программный код
Согласно первому закону в сложных программах могут возникать ситуации, когда нарушаются спецификации, и программа перестает корректно работать, что приводит к появлению исключительных ситуаций. Но исключительные ситуации могут возникать и в корректной программе из-за действий пользователя и других внешних причин, не зависящих от программы. Для поддержания устойчивой работы программной системы в таких ситуациях в языке C# предусмотрен механизм обработки исключительных ситуаций, основанный на try - catch - finally блоках. Укажите, какие утверждения справедливы для catch - finally блоков:
(1) каждый охраняемый try - блок должен сопровождаться catch или finally блоком
(2) у одного try - блока может быть несколько catch - блоков
(3) каждый из catch - блоков перехватывает исключение определенного класса
(4) если в try -блоке возникло исключение, то оно обязательно будет перехвачено одним из catch - блоков
(5) блок finally , сопровождающий try - блок, выполняется только в том случае, если в try - блоке возникло исключение
Укажите высказывания, истинные для метода, задающего операцию:
(1) в роли имени метода выступает знак операции
(2) для операций класса сохраняется приоритет, заданный общими для операций правилами языка
(3) метод, задающий операцию, должен иметь явно заданный модификатор static, что делает этот метод статическим
(4) не разрешается строить выражения из объектов класса, используя знаки операций и скобки

Пусть дано описание перечисления, заданного шкалой

[Flags] public enum Profession { плотник = 1, столяр = 2, водитель = 4, учитель = 8, врач = 16 }

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

Profession worker = Profession.плотник; worker = worker | Profession.столяр | (Profession.врач | Profession.учитель); Console.WriteLine(worker.ToString());

будет напечатано:

(1) врач
(2) столяр
(3) учитель
(4) плотник
(5) плотник, столяр, учитель, врач
Укажите истинные высказывания:
(1) когда для создания объекта вызывается конструктор, то он в первую очередь вызывает конструктор своего непосредственного родителя, так транзитивно продолжается до тех пор, пока не будет вызван конструктор класса object
(2) если родительский класс объявлен с модификатором abstract, то можно создать наследника этого класса, который может быть как абстрактным, так и не абстрактным классом
(3) если родительский класс объявлен с модификатором sealed, то можно создать наследника этого класса
Укажите механизмы, лежащие в основе полиморфизма
(1) статический контроль типов
(2) одностороннее присваивание
(3) переопределение потомком реализации метода с сохранением его сигнатуры
(4) динамическое связывание