- •Предисловие
- •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 Понятие класса?
- •Предметный указатель
- •Список литературы
1 Понятие класса?
Продолжение приложения А
Класс это тип данных, содержащий поля, методы и события.
2 Понятие свойства класса?
Это совокупность методов, позволяющих классу обмениваться (читать или записывать) значениями полей класса с другими классами программы.
3 Понятие конструктора класса?
Это специальные методы класса, которые предназначены для создания объектов класса и присваивания начальных значений полям класса.
4 Понятие деструктора класса?
Это специальные методы, определяющие порядок действий при освобождении ресурсов, выделенных объекту.
5 Понятие события класса?
Это специальные методы, позволяющие классу реагировать на действия пользователя или на определенные изменения в программе.
6 Понятие индексатора класса?
Это средство доступа к элементам данных класса (обычно массивам) по их порядковому номеру.
7 Назначение поля this объекта?
Это ссылка на адрес текущего объекта, которая позволяет методам класса работать с полями текущего объекта.
8 Как называют переменную типа класс?
Переменную типа класс обычно называют объектом.
9 Что означает служебное слово static в описании класса?
Это указание, что программа может использовать класс и его элементы, не создавая переменной этого класса (объекта класса).
10 Что означает служебное слово public в описании данных класса?
Начало описания данных открытых для доступа из программы.
ЭЛЕМЕНТЫ КЛАССОВ
1 Для чего предназначен конструктор с умолчанием?
Он создает объект и полям объекта присваивает некоторые фиксированные значения.
2 Для чего предназначен конструктор с заданием параметров?
Он создает объект и полям объекта присваивает задаваемые значения.
3 Как называется процесс определения нескольких методов с одинаковыми именами?
Перегрузкой методов.
4 Как называются несколько конструкторов одного класса?
Множественные конструкторы.
5 Когда вызывается деструктор класса tka?
Он вызывается автоматически сборщиком мусора при удалении объекта из кучи.
6 Как обычно называется метод, если тип его возвращаемого значения объявлен void?
Процедура.
Продолжение приложения А
7 Как должен заканчиваться в языке С# метод если его тип не void?
Работа метода должна заканчиваться выполнением Оператора return.
8 Какие формальные параметры метода С# называются параметры-ссылки?
Формальные параметры, перед которыми стоит слово ref.
9 Как называется объединение в одной структуре полей и методов их обработки?
Инкапсуляция.
10 Какой механизм используется в классах для доступа к «закрытым» полям класса?
Свойства.
ПРИНЦИПЫ ООП
1 Как один объект может информировать другой объект об изменении своего состояния?
С помощью механизма событий.
2 Как называется объект, информирующий другой объект об изменении своего состояния?
Источник события.
3 Как формируется «пустой» обработчик некоторого события?
В окне свойств на странице событий необходимо дважды кликнут в соответствующей строке.
4 Какой обработчик события будет сформирован, если на форме дважды кликнут на кнопку button1?
private void button1_Click(object sender, EventArgs e)
5 Для чего используется перегрузка операций в классах?
Она позволяет использовать в обычных математических выражениях переменный типа класс.
6 Понятие наследования?
Наследование это способность производного класса использовать некоторые свойства, данные и методы базового класса.
7 Что является целью наследования классов?
Целью наследования является повторное использование уже созданных классов.
8 Как называется класс, свойства, данные и методы которого наследуются другим классом?
Базовый класс.
9 Как называется класс, наследующий свойства, данные и методы базового класса?
Производный класс.
10 На чем базируется объектно-ориентированное программирование?
На принципах инкапсуляции, наследовании и полиморфизме.
ПРИНЦИП ПОЛИМОРФИЗМА
Продолжение приложения А
1 Какой класс является базовым классом в иерархической цепочке всех классов языка C#?
System.Object.
2 Какой объект базового или производного классов создается раньше при вызове конструктора производного класса?
Объект базового класса.
3 В чем преимущество цепочек наследуемых классов?
Наследование последнего класса в такой цепочке позволяет получить в свое распоряжение поля, свойства и методы всех классов цепочки.
4 Что означает статическое наследование в языке C#?
Наследование, в котором связи между объектами определяются в процессе компиляции программы.
5 Что означает динамическое наследование в языке C#?
Наследование, в котором связи между объектами определяются в процессе выполнения программы.
6 Понятие полиморфизма в языке C#?
Полиморфизм это многообразие форм реализации одноименных методов в цепочке наследуемых классов.
7 Как реализуется механизм полиморфизма?
Механизм полиморфизма реализуется за счет перекрытие одноименных методы базовых классов.
8 Как называется метод, объект для которой определяется во время работы программы?
Такой метод называется виртуальным.
9 Какой класс в языке C# называется абстрактным базовым классом?
Класс, для которых создание объектов невозможно.
10 Что представляет собой таблица виртуальных методов?
Специальная таблица, в которой находятся все виртуальные методы и адреса их точек входа.
ИСПОЛЬЗОВАНИЕ ИНТЕРФЕЙСОВ
1 Понятие интерфейса?
Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны.
2 В чем отличие наследования интерфейсного класса от обычного наследования?
Класс, наследующий интерфейс (интерфейсный класс), обязан полностью реализовать все методы интерфейса.
3 В чем отличие интерфейсного класса от обычного класса?
Для интерфейсного класса в С# разрешено множественное наследование.
4 Почему в интерфейсных класса возможно появление конфликтов в названиях имен?
Продолжение приложения А
Конфликт имен может проявляться при множественном наследовании, потому что разные родительские интерфейсы могут содержать одноименные методы с одинаковым синтаксисом.
5 Как можно решать конфликт имен при множественном наследовании?
Один из способов решения конфликта имен при множественном наследовании заключается в склеивание методов .
6 В чем суть склеивание методов?
В интерфейсном классе у всех одноименных методов должна быть одинаковая программная реализация, которая объявляется как единственная для всех одноименных методов своих родителей.
7 В чем суть переименования методов?
Это один из способов решения конфликта имен при множественном наследовании, при этом одноименных методов родительских интерфейсов переименовываются. Для каждого «нового» метода записывается своя реализация.
8 В чем преимущество интерфейсов?
Интерфейсы задают дополнительные свойства классу. Каждый интерфейс наделяет класс тем или иным новым свойством.
9 Какой тип могут иметь интерфейсы?
У интерфейсов нет типов.
10 Какое служебное слово используется при объявлении интерфейса?
При объявлении интерфейса перед именем класса необходимо использовать служебное слово interface.
КОМПОЗИЦИЯ И КОЛЛЕКЦИЯ КЛАССОВ
1 Понятие композиции классов?
Если некоторый класс, в своих полях данных, использует объекты другого класса, то такое объединение классов называется композицией.
2 В чем основная цель композиции классов?
Композиция классов это один из способов повторного использования ранее написанных фрагментов программ.
3 Понятие коллекции классов?
Объединение однотипных объектов в одной структуре данных называется коллекцией классов.
4 Какая объединяющая структура обычно используется для коллекционирования однотипных объектов?
Класс, который называется коллекцией.
5 Какие коллекции относятся к коллекциям с прямым доступом?
Это коллекции, доступ к элементам которой возможен по номеру элемента, например, массивы.
5 Какие коллекции относятся к коллекциям с последовательным доступом?
Продолжение приложения А
Это коллекции, для доступа к элементам которой необходимо выполнять последовательный поиск, например, стеки, очереди, списки.
6 Какие коллекции относятся к иерархическим коллекциям?
В иерархических коллекциях данные организованы в виде различных «древовидных» структур, например, в виде бинарного дерева или иерархической системы классификации.
7 Объекты какого типа могут включаться в коллекцию класса ArrayList?
Коллекция класса ArrayList предназначена для хранения объектов произвольного типа.
8 Какое свойство класса ArrayList хранит текущую емкость коллекции?
Это свойство целого типа Capacity.
9 Какое свойство класса ArrayList хранит текущую длину коллекции?
Это свойство целого типа Count.
10 Какой метод класса ArrayList позволяет включать объект в коллекцию на нужное место?
Это метод Insert (int Indx, Object Value);, который вставляет элемент Value на нужное место Indx коллекции.
ДЕЛЕГАТЫ
1 Понятие делегата?
Делегат это специальный класс, предназначенный для хранения ссылок на методы.
2 Какой класс называется функциональным типом?
Класс, позволяющий описать некоторое множество объектов, каждый из которых является функцией (или ссылкой на функцию), называется функциональным типом.
3 Что является экземпляром класса типа делегат?
Экземплярами такого класса являются ссылки на функции (методы) – им также как переменным выделяются места в памяти компьютера, начальный адрес которых являются «точками» входа в функции и передаются ссылками.
4 Какое служебное слово используется при объявлении делегата?
При объявлении интерфейса перед именем класса необходимо использовать служебное слово delegate.
5 Какой метод или функция может использоваться в качестве параметра вызова делегата?
Любая функция или метод, описание которой соответствует описанию делегата, может использоваться в качестве параметра вызова делегата.
6 Когда формируются ссылки на параметры вызова делегата?
Ссылки на параметры вызова делегата формируются во время работы программы (динамически).
7 Когда совместимы типы делегатов?
Типы делегатов всегда несовместимы друг с другом, даже если их форматы записей совпадают.
Продолжение приложения А
8 Когда совместимы экземпляры делегатов?
Если для объявления делегатов использован один и тот же тип, то имеет смысл говорить о совместимосте (равенстве) экземпляров делегатов.
9 Какие абстрактные классы платформы .NET можно наследовать при создании делегатов?
В стандартной системе типов (CTS) платформы .NET есть абстрактные классы System.Delegаte и System.MulticastDelegate, которые можно использовать в качестве базовых при создании делегатов.
10 Понятие многоадресного делегата?
Для делегатов существует понятие многоадресный делегат – делегат, способный указывать на любое количество функций. Поскольку все делегаты языка С# являются производными классами от System.MulticastDelegate, то любой делегат С# потенциально является многоадресным.
СОБЫТИЯ
1 Понятие события?
События класса это специальные методы, позволяющие классу реагировать на действия пользователя или на определенные изменения в программе.
2 Где находятся заготовки обработчиков событий на действия пользователя для элементов управления?
Для многих действий пользователя разработаны заготовки обработчиков событий, которые можно посмотреть в окне Properties на странице Events.
3 Как обычно называются события класса?
Обработчик сообщений.
4 Что произойдет, если дважды «Кликнуть» на кнопку, расположенную в окне нашей формы?
Будет сформирован обработчик этого события со следующим заголовком:
private void button1_Click(object sender, EventArgs e).
5 Что определяет первый формальный параметр всех обработчиков сообщений?
Он определяет отправителя сообщения, иногда говорят источник сообщения.
6 Что определяет второй формальный параметр обработчиков сообщений?
Второй формальный параметр шаблонов обработчиков событий является переменная типа объект точнее ссылкой на объект класса ХХХEventArgs, который содержит связанные с событием параметры фактически это сообщение.
7 Где перечислены события, на которые должны реагировать элементы управления формы?
Для каждого элемента в файле Form1.Designer.cs, в разделе инициализации помимо определения свойств элементов управления, определяются
Продолжение приложения А
перечень событий, на которые должен реагировать этот элемент управления.
8 Как можно объединить все события класса?
Поскольку все методы обработчиков событий имеют единый формат записи, то их можно объединять (подписывать) с помощью многоадресных делегатов.
9 Где происходит добавление событий в многоадресный делегат формы?
Это происходит в методе InitializeComponent() с помощью операций присваивания, например,
this.MouseClick += new System.Windows.Forms.MouseEventHandler
(this.Form1_MouseClick);
10 Где объявляется многоадресный делегат формы?
В файле Form1.Designer.cs, он находится «по умолчанию».
