- •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 позволяет:
33. Способы реализации интерфейса.
Реализация интерфейса. Чтобы реал-ть интерф. Необх. ч-з двоеточие после имени класса указать имя базового класса «,» имя интерфейса1, имя интерфейса2 и т.д.
Вызов членов интерфейса:
1) на уровне объекта. В Main() метод интерф.вызыв-ся как обычный эл-т класса, например, Console.WriteLine(«количество вершин у точки»+T2.GetTops());
2) выяснить во время работы программы, поддержив-ся ли интерф. каким-то классом можно с пом.as. если объект можно интерпретировать как указанный интерф., будет возвращена ссылка на интерф., если нет – получим null ссылку. Если класс реализует интерф., кот. унаследует другой интерф. , этот класс должен обеспечить способы реализации для всех членов, определенных внутри цепочки наследования интерф.
34.Некоторые станд.Интерфейсы среды .Net Framework.
В С# пр-мах можно исп-ть станд.интерфейсы среды.
#1. IEnumerable и IEnumerator служат для работы с перечислимыми типами. Используются в коллекциях. Опрос содержимого коллекций производится с помощью цикла
foreach elem In Коллекция
{
}
#2. Интерфейс и Cloneable. Служит для создания клонированных объектов. В нем имеется только один метод object Clone();.
#3. ICompareable – создание сравнимых объектов. С помощью этого интерфейса можно определить поведение, позволяющее сортировать объекты по заданному ключу. Например, в классе System.Array имеется метод Sort(Имя_массива), но этот метод сортирует лишь числовые массивы. Если ему передать массив точек, то возникнет ошибка. Нужно для класса Point реализовать интерфейс ICompareable, в котором имеется метод: int CompareTo(object Ob);
Этот метод возвращает –1, если текущий объект размещается ДО текущего объекта; 0 – если текущий объект РАВЕН указанному объекту; 1 – если текущий объект размещается ПОСЛЕ указанного объекта.
Итак, какова же причина появления в ООП (объектно-ориентированном программировании) интерфейсов? Казалось бы, достаточно абстрактных методов и классов. Но абстрактные методы и классы используются лишь при наследовании, где четко нужно знать иерархию базовых классов. Интерфейсы же – это чистый протокол, стандарт, так как в них нет членов-переменных и нет реализации методов, свойств индексаторов. Такой протокол позволяет поддерживать множество вариантов поведения, избегая при этом проблем, возникающих при наследовании. В С# нет множественного наследования, но интерфейсы имитируют множественное наследование.
Еще более важно то, что программирование на основе интерфейсов обеспечивает альтернативный способ реализации полиморфного поведения. Хотя множество структур, классов реализуют один и тот же интерфейс по-разному, можно обращаться со всеми типами (объектами классов) по одной схеме.
35. Механизмы реализации полиморфизма в c#.
Полиморфизм (от греческого слова polymorphism, означающего "много форм") — это качество, которое позволяет одному интерфейсу получать доступ к целому классу действий. Простым примером полиморфизма может послужить руль автомобиля. Руль(интерфейс) остается рулем независимо от того, какой тип рулевого механизма используется в автомобиле. Другими словами, руль работает одинаково в любом случае: оснащен ли ваш автомобиль рулевым управлением прямого действия, рулевым управлением с усилителем или реечным управлением. Таким образом, поворот руля влево заставит автомобиль поехать влево независимо от типа используемого в нем рулевого управления. Достоинство такого единообразного интерфейса состоит, безусловно, в том, что, если вы знаете, как обращаться с рулем, вы сможете водить автомобиль любого типа. Тот же принцип можно применить и к программированию. Рассмотрим, например, стек (stack), т.е. область памяти, функционирующую по принципу "последним пришел — первым обслужен". Предположим, вы пишете программу, для которой нужно организовать три различных типа стека. Один стек предназначен для целочисленных значений, второй — для значений с плавающей точкой, а третий — для символов. В этом случае для реализации каждого стека используется один и тот же алгоритм, несмотря на различие в типах сохраняемых данных. В случае не объектно-ориентированного языка вам пришлось бы создать три набора "стековых" подпрограмм, имеющих различные имена. Но благодаря полиморфизму в среде С# можно создать один общий набор "стековых" подпрограмм, который обрабатывает все три типа стека. Иными словами, зная, как использовать один стек, можно использовать все остальные. Концепцию полиморфизма часто выражают такой фразой: "один интерфейс — много методов". Это означает, что для выполнения группы подобных действий можно разработать общий интерфейс. Полиморфизм позволяет понизить степень сложности программы, предоставляя программисту возможность использовать один и тот же интерфейс для задания общего класса действий. Конкретное (нужное в том или ином случае) действие (метод) выбирается компилятором. Программисту нет необходимости делать это вручную. Его задача — правильно использовать общий интерфейс.