
- •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 позволяет:
31. Абстрактные классы.
Иногда создают класс, определяющий своего рода пустой бланк. Производные классы этого базового класса должны «заполнить» бланк своей инфо. Такой класс не обеспечивает реализацию одного или нескольких методов. Он просто говорит о том, что будет метод с таким-то именем. Можно заставить производные классы переопределить методы, кот.в базовом не имеют никакого смысла. Для этого и служат абстрактные методы, кот.записываются: abstract Тип возврата Имя_ метода(сигнатуры);
абстрактный метод не содержит тела и, следовательно, не реализуется базовым классом. Поэтому производный класс должен его переопределить. Абстр.метод автоматически явл.виртуальным. поэтому virtual писать не надо. Примечание: 1.модификатор abstract использ. только для обычных методов, а не для static-методов. 2.свойства также могут быть абстрактными. 3.класс, содержащий 1 или несколько абстрактных методов д.б. объявлен как абстрактный (перед Class- abstract) 4.нельзя создавать объекты абстрактного класса,т.к. он полностью нереализуем.
Переопределение методов класса Object. Class Object явл.неявным базовым классом всех других классов и типов данных(int,long). Это зн., что переменные типа Object может указывать на объект любого типа. Этот класс имеет несколько методов. Например, метод Equals(Object Ob1, Object Ob2) определяет: является ли объект Ob1 таким же как объект Ob2, но он для получения результата вызывает перегруженный метод Equals (Object Ob), кот.определяет является ли вызывающий таким же как объект parameter, а точнее являются ли ссылки вызывающего объекта и объекта-аргумента одинаковыми. Когда сравниваются(==,!=) 2 объекта, то вызывается метод Equals из базового класса. По умолчанию он не знает объект какого класса к нему поступил. Поэтому в производном классе, где будут операторы сравнения, нужно переопределить методы Equals и GetHashCode() public override bool Equals(Object Ob)
{ if (!(Ob is Point)) return false; else return this==(Point)Ob; } Роль метода GetHashCode(): возвратить числовое значение, кот. идентифицирует объект в памяти в зависимости от его состояния. Если объекты по содержанию одинаковы, то у них будет одинаковый GetHashCode public override int GetHashCode()
{return ToString().GetHashCode(); }
32. Понятие интерфейса. Определение интерфейса.
В ООП иногда требуется определить, что класс должен делать?, а не как он будет делать. Один из механизмов реализации этой идеи – это абстрактные методы. Абстрактный метод определяет лишь сигнатуру, но не обеспечивает его реализацию. Т.о. абстрактный метод задает интерфейс для метода, но не способ его реализации, идея абстрактных классов и методов развив-ся далее путем отделения интерфейса класса от его реализации. Для этой цели и служат интерфейсы. интерфейсы позволяют объектам быть более обобщенными и гибкими. Класс может содержать ссылку на другой класс. Напр., в классе Otrezok им. ссылка Point B=new Point(); такое простое отношение наз. отношение СОДЕРЖИТ. Один класс может расширять другой класс с помощью наследования – это отношение ЯВЛЯЕТСЯ. Еще одно отношение МОЖЕТ_ИСПОЛЬЗОВАТЬСЯ_КАК. Интерфейс можно рассм.как класс-сервер, а др. классы, использующие его – классы-клиенты. Интерфейсы напоминают абстрактные классы, у кот.все члены явл. абстрактными, интерф. может сод-ть только объявления событий, методов, св-в и индексаторов, а их реализация должна нах-ся в классе, кот. реализует интерф. Интерф. не сод.констант, членов переменных, конструкторов, деструкторов и стат.членов. Когда интерф. определен, его может реализовать любое кол-во классов.при этом один класс может реализовать любое кол-во интерф. если какой-то метод интерф. не будет иметь реализацию, то компилятор выдаст ошибку. Кажд. член может определить собств.реализацию. Определение интерфейса. Интерф. Опред-ся с пом. Ключ. слова interface. Все члены интерф. по умолчанию счит-ся открытыми (public). Интерф. созд-ся в отдельных файлах .cs. меню Project-Add New Item-interface. Чтобы отличить интерф. от классов интерф. имеет префикс I. Форма определения: interface имя {Тип _возврата Имя_метода1(список параметров); Тип _возврата Имя_метода2(список параметров); //могут быть св-ва, события, индексаторы}.