1.
| Объектно-ориентированное программирование. Принципы и реализация в современных языках программирования.
|
2.
| Язык программирования C#. Предпосылки появления, история развития. Ключевые особенности. Связь с другими языками программирования.
|
3.
| Структура класса. Общий вид определения класса. Создание объектов. Оператор new. Особенности работы с переменными ссылочного типа.
|
4.
| Методы класса. Вызов метода. Возврат значения из метода. Параметры метода. Ключевое слово this. Использование модификаторов ref, out и params.
|
5.
| Конструкторы. Определение конструктора. Инициализация объекта с помощью конструктора класса. Специальные конструкторы и конструкторы по умолчанию. Перегрузка конструкторов и методов класса.
|
6.
| Модификатор static, назначение и использование. Статические методы, поля и конструкторы класса. Статические классы.
|
7.
| Константные поля. Поля, доступные только для чтения. Понятие частичных типов. Примеры использования.
|
8.
| Принципы инкапсуляции в классах. Управление доступом к членам класса. Спецификаторы доступа: public, private, protected, internal, protected internal. Применение спецификаторов доступа. Инкапсуляция с использованием методов чтения/записи.
|
9.
| Свойства как элемент класса. Определение свойств. Инкапсуляция с использованием свойств. Свойства, доступные только для записи и только для чтения. Статические и автоматические свойства.
|
10.
| Основы наследования. Доступ к членам класса и наследование. Использование защищенного доступа. Ключевое слово base. Конструкторы и наследование. Сокрытие имен при наследовании.
|
11.
| Создание многоуровневой иерархии. Запечатанные классы. Последовательность вызова конструкторов. Ссылки на базовый класс и объекты производных классов. Ключевые слова is/as.
|
12.
| Понятие полиморфизма. Поддержка полиморфизма в языке C#. Ключевые слова virtual и override. Виртуальные методы и их переопределение. Запечатывание виртуальных методов.
|
13.
| Абстрактный класс, определение и назначение. Полиморфный интерфейс.
|
14.
| Интерфейсы, определение и реализация. Интерфейсные свойства и индексаторы. Иерархии интерфейсов.
|
15.
| Конфликты имен при реализации интерфейсов. Явная реализация членов интерфейса. Закрытая реализация.
|
16.
| Перечисления. Инициализация перечислений. Базовые типы перечисления. Использование перечислений.
|
17.
| Понятие UML. Представление классов средствами UML. Схема описания встроенных атрибутов и операций класса.
|
18.
| Характеристики атрибутов в UML: производность, множественность, упорядоченность и уникальность. Запись атрибутов с использованием отношений.
|
19.
| Ограничения, накладываемые на атрибуты и операции. Статические атрибуты и операции.
|
20.
| Отношения между классами: зависимость, ассоциация, агрегирование, композиция и обобщение. Интерфейсы и шаблоны в нотации UML. Абстрактные классы.
|
21.
| Основы перегрузки операторов. Перегрузка бинарных операторов. Перегрузка унарных операторов.
|
22.
| Перегрузка операторов отношений, true и false, логических операторов. Операторы преобразования.
|
23.
| Делегаты. Определение и назначение делегатов. Преимущества использования делегатов. Инстанцирование и вызов делегатов.
|
24.
| Использование анонимных и лямбда-функций при определении делегатов. Ковариация и контрвариация.
|
25.
| Использование статических методов и методов экземпляра класса. Класс System. Delegate. Определение и использование многоадресного делегата.
|
26.
| События. Определение и свойства событий. Стандарты генерирования и обработки событий в. NET Framework.
|
27.
| Средства ввода-вывода. Байтовые и символьные потоки. Классы потоков. Стандартные потоки (входной, выходной, поток сообщений об ошибках). Перенаправление стандартных потоков.
|
28.
| Байтовые классы потоков. Класс FileStream и файловый ввод-вывод.
|
29.
| Символьные классы потоков. Использование класса StreamWriter. Использование класса StreamReader.
|
30.
| Двоичные потоки. Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
|