- •1. Эволюция языков программирования. Что такое net?
- •Internet и появление языка Java.
- •2.Компоненты платформы net.
- •3.Модель выполнения приложения в среде .Net Framework. Промежуточный язык Microsoft (Microsoft Intermediate Language, msil). Сборки.
- •4. Обзор встроенных типов данных c#. Применение встроенной функциональности типов данных.
- •5.Операции ввода/вывода. Формат вывода. Пространство имён System. Класс System.Math.
- •6.Операции, операторы и выражения в c# .
- •Операторы
- •7. Массивы в c# (одномерные и двумерные). Класс System.Random, применение его методов для создания массива случайных чисел. Класс System.Array, использование его методов и свойства Length.
- •8. Структуры в c#, создание структуры.
- •9. Понятие объектно-ориентированного программирования.
- •10. Классы в c#. Члены класса: методы, поля, свойства и события. Форма определения класса.
- •11. Типы значений и ссылочные типы. Динамическое использование памяти: стеки и кучи. Упаковка и распаковка.
- •12. Конструкторы и деструкторы. Сборка «мусора».
- •13. Определение пользовательских методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов. Модификаторы ref, out, params параметров методов.
- •14. Возвращение методами объектов класса. Возвращение методами массивов.
- •15. Общие (статические) члены класса. Доступ к общим членам. Ограничения на static-методы.
- •Ограничения на static-методы.
- •16.Область видимости и время существования переменных. Преобразование и приведение типов.
- •17.Обработка исключительных ситуаций.
- •18.Перегрузка методов. Перегрузка конструкторов.
- •19.Перегрузка операторов. Перегрузка бинарных, унарных и операторов отношений.
- •20. Инкапсуляция и свойства. Формат записи свойств.
- •21.Индексаторы. Специальные приемы построения типов. Создание одномерного индексатора.
- •22.Создание двумерного индексатора.
- •23.Механизмы реализации инкапсуляции в c#.
- •24.Базовые классы и наследование. Доступы к членам классов.
- •25.Конструкторы и наследование.
- •26.Ссылки на базовый класс и объекты производных классов.
- •27.Виртуальные методы и их переопределение.
- •28.Использование абстрактных классов.
- •29.Механизмы реализации полиморфизма в c#.
- •30.Интерфейсы. Реализация интерфейсов. Стандартные интерфейсы среды .Net Framework.
- •31.Коллекции. Классы коллекций общего назначения.
- •32.Делегаты. Назначение делегатов. Многоадресатная передача.
- •33.События. Объявление и генерация событий. Реализация обработчиков событий
- •34.Обзор технологий программирования Windows-приложений.
- •35.Архитектура Windows Forms. Класс Form.
- •36.Элементы управления формы
29.Механизмы реализации полиморфизма в c#.
Полиморфизм (от греческого слова polymorphism, означающего "много форм") — это качество, которое позволяет одному интерфейсу получать доступ к целому классу действий. Простым примером полиморфизма может послужить руль автомобиля. Руль(интерфейс) остается рулем независимо от того, какой тип рулевого механизма исполь-зуется в автомобиле. Другими словами, руль работает одинаково в любом случае: оснащен ли ваш автомобиль рулевым управлением прямого действия, рулевым управлениемс усилителем или реечным управлением. Таким образом, поворот руля влево заставит автомобиль поехать влево независимо от типа используемого в нем рулевого управления. Достоинство такого единообразного интерфейса состоит, безусловно, в том, что, если вы знаете, как обращаться с рулем, вы сможете водить автомобиль любого типа.Тот же принцип можно применить и к программированию. Рассмотрим, например, стек (stack), т.е. область памяти, функционирующую по принципу "последним пришел — первым обслужен". Предположим, вы пишете программу, для которой нужно организовать три различных типа стека. Один стек предназначен для целочис ленных значений, второй — для значений с плавающей точкой, а третий — для символов. В этом случае для реализации каждого стека используется один и тот же алгоритм, несмотря на различие в типах сохраняемых данных. В случае не объектно-ориентированного языка вам пришлось бы создать три набора "стековых" подпрограмм, имеющих различные имена.Но благодаря полиморфизму в среде С# можно создать один общий набор "стековых" подпрограмм, который обрабатывает все три типа стека. Иными словами, зная, как использовать один стек, можно использовать все остальные.Концепцию полиморфизма часто выражают такой фразой: "один интерфейс —много методов". Это означает, что для выполнения группы подобных действий можноразработать общий интерфейс. Полиморфизм позволяет понизить степень сложности программы, предоставляя программисту возможность использовать один и тот же интерфейс для задания общего класса действий. Конкретное (нужное в том или ином случае) действие (метод) выбирается компилятором. Программисту нет необходимости делать это вручную. Его задача — правильно использовать общий интерфейс.
30.Интерфейсы. Реализация интерфейсов. Стандартные интерфейсы среды .Net Framework.
В ООП иногда требуется определить, что класс должен делать?, а не как он будет делать. Один из механизмов реализации этой идеи – это абстрактные методы. Абстрактный метод определяет лишь сигнатуру, но не обеспечивает его реализацию. Т.о. абстрактный метод задает интерфейс для метода, но не способ его реализации, идея абстрактных классов и методов развив-ся далее путем отделения интерфейса класса от его реализации. Для этой цели и служат интерфейсы. интерфейсы позволяют объектам быть более обобщенными и гибкими. Класс может содержать ссылку на другой класс. Напр., в классе Otrezok им. ссылка Point B=new Point(); такое простое отношение наз. отношение СОДЕРЖИТ. Один класс может расширять другой класс с помощью наследования – это отношение ЯВЛЯЕТСЯ. Еще одно отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК. Интерфейс можно рассм.как класс-сервер, а др. классы, использующие его – классы-клиенты. Интерфейсы напоминают абстрактные классы, у кот.все члены явл. абстрактными, интерф. может сод-ть только объявления событий, методов, св-в и индексаторов, а их реализация должна нах-ся в классе, кот. реализует интерф. Интерф. не сод.констант, членов переменных, конструкторов, деструкторов и стат.членов. Когда интерф. определен, его может реализовать любое кол-во классов.при этом один класс может реализовать любое кол-во интерф. если какой-то метод интерф. не будет иметь реализацию, то компилятор выдаст ошибку. Кажд. член может определить собств.реализацию.
Определение интерфейса. Интерф. Опред-ся с пом. Ключ. слова interface. Все члены интерф. по умолчанию счит-ся открытыми (public). Интерф. созд-ся в отдельных файлах .cs. меню Project-Add New Item-interface. Чтобы отличить интерф. от классов интерф. имеет префикс I. Форма определения: interface имя {Тип _возврата Имя_метода1(список параметров); Тип _возврата Имя_метода2(список параметров); //могут быть св-ва, события, индексаторы} Реализация интерфейса. Чтобы реал-ть интерф. Необх. ч-з двоеточие после имени класса указать имя базового класса «,» имя интерфейса1, имя интерфейса2 и т.д. Вызов членов интерф. 1.на уровне объекта. В Main() метод интерф.вызыв-ся как обычный эл-т класса, например, Console.WriteLine(«количество вершин у точки»+T2.GetTops()); 2.выяснить во время работы программы, поддержив-ся ли интерф. каким-то классом можно с пом.as. если объект можно интерпретировать как указанный интерф., будет возвращена ссылка на интерф., если нет – получим null ссылку. Если класс реализует интерф., кот. унаследует другой интерф. , этот класс должен обеспечить способы реализации для всех членов, определенных внутри цепочки наследования интерф.
Станд.интерфейсы среды .NET Framework. В С# пр-мах можно исп-ть станд.интерфейсы среды. например,
1. IEnumerable и IEnumerator – служат для работы с перечислимыми типами: перечень названий шрифтов, набор размеров, начертаний шрифтов. Перечисления применяются при работе с коллекциями. For each in Коллекция.
2. ICloneable –служат для создания планируемых объектов. Интерф. ICloneable содержат только один метод: Object Clone(); его назнач. – копировать значения членов-переем. какого-то объекта в новый экземпляр объекта и возвращать этот экземпляр.
3. ICompanable (создание сравнимых объектов). В нем имеется метод int ConpareTo(object Ob); Он позволяет указать связь между объектами Ob и др.подобными объектами, если метод возвращает единицу, то текущий объект должен размещаться после указанного объекта. Если метод возвращает 0, то текущий объект равен указанному объекту; если - -1, то такой объект разм-ся пред указанным объектом.