- •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 позволяет:
27.Наследование. Базовые и производные классы. Доступы к членам базовых классов.
Наследование является одним из фундаментальных понятий объектно-ориентированных систем. Под этим термином понимают возможность передачи данных и средств исполнения от родительского объекта. Вместо того, чтобы создавать новый объект с самого начала используют уже готовый объект и дополняют его теми средствами, которые необходимы. Т.о.наследование упрощает многократное использование программного кода.
Наследование бывает 2-х видов:
-классическое(отношение подчиненности); -модель локализации\диллегирования(объект уже не явл. уточненной версией др.объекта, а содержит в себе этот объект); Наследование часто применять не нужно, а лишь там, где оно оправдано. Класс, который наследуется, называется базовым; который наследует базовый – производным. Следовательно, производный класс – специализированная версия базового класса. При объявлении производного класса сначала записывается Имя_ производного класса: Имя_ базового. Для создаваемого производного класса можно указать только один базовый класс. В С# в отличии от С++ не поддерживается наследование нескольких базовых классов в одном производном. Однако, можно создать иерархию наследования, в кот.один производный класс становится базовым для другого производного. В С# множественное наследование реализуется через интерфейс. Доступы к членам классов и наследования. В классах проекта Figura поля класса объявлены как public. Здесь нарушен принцип инкапсуляции. Можно эти поля объявить как private, но тогда производные классы не получат доступа к ним. Есть 2 способа решения проблемы доступа к закрытым членам базового класса: 1) использовать public-свойства или методы, позволяющие получить доступ к закрытым членам базового класса; 2) использовать уровень доступа protected(защищен). Использование защищенного доступа. Защищенным явл. член класса, кот. открыт для своей иерархии класса, но закрыт вне этой иерархии. Защищенный член класса создается с помощью модификатора доступа protected. По сути он явлю закрытым, но с одним исключением. Это исключение вступает в силу, когда защищенный член класса наследуется. В этом случае защищенный член базового класса становится защищен. членом производного класса, а следовательно доступным для производного класса.
28.Конструкторы и наследование (проект «Наследование»).
И базовые классы, и производные классы могут иметь собственные конструкторы. Какой же конструктор отвечает за создание объекта производного класса? Конструктор базового класса создает часть объекта соответствующую базовому классу, а конструктор производного класса создает часть объекта соотв.производному классу. Если конструктор определен только в производном классе, то просто создается объект производного класса. Если конструкторы определены и в базовом, и в производном, то должны выполнятся конструкторы обоих классов. В этом случае используют ключевое слово base, кот. имеет 2 назначения: -вызвать конструктор базового класса; -получить доступ к членам базового класса.
Формат объявления: Конструктор_производного_класса(Список параметров): base (список_аргументов) {//тело конструктора} В списке аргументов задаются параметры из списка производного класса, необходимы конструктору базового класса. Ключевое слово base всегда отсылает к базовому классу, стоящему в иерархии классов непосредственно над вызывающим классом. Чтобы передать аргументы конструктору базового класса, нужно указать их в base ч-з запятую и без типа. При отсутствии слова base автоматически вызывается конструктор базового класса действительно по умолчанию. Если в иерархии классов(Figura-Rectangle-Kwadrat)конструктору базового класса требуются параметры, то все производные классы должны передавать эти параметры независимо от того, нужны ли эти параметры самому производному классу. В иерархии классов конструкторы вызыв-ся в таком порядке: сначала работает конструктор базового класса, а затем конструктор производного класса. Этот порядок не наруш-ся, если использ-ся base,т.к.: базовый класс ничего не знает о производном и он обязан инициализировать свои члены-переменные. -в производном классе тогда можно не инициализировать общие члены-переменные.