- •Экзаменационный билет №1
- •1. Структура и принципы функционирования приложений на платформе .Net, библиотека компонентов и классов .Net Framework, исполнительная среде clr.
- •2. Интерфейсы. Стандартные интерфейсы .Net. Сравнение и клонирование объектов. Структуры. Делегаты. События.
- •3. Каков результат компиляции и выполнения приведенного ниже кода?
- •Экзаменационный билет №2
- •1. Основные понятия ооп - инкапсуляция, наследование, полиморфизм.
- •2. Отношение между объектами. Включения и коллекции.
- •3. Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №3
- •1. Класс Delegate. Логика использования делегатов. Неизменяемость делегатов.
- •2. Пространство имён – определение, примеры
- •3. Что будет выведено на экран в каждом из случаев, приведенных ниже:
- •Экзаменационный билет №4
- •1. Структура программы на c#. Константы. Переменные: описание, область действия, время жизни. Операции, приоритеты операций.Структура программы на c#.
- •2. Параллельные и Взаимосвязанные Вычисления (ccr). Где используется ccr?
- •3. Что будет выведено на экран в каждом из случаев, приведенных ниже:
- •Экзаменационный билет №5
- •1. Понятие полиморфизма
- •2. Перегрузка функций. Алгоритм выбора перегруженной функции.
- •3. Что будет выведено в консоли в результате выполнения следующего кода (и почему):
- •Экзаменационный билет №6
- •1. Конструкторы, их виды (преобразования, умолчания, копирования). Деструктор.
- •2. Обзор dss.
- •3. Какой метод выберет компилятор?
- •Экзаменационный билет №7
- •1. Информационные члены класса и члены-методы.
- •2. Наследование классов. Синтаксис и общий смысл.
- •3. Какой метод выберет компилятор?
- •Экзаменационный билет №8
- •1. Массивы. Строки. Потоки и файлы.
- •2. Ccr.Итераторы.
- •3. Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №9
- •1. Пространство имён – определение, примеры.
- •2. Циклы for, while, do. Прерывание циклов.
- •3. Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №10
- •1. Сокрытие методов базового класса.
- •2.Операции в c# (привести примеры операций для логических типов, арифметических и т.Д.)
- •3. Найти неправильное(ые) описание(я) двумерного массива
- •Экзаменационный билет №11
- •1. Конструкторы. Ключевое слово this.
- •2.Особенности итераторов в ccr. Итераторы
- •3.Найти неправильное(ые) описание(я) одномерного массива
- •Экзаменационный билет №12
- •1.Clr (CommonLanguageRuntime) – определение, примеры задач clr, состав ядра.
- •2.Понятие инкапсуляции.
- •3.Каков результат компиляции и выполнения приведенного ниже кода?
- •Экзаменационный билет №13
- •1.Статические члены класса
- •2.Что такое полиморфизм? Пример полиморфизма.
- •3.Что будет выведено на экран при выполнении приведенного ниже кода?
- •Экзаменационный билет №14
- •1.Понятие класса. Доступ к членам класса.
- •2. Инкапсуляция. Понятие класса как абстрактного типа данных.
- •3.Как метод выберет компилятор?
- •Экзаменационный билет №15
- •1. Понятие события
- •2. Механизмы инкапсуляции в c#. Вложенные типы.
- •3. Каков результат компиляции и выполнения приведенного ниже кода?
- •Экзаменационный билет №16
- •1.Определение классов в с#. Ключевые слова internal, public, abstract
- •2.Потоковый ввод-вывод. Работа с файлами/каталогами
- •3. Какой метод выберет компилятор?
- •Экзаменационный билет №17
- •1. Интерфейсы
- •2.Параллельные и Взаимосвязанные Вычисления (ccr). Где используется ccr?
- •3.Что следует ожидать на экране?
- •Экзаменационный билет №18
- •1.Ссылочные типы и типы-значения
- •2.Класс Delegate. Логика использования делегатов. Неизменяемость делегатов.
- •3.Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №19
- •1.Clr (CommonLanguageRuntime) – определение, примеры задач clr, состав ядра
- •2.Зачем нужны частичные(partial) методы в c#?
- •3.Что будет выведено в консоли в результате выполнения следующего кода (и почему):
- •Экзаменационный билет №20
- •1.Простые типы. Примеры.
- •2.Ссылочный тип данных
- •3.Что будут выведено на экран в результате выполнения кода приведенного ниже?
- •Экзаменационный билет №21
- •1.Переменные. Объявление и инициализация
- •2.Наследование. Замещение методов. Проверка совместимости типов.
- •3.Что будет выведено в результате выполнения цикла?
- •Экзаменационный билет №22
- •1.Определение классов в с#. Ключевые слова internal, public, abstract
- •2.Библиотеки и типы, используемые при симуляции в Robotics
- •3.Что будет выведено на экран при выполнении приведенного ниже кода?
- •Экзаменационный билет №23
- •Экзаменационный билет №24
- •Экзаменационный билет №25
Экзаменационный билет №1
1. Структура и принципы функционирования приложений на платформе .Net, библиотека компонентов и классов .Net Framework, исполнительная среде clr.
Microsoft.NET (.NET Framework) – программная платформа. Содержит следующие основные компоненты: the common language runtime (CLR) и the .NET Framework class library (.NET FCL).
CLR (Common Language Runtime) – Среда Времени Выполнения или Виртуальная Машина – управляемая операционная система высокого уровня, которая обеспечивает выполнение программного кода и предполагает решение следующих задач:
управление кодом (загрузку и выполнение),
управление памятью при размещении объектов,
изоляцию памяти приложений,
проверку безопасности кода,
преобразование промежуточного языка в машинный код,
доступ к метаданным (расширенная информация о типах),
обработка исключений, включая межъязыковые исключения,
взаимодействие между управляемым и неуправляемым кодом (в том числе и COM-объектами),
поддержка сервисов для разработки (профилирование, отладка и т.д.).
CLR – это набор служб, необходимых для выполнения сборки. При этом программный код сборки может быть как управляемым (код, при выполнении которого CLR, в частности, активизирует систему управления памяти), так и неуправляемым.
CLR состоит из двух компонент:
ядра (mscoree.dll);
библиотеки базовых классов (mscorlib.dll).
FCL (.NET Framework Class Library) – объектно-ориентированная библиотека классов, интерфейсов и системы типов (типов-значений), которые включаются в состав платформы Microsoft .NET. В частности, содержит:
встроенные (элементарные) типы, представленные в виде классов (на платформе .NET всё построено на структурах или классах);
классы для разработки графического пользовательского интерфейса (Windows Form);
классы для разработки Web-приложений и Web-служб на основе технологии ASP.NET (Web Forms);
классы для разработки XML и Internet-протоколами (FTP, HTTP, SMTP, SOAP);
классы для разработки приложений, работающих с базами данных (ADO.NET).
.NET-приложение – приложение, разработанное для выполнения на платформе Microsoft.NET. Реализуется на языках программирования, соответствующих CLS. Независимо от компилятора(и входного языка) результатом трансляции .NET приложения является управляемый исполняемый модуль (управляемый модуль). Это стандартный переносимый исполняемый(PE – Portable Executable) файл Windows.
2. Интерфейсы. Стандартные интерфейсы .Net. Сравнение и клонирование объектов. Структуры. Делегаты. События.
Интерфейс (interface) — это коллекция общедоступных методов и свойств, которые объединяются вместе для инкапсуляции конкретной функциональности. После определения интерфейса его можно реализовать в классе. Это означает, что в таком случае класс будет поддерживать все свойства и члены, специфицируемые данным интерфейсом.
Важно обратить внимание на то, что интерфейсы не могут существовать сами по себе. Создавать "экземпляр" интерфейса, как это можно делать с классом, нельзя. Помимо этого, интерфейсы не могут содержать никакого кода, реализующего их члены, они могут лишь определять их, а реализоваться те должны непосредственно в классах, которые реализуют данный интерфейс.
Один класс может поддерживать несколько интерфейсов, а несколько классов могут поддерживать один и тот же интерфейс.
interface IMylnterface
{
// Члены интерфейса.
}
Наследование интерфейсов тоже задается похожим с классами образом. Главное отличие состоит лишь в том, что в их случае может использоваться несколько базовых:
public interface IMylnterface : IMyBaselnterfасе, IMyBaseInterface2
{
// Члены интерфейса.
}
Структура представляет собой набор блоков данных, возможно, разного типа. Структуры определяются с помощью ключевого слова struct:
struct oops
{
<объявления_членов>
}
В разделе <объявления_членов> содержатся объявления переменных(называемых данными-членами структуры) в практически том же самом формате, что и обычно. Объявление каждого члена имеет следующий вид:
<уровень_доступа> <тип> <имя>;
После определения типа структуры начинать пользоваться ее можно, определив переменные нового типа:
oops myOops;
Помимо этого, можно обращаться к данным-членам этой сложной переменной с помощью символа точки:
myOops.par1 = “test”;
myOops.par2 = 2.5;
События (events) определяют реакцию класса на те или иные действия пользователя (на перемещение мыши, например) или на изменения в работающей программе (например, как реакция на возникновение исключительной ситуации). С событиями связываются делегаты – специальные объекты, которым передается управление при возникновении события. Для объявления события используется зарезервированное слово event, для объявления делегата – delegate.
События являются важными вхождениями, в связи с которыми в других частях кода могут выполняться определенные действия, подобные, но более мощные, чем генерация исключений. Например, может быть необходимо, чтобы при добавлении объекта Animal в коллекцию Animals выполнялся определенный код, не являющийся ни частью класса Animals, ни частью того кода, который вызывает метод Add(). Чтобы добиться такого поведения, потребуется добавить в код обработчик событий, представляющий собой функцию особого вида, которая вызывается при возникновении события. Кроме того, потребуется также сконфигурировать этот обработчик, чтобы он ожидал поступления именно интересующего события.
Делегат (delegate) – это тип, который позволяет хранить ссылки на функции. Объявляются делегаты во многом так же, как функции, но только безо всякого тела функции и с ключевым словом delegate. В объявлении любого делегата указывается возвращаемый тип и список параметров. После определения делегата можно объявлять переменную с типом этого делегата. Далее эту переменную можно инициализировать как ссылку на любую функцию, которая имеет точно такой же возвращаемый тип и список параметров, как и у делегата. После этого функцию можно вызывать с использованием переменной делегата так, будто бы это и есть сама функция.
Наличие переменной, ссылающейся на функцию, также делает возможным выполнение и других операций, которые в противном случае были бы невозможными. Например, это позволяет передавать переменную делегата функции в качестве параметра, после чего делегат может использоваться для вызова функции, на которую он ссылается, во время выполнения.
class Program {
delegate double ProcessDelegate(double paraml, double param2);
static double Multiply (double paraml, double param2) {
return paraml * param2 ;
}
static double Divide(double paraml, double param2) {
return paraml / param2;
}
***
ProcessDelegate process;
double paraml = 0.15;
double param2 =0.5;
process = new ProcessDelegate (Multiply);
// или process = new ProcessDelegate (Divide);
Console.WriteLine("Result: {0}", process(param1, param2));
***
}
Сравнение объектов. В объектно-ориентированном мире понятие "равные объекты" может иметь различный смысл. В простейшем случае речь идет о ссылочном равенстве, которое проверяется с помощью статического метода object.ReferenceEquals или встроенного в C# оператора == для объектов. Речь может идти и о сравнении "внутренней структуры". Для этой цели многие типы переопределяют виртуальный метод Equals класса System.Object. Существует также удобный статический метод object.Equals с двумя аргументами, который осуществляет проверку в несколько этапов. Сначала он проверяет свои аргументы на ссылочное равенство, возвращая true в случае успеха. Затем, если оба аргумента не равны null, сравнивает их, вызывая экземплярный метод Equals у левого аргумента и возвращая его результат. Наконец, он возвращает false, если только один из аргументов равен null. Таким образом, за выбор алгоритма сравнения в данном случае "отвечает" левый аргумент.
Клонирование объектов. Метод Object.MemberwiseClone.
Метод MemberwiseClone для создания неполной копии создает новый объект, а затем копирует в него нестатические поля текущего объекта. Если поле относится к типу значения, выполняется побитовое копирование полей. Если поле относится к ссылочному типу, копируются ссылки, а не объекты, на которые они указывают; следовательно, ссылки в исходном объекте и его клоне указывают на один и тот же объект.