- •1. Эволюция языков прогр-я.
- •2. Что такое .Net? Обзор технологий программирования под Windows.
- •3. Компоненты платформы .Net. Что такое .Net Framework?
- •4. Модель выполнения приложения в среде .NetFramework. Промежуточныйязык Microsoft (Microsoft Intermediate Language, msil). Сборки
- •5. Обзор встр. Типов данных в с#. Применение встроенной функц-сти типов данных.
- •6. Операции ввода-вывода. Формат вывода. Пространство имён System. Класс Math. Пространство имён System и класс Math
- •7. Арифметические операции. Операции отношений и логические операции. Операторы и выражения в c# .
- •Операторы сравнения в c#. Лог. Операции для условий
- •Операторы
- •8. Одномерные массивы в c#. Класс System.Random, применение его методов для создания массива случайных чисел. Класс System.Array, использование его методов и свойства Length.
- •9. Двумерныемассивы в c#. Виды двумерных массивови способы их определения; способы создания; построчный вывод на экран
- •10. Структуры в c#. Создание структур, доступ к элементам, массивы структур.
- •11.Объект и его свойства. Характеристики ооп.
- •12.Классы в c#. Форма определения класса. Члены класса: методы, поля, свойства и события.
- •13.Конструкторы. Параметризованные конструкторы. Использование оператора new.
- •14. Типы значений и ссылочные типы. Динамическое использование памяти: стеки и кучи. Упаковка и распаковка.
- •15. Деструкторы. Сборка «мусора».
- •16. Определение методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов.
- •17. Модификаторы ref, out, params параметров методов.
- •18. Общие (статические) члены класса. Доступ к общим членам. Ограничения на static-методы.
- •19.Область видимости и время существования переменных.
- •20. Преобразование и приведение типов.
- •21. Обработка исключительных ситуаций.
- •22. Перегрузка методов и перегрузка конструкторовкак механизм реализации полиморфизма. Виды конструкторов.
- •23. Понятие стека. Класс «Стек из символов», его основные методы.
- •24. Перегрузка операторов. Перегрузка бинарных, унарных и операторов отношений.
- •25. Свойства как механизм реализации инкапсуляции. Формат записи свойств.
- •26. Индексаторы. Специальные приемы построения типов. Создание одномерных и двумерных индексаторов.
- •27.Наследование. Базовые и производные классы. Доступы к членам базовых классов.
- •28.Конструкторы и наследование (проект «Наследование»).
- •29. Ссылки на базовый класс и объекты производных классов.
- •30. Виртуальные методы и их переопределение.
- •31. Абстрактные классы.
- •32. Понятие интерфейса. Определение интерфейса.
- •33. Способы реализации интерфейса.
- •34.Некоторые станд.Интерфейсы среды .Net Framework.
- •35. Механизмы реализации полиморфизма в c#.
- •36. Понятие обобщенного программирования. Принципы обобщенного программирования (абстрагирование, иерархия, типизация).
- •37. Коллекции и наборы. Обзор коллекций. Интерфейсы коллекций. Классы коллекций общего назначения.
- •38. Классы ArrayList, Queue, Stack. Методы работы с различными структурами данных.
- •39. Динамическая идентификация типов. Проверка типа с помощью ключевого слова is. Использование операторов as, typeof.
- •40. Обобщение. Разработка обобщенных наборов, методов, классов.
- •41. Отражение и атрибуты. Понятие отражения. Класс System.Type. Получение информации о методах и типах. Атрибуты. Основы применения атрибутов.
- •42.Принципы работы Windows-приложений c пользователем.
- •43. Делегаты. Назначение делегатов. Многоадресатная передача.
- •44. События. Объявление и генерация событий. Реализация обработчиков событий.
- •Объявление события:
- •45.Понятие компонента и компонентной модели, компонентно-ориентированного программирования.
- •46.Принципы и технологии внедрения и связывания объектов. Ос Windows позволяет:
39. Динамическая идентификация типов. Проверка типа с помощью ключевого слова is. Использование операторов as, typeof.
Принципы абстрагирования и иерархии рассмотрены при изучении интерфейсов и коллекций. Динамическая идентификация позволяет распознать тип данных во время выполнения программы. Используется, когда имеется массив объектов базового класса и нужно точно узнать, на объект какого типа указывает ссылка на базовый класс. Или нужно проверить, удачно ли выполнена операция приведения типа. Динамическая идентификация типов также является ключевым компонентом средства Отражение (информация о типе).
В C# динамическую идентификацию типов поддерживают 3 ключевых слова (или 3 оператора): is, as, typeof.
Оператор is записывается в виде: выражение is тип
Тип выражения сравнивается с указанным типом и сравнивается true или false. Если результат ИСТИНА, то выражение можно привести к типу.
Оператор as используется в операции приведения типов, чтобы не генерировать исключения, если попытка была неудачной : выражение as тип
Если приведение типов прошло успешно, то возвращается ссылка на тип, а иначе – нулевая ссылка.
Оператор typeof позволяет получить информацию о типе данных. Формат записи:
Typeof (тип)
40. Обобщение. Разработка обобщенных наборов, методов, классов.
Наборы хранят разные типы данных и для распознавания их типов элементов нужно использовать слова is или as. Особенно, если применять цикл foreach. Это трудоемко. Хотелось бы создавать такие наборы, классы, просто указывая, что в них будут применяться обобщенные типы. Для этого и служит обобщение. Обобщение – типы, которые принимают имена других типов в качестве параметров. Достаточно создать набор данных обобщенного типа и настраивать его на конкретные типы.
В среде .NET Framework есть обобщение для большинства классов наборов. Их эквивалентные обобщения: ArrayList –>List <T>, Queue –> Queue <T>, Stack –> Stack <T>, HashTable
List <T> служит для создания списков объектов, поддерживающих контроль типов.
<T> - для обозначения типов (Type), <K> - для обозначения ключей (Key), <V> - для обозначения значений (Value).
Например, если нужно создать список целых чисел, то нужно объявить объект класса List, указав тип int в качестве параметра. Затем применить метод Add для добавления элементов. Просмотреть элементы можно с помощью цикла foreach, используя индексатор класса.
Разработка обобщенного метода
Разработаем обобщенный метод обмена значениями 2-х переменных. Параметры нужно передавать по ссылке ref, чтобы получить адреса переменных. Разработаем метод классе Figura.
static void Swap <T>(ref T a, ref T b)
{ Console.WriteLine(“Методу Swap передано “+typeof(T));
T x; x=a; a=b; b=x; }
// Проверим в Main():
// 1) Обмен между целыми числами:
int a=8, b=37; Figura.Swap <int> (ref a, ref b); Console.WriteLine(“Числа после обмена: ”+a+”, “+b);
// 2) Обмен между строками:
string st1=”Привет!”, st2=”Скоро сессия!”; Figura.Swap <string> (ref st1, ref st2);
Console.WriteLine(“Строки после обмена: “+st1+”, “+st2);
Разработка обобщенного класса
В проекте Планиметрия разработаем класс Vektor.
class Vektor <T>
{ private T x1, y1, x2, y2;
// Конструктор:
public Vektor (T a, Tb, Tc, T d)
{ x1=a; t1=b; x2=c; y2=d; }
// Обобщенные свойства:
public T Koord_x1
{ get {return x1;}
set {x1=value;}
}
public T Koord_y1
{ get {return y1;}
set {y1=value;}
}
// Аналогично разработать для x2 и y2.
public void Show()
{ Console.WriteLine(“Поля класса имеют тип ”+typeof(T));
Console.WriteLine(“x1=”+x1+”, y1=”+y1+”, x2=“+x2+”, y2=”+y2);
// Проверим в Main():
Vektor <int> v1=new Vektor <int> (5, 8, 0, 1);
v1.Show();
v1.Koord_x1=100;
v1.Koord_y1=200;
v1.Show();