- •Предисловие
- •1 Среда визуального программирования visual studio.Net
- •1.1 Введение в объектно - ориентированное программирование
- •1.2 Понятие о событийном управлении Windows
- •1.3 Основные окна среды Visual Studio.Net
- •1.4 Основные структурные элементы разработки проекта c#
- •1.5 Пример первой учебной программы
- •2.1 Технология визуального проектирования форм
- •1.6 Вопросы для самопроверки
- •2 Элементы управления
- •2.2 Элементы управления панели Toolbox
- •2.3 Пример использования элементов управления
- •2.4 Вопросы для самопроверки
- •3 Графический интерфейс языка c#
- •3.1 Пространство имен System.Drawing
- •3.2 Класс Graphics
- •3.3 Пример программной реализации
- •3.4 Вопросы для самопроверки
- •4 Использование меню в приложении
- •4.1 Меню программы
- •4.2 Создание инструментальной панели приложения
- •4.3.Вопросы для самопроверки
- •5 Использование диалоговых меню
- •5.1 Обработчики событий для работы с матрицей
- •5.2 Обработчик событий для открытия файла
- •5.3 Обработчик событий для записи в файл
- •5.4 Обработчик событий для работы с текстом
- •5.5 Вопросы для самопроверки
- •6 Многооконные приложения
- •6.1 Создание «кнопочной» главной формы
- •6.2 Добавление новых форм приложения
- •6.3 Обработчики событий главной формы
- •6.4 Табличная форма представления и редактирования значений
- •6.5 Графическая форма представления прямоугольников
- •6.6 Вопросы для самопроверки
- •7. Понятие класса
- •7.1 Понятие класса
- •7.2 Состав класса
- •7.3 Методы класса
- •7.4 Структура объекта
- •7.5 Пример учебной программы
- •7.6 Доступ к полям
- •7.7 Вопросы для самопроверки
- •1 Понятие класса?
- •8 Элементы классов
- •8.1 Конструкторы
- •8.2 Деструкторы
- •8.3 Свойства
- •8.4 Параметр по ссылке this
- •8.5 События класса
- •8.6 Перегрузка операций класса
- •8.7 Вопросы для самопроверки
- •9 Принципы ооп
- •9.1 Понятие инкапсуляции
- •9.2 Понятие наследования
- •9.3 Вопросы для самопроверки
- •10 Принцип полиморфизма
- •10.1 Понятие полиморфизма
- •10.2 Пример статического наследования методов
- •10.3 Пример динамического наследования методов
- •10.4 Вопросы для самопроверки
- •11 Использование интерфейсов
- •11.1 Понятие интерфейса
- •11.2 Синтаксис интерфейса
- •11.3 Использование стандартного интерфейса iEnumerable
- •11.4 Вопросы для самопроверки
- •12 Композиция и коллекция классов
- •12.1 Понятие композиции и коллекции класса
- •12.2 Пример использования композиции и коллекции класса
- •12.3 Некоторые коллекции Framework
- •12.4 Коллекция ArrayList
- •12.5 Вопросы для самопроверки
- •13 Делегаты
- •13.1 Понятие делегата
- •13.2 Описание делегата
- •13.3 Пример использования делегата
- •13.4 Совместимость делегатов
- •13.5 Методы базовых классов делегатов
- •13.6 Вопросы для самопроверки
- •14 События
- •14.1 Понятие события
- •14.2 Некоторые часто используемые события среды Visual Studio.Net
- •14.3 Пример использования стандартных событий классов
- •14.4 Нестандартные события классов
- •14.5 Вопросы для самопроверки
- •Приложение а Ответы на вопросы для самопроверки
- •1 Понятие класса?
- •Предметный указатель
- •Список литературы
10.4 Вопросы для самопроверки
1 Какой класс является базовым классом в иерархической цепочке всех классов языка C#?
2 Какой объект базового или производного классов создается раньше при вызове конструктора производного класса?
3 В чем преимущество цепочек наследуемых классов?
4 Что означает статическое наследование в языке C#?
5 Что означает динамическое наследование в языке C#?
6 Понятие полиморфизма в языке C#?
7 Как реализуется механизм полиморфизма?
8 Как называется метод, объект для которого определяется во время работы программы?
9 Какой класс в языке C# называется абстрактным базовым классом?
10 Что представляет собой таблица виртуальных методов?
11 Использование интерфейсов
11.1 Понятие интерфейса
Слово "интерфейс" - многозначное, и в разных контекстах оно имеет различный смысл. Существует понятие программного или аппаратного интерфейса, но в большинстве случаев слово интерфейс ассоциируется с некоторой связью между объектами или процессами. В данной лекции речь идет о понятии интерфейса, стоящем за ключевым словом interface. В таком понимании интерфейс - это частный случай класса.
Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны.
От абстрактного класса интерфейс отличается некоторыми деталями в синтаксисе и поведении.
Синтаксическое отличие состоит в том, что методы интерфейса объявляются без указания модификатора доступа.
Отличие в поведении заключается в более жестких требованиях к потомкам. Класс, наследующий интерфейс (интерфейсный класс), обязан полностью реализовать все методы интерфейса. В этом отличие от класса, наследующего абстрактный класс, где потомок может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом.
Важное отличие интерфейсного класса от обычного класса заключается в том, что он может наследовать несколько родительских интерфейсов. Таким образом, в С# разрешено множественное наследование, но только в интерфейсных классах.
Родительские интерфейсы перечисляются в списке за именем класса и двоеточием:
public interface INewClass: IInt1, IInt2, ..., IIntN
{ . . .}
Такого рода интерфейсные классы обязаны содержать реализации всех методов всех родительских интерфейсов.
Замечу, что интерфейсный класс может наследовать не только от интерфейсов, но и от одного (и только одного!) обычного класса, по отношению к которому он ведет себя как обычный наследник, то есть может переопределять его методы, добавлять поля и т. д.
Множественное наследие потенциально связано с возможностью конфликта имен и наличием общего родителя. Конфликт имен проявляется в том, что разные родительские интерфейсы могут содержать одноименные методы с одинаковым синтаксисом.
Поскольку интерфейсный класс обязан реализовывать все методы своих родительских интерфейсов, возникает коллизия, которую можно разрешить одним из следующих способов.
Склеивание методов. В этом случае интерфейсный класс полагает, что у всех одноименных методов должна быть одинаковая программная реализация, и объявляет этот единственный метод для реализации всех одноименных методов своих родителей.
Переименование методов. Если реализация одноименных методов должна быть различной, методы переименовываются.
Отметим еще одно важное назначение интерфейсов, отличающее их от абстрактных классов. Абстрактный класс представляет собой начальный этап проектирования класса, который в будущем получит конкретную реализацию. Интерфейсы задают дополнительные свойства классу. Каждый интерфейс наделяет класс тем или иным новым свойством.
