- •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 позволяет:
29. Ссылки на базовый класс и объекты производных классов.
В С# строго соблюдается совместимость типов. Это зн., что ссылочная переменная одного классового типа обычно не может ссылаться на объект другого классового типа. Однако ссылочную переменную базового класса можно присвоить в ссылке на объект производного класса. Важно понимать, что именно тип ссылочной переменной определяет какие члены, каких классов могут быть доступны. Это зн.,что и ссылку на производный класс можно присвоить ссылочной переменной базового класса. Тогда получим доступ только к тем частям, кот. определены базовым классом. Это особенно важно, если в иерархии классов есть классы с конструкторами-копировщиками(конструкторы, кот. в качестве параметра принимают объект своего же класса) . Все перечисления в С# происходят от единого базового класса System. Enum. Конечно же, в этом базовом классе предусмотрены методы, которые могут существеннооблегчить вашу работу с перечислениями. Первый метод, о котором необходимо упомянуть, — это статический метод GetUnderlyi ngType ( ) , который позволяет получить информацию о том, какой тип данных используется для представления числовых значений элементов перечисления:// Получаем тип числовых данных перечисления (в нашем примере это будет System. yte)Console.WriteLineCEnum. GetUnderlyi ngType(typeof(EmpType))); Кроме того, вы можете получать значимые имена элементов перечисления по их числовым значениям. Эту работу за вас выполняет статический метод Enum . Format ( ) .В нашем примере переменной типа EmpType соответствовало имя элемента перечисления Contractor (то есть эта переменная разрешалась в числовое значение 100).Для того чтобы узнать, какому элементу переменной соответствует это числовое значение, необходимо вызвать метод Enum. Format, указать тип перечисления, числовое значение (в нашем случае через переменную) и флаг форматирования (в нашем случае — G, что означает вывести как тип string, можно использовать также флаги х — шести адцатеричное значение и d — десятичное значение):// Этот код должен вывести на системную консоль строку "You are a Contractor EmpType fred:fred a EmpType. Contractor;Console. UriteLineC'You are a {0}. Enum. Format (typeof( EmpType), fred. "G"));В System . Enum предусмотрен еще один полезный статический метод — GetVal uesO. Этот метод возвращает экземпляр System. Array, при этом каждому элементу массива будет соответствовать член указанного перечисления.
30. Виртуальные методы и их переопределение.
Виртуальным наз.метод, объявленный с помощью слова virtual в базовом классе и переопределяемый в одном или нескольких производных классах. Каждый производный класс может иметь свою собственную версию реализации виртуального метода. Именно ч-з ссылку на базовый класс будет вызываться необходимая версия виртуального метода. По типу объекта, на который указывает ссылка, и вызывается нужный метод. Причем решение принимается динамически, т.е.во время выполнения программы. При определении виртуального метода пишут: public virtual <тип возврата>Имя метода(…){ … } При переопределении вирт.метода в производном классе пишут public override <тип возврата>Имя метода(…){…} Переопределение метода наз.замещением метода. Примечания: 1.при переопределении метода сигнатуры(списки параметров) и типы возвратов у вирт.метода и метода-заменителя должны совпадать. 2.вирт. метод нельзя определять как static-метод 3.вирт.метод переопределять не обязательно. В этом случае будет выполняться версия определенная в базовом классе . 4.свойства можно разрабатывать со словом virtual, а затем с помощью слова override переопределять их в производном классе. Переопределение вирт.метода –основа для одной из самых мощных концепций С#: динамической диспетчеризации метода. – это механизм метода во время выполнения программы, а не в период компиляции. Благодаря такому механизму реализ-ся: динамический полиморфизм и наследование. Сочетая наследование с возможностью переопределения методов в базовом классе можно определить общую форму методов, кот.будет использ. Производными классами. Например, в классе Figura можно разработать вирт. методы Площадь и Периметр, и переопределять их в производных классах.