- •Лабораторная работа №2
- •Основы объектно-ориентированного программирования
- •Инкапсуляция
- •Полиморфизм
- •Абстракция данных
- •Виды классов
- •Структура класса
- •Отношения между классами
- •Области доступа
- •Советы по использованию уровня доступа
- •«Паблик Морозов»
- •Абстрактный метод
- •Абстрактный класс
- •Виртуальный метод
- •Интерфейс
- •Диаграммы классов
- •Задание
Интерфейс
Интерфейс (от лат. inter — между и лат. face — поверхность) — это семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом.
С одной стороны, интерфейс — это контракт, который обязуется выполнить класс, реализующий его. Один класс может реализовать несколько интерфейсов одновременно.
С другой стороны, интерфейс — это тип данных, потому что его описание достаточно четко определяет свойства объектов, чтобы наравне с классом типизировать переменные.
Объявление интерфейса и его использования выглядит следующим образом:
interface IDoPrint
{
void DoPrint();
}
class Class1 : IDoPrint
{
public void DoPrint()
{
Console.WriteLine("Class1.DoPrint");
}
}
class Class2 : IDoPrint
{
public void DoPrint()
{
Console.WriteLine("Class2.DoPrint");
}
}
…
IDoPrint doPrint;
Class1 class1 = new Class1();
Class2 class2 = new Class2();
doPrint = class1;
doPrint.DoPrint();
doPrint = class2;
doPrint.DoPrint();
Таким образом, интерфейсы позволяют создавать общие функциональности у не связанных друг с другом классов.
Особенностью работы с интерфейсами является то, что один класс может наследовать функционал нескольких интерфейсов.
Диаграммы классов
Для проектирования классов удобно использовать диаграммы, которые позволяют визуализировать процесс.
Рассмотрим проектирование классов на примере диаграмм из Microsoft Visual Studio.
Новую диаграмму классов можно добавить через контекстное меню, которое вызывается при нажатии правой кнопки мыши на названии проекта.
Рисунок 1 Добавление нового элемента в проект
После этого, в окне выбора нового элемента, необходимо выбрать элемент «Class Diagram».
Рисунок 2 Выбор элемента «Диаграмма классов»
Внизу окна, в поле «Name», необходимо дать название файлу с диаграммой.
После нажатия на кнопку «Add» в проект добавляется диаграмма классов.
Рисунок 3 Форма редакрирования диаграммы классов
Диаграмма может работать не только с классами, но и с другими структурами (перечислениями, интерфейсами), в рамках данного описания рассматривается только работа с классами.
Форма состоит из следующих частей:
Область редактирования диаграммы. Находится в центре формы. Здесь необходимо помещать проектируемые элементы;
Область редактирования деталей выбранного класса. Находится под областью редактирования. В области редактирования можно создавать, изменять, удалять поля класса, свойства, методы и события.
Диаграмму можно использовать двумя способами:
Редактировать существующие классы. Для этого, необходимо «перетащить» классы из проекта на диаграмму;
Проектировать новые и изменять существующие классы. Добавление на диаграмму новых классов, создание связей между ними осуществляется через панель инструментов слева.
Для добавления нового класса необходимо выбрать на панели инструментов иконку с названием «Class» и перетащить её на область редактирования диаграммы.
После этого появится диалоговое окно создания нового класса:
Рисунок 4 Диалоговое окно создания нового класса
На данном окне необходимо заполнить следующие поля:
Class Name: Имя создаваемого класса;
Access: Уровень доступа для класса;
File name: Вариант добавить новый файл для класса («Create new file») и вариант добавить в существующий файл («Add to existing file»). Всегда необходимо выбирать добавление нового файла для класса. И задавать ему такое же имя, как и для класса.
После нажатия на кнопку «Ок» класс добавится на область редактирования.
Рисунок 5 Показ класса на области редактирования
После выбора класса на области редактирования в панели деталей класса можно добавлять, изменять и удалять:
Методы (Methods);
Свойства (Properties);
Поля (Fields);
События (Events);
Принцип добавления значений одинаков: Достаточно написать название в столбце «Name» и заполнить значения оставшихся столбцов.
При добавлении методов, дополнительно, можно добавлять параметры. Чтобы добавлять/редактировать параметры метода необходимо раскрыть их список. Это делается нажатием на кнопку «+» рядом с именем метода.
Пример заполненных составляющих для класса:
Рисунок 6 Заполненные элементы класса
Дополнительные параметры для каждого составляющего класса можно заполнить на панели свойств (вызывается при нажатии клавиш Ctrl+W, P). На приведённом выше примере, панель свойств располагается справа.
Если выбрать класс и нажать «Enter», то покажется исходный код класса.
Рисунок 7 Текст класса
Для указания наследования одного класса от другого необходимо произвести следующие действия:
Выбрать «Inheritance» в панели «Toolbox» слева;
Нажать и удерживать левую кнопку мыши над классом – наследником;
Продолжая удерживать левую кнопку мыши, переместить курсор, пока он не окажется над классом наследником. На экране будет показываться пунктирная линия, соединяющая классы:
Рисунок 8 Связывание дочернего класса с родительским
Отпустить кнопку мыши.
После отпускании кнопки мыши создастся связь между классами и будет отображена на диаграмме.
Рисунок 9 Отображение связи дочернего класса с родительским
Исходный код дочернего класса будет выглядеть следующим образом:
Рисунок 10 Исходный текст дочернего класса
