- •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.Элементы управления формы
25.Конструкторы и наследование.
И базовые классы, и производные классы могут иметь собственные конструкторы. Какой же конструктор отвечает за создание объекта производного класса? Конструктор базового класса создает часть объекта соответствующую базовому классу, а конструктор производного класса создает часть объекта соотв.производному классу. Если конструктор определен только в производном классе, то просто создается объект производного класса. Если конструкторы определены и в базовом, и в производном, то должны выполнятся конструкторы обоих классов. В этом случае используют ключевое слово base, кот. имеет 2 назначения: -вызвать конструктор базового класса; -получить доступ к членам базового класса. Формат объявления: Конструктор_производного_класса(Список параметров): base (список_аргументов) {//тело конструктора} В списке аргументов задаются параметры из списка производного класса, необходимы конструктору базового класса. Ключевое слово base всегда отсылает к базовому классу, стоящему в иерархии классов непосредственно над вызывающим классом. Чтобы передать аргументы конструктору базового класса, нужно указать их в base ч-з запятую и без типа. При отсутствии слова base автоматически вызывается конструктор базового класса действительно по умолчанию. Если в иерархии классов(Figura-Rectangle-Kwadrat)конструктору базового класса требуются параметры, то все производные классы должны передавать эти параметры независимо от того, нужны ли эти параметры самому производному классу. В иерархии классов конструкторы вызыв-ся в таком порядке: сначала работает конструктор базового класса, а затем конструктор производного класса. Этот порядок не наруш-ся, если использ-ся base,т.к.: базовый класс ничего не знает о производном и он обязан инициализировать свои члены-переменные. -в производном классе тогда можно не инициализировать общие члены-переменные.
26.Ссылки на базовый класс и объекты производных классов.
В С# строго соблюдается совместимость типов. Это зн., что ссылочная переменная одного классового типа обычно не может ссылаться на объект другого классового типа. Однако ссылочную переменную базового класса можно присвоить в ссылке на объект производного класса. Важно понимать, что именно тип ссылочной переменной определяет какие члены, каких классов могут быть доступны. Это зн.,что и ссылку на производный класс можно присвоить ссылочной переменной базового класса. Тогда получим доступ только к тем частям, кот. определены базовым классом. Это особенно важно, если в иерархии классов есть классы с конструкторами-копировщиками(конструкторы, кот. в качестве параметра принимают объект своего же класса)
Все перечисления в С# происходят от единого базового класса 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, при этом каждому элементу массива будет соответствовать член указанного перечисленияю