Вы находитесь на странице: 1из 3

C# и .

Net Framework – Часть 1 – Основы программирования и проектирования

Урок 7. Интерфейсы
О чем урок
Урок посвящен важнейшему понятию в ООП – интерфейсам. Вы узнаете, чем интерфейс
отличается от абстрактного класса и когда его нужно применять.

Будут рассмотрены техники объявления и наследования интерфейсов в C#, механизмы явной и


неявной реализации. Вы познакомитесь с проблемой множественного наследования и научитесь
ее решать с помощью интерфейсов.

Вы узнаете еще один способ приведения типов, а также научитесь проверять, является ли
запрашиваемым типом некая переменная. Вам предстоит познакомиться с тремя примерами
использования стандартных интерфейсов .Net Framework: освобождение ресурсов, клонирование
и сравнение.

Наконец, вы научитесь важному принципу программирования, который позволит сделать классы


менее связанными друг с другом, а значит и весь программный код сможет стать гибче и легче
расширяемым.

В домашнем задании вам предстоит реализовать два контейнера: вектор и связный список. Они
будут иметь единый интерфейс. Также вы создадите класс для тестирования реализаций списка,
что позволит вам самостоятельно изучить сравнительные характеристики и особенности этих
структур данных.

Самоконтроль
 интерфейс
 абстрактный тип
 отличие абстрактного класса и интерфейса
 объявление интерфейса
 правила именования интерфейсов
 видимость методов интерфейса
 реализация интерфейса
 наследование интерфейсов
 множественное наследование интерфейсов
 проблема множественного наследования классов
 ее решение с помощью интерфейсов
 явная и неявная реализация интерфейса
 приведение типов: скобки и as
 проверка типа: is
 интерфейс освобождения ресурсов
 правила освобождения ресурсов
 интерфейс клонирования

Школа Программирования, Ляпин Дмитрий, 2011 г. Страница 1


C# и .Net Framework – Часть 1 – Основы программирования и проектирования

 защищенный метод почленного копирования


 интерфейс сравнения
 сортировка с помощью интерфейса сравнения

 интерфейс списка
 вектор
 связанный список
 обобщение интерфейса
 использование object
 обобщенное программирование
 объявление Generic классов и интерфейсов
 полиморфизм при тестировании списков
 техника тестирования реализации списков
 программирование в соответствии с реализацией
 программирование в соответствии с интерфейсом
 лучший способ

Домашнее задание
1. Необходимо объявить интерфейс списка, состоящий из семи методов:
a. Получить текущий размер списка
b. Добавить элемент в список
c. Удалить элемент из списка
d. Вставить элемент в указанную позицию
e. Получить элемент в указанной позиции
f. Перезаписать элемент в указанной позиции
g. Очистить список

Интерфейс должен называться IMyList и быть Generic.

2. Требуется создать класс MyVector, который будет реализовывать интерфейс IMyList с


помощью структуры данных «вектор».

3. Требуется создать класс MyLinkedList, который будет реализовывать интерфейс IMyList с


помощью структуры данных «связный список».

4. Необходимо создать класс для тестирования списков. Он должен иметь четыре


статических метода:
a. Тестировать добавление
b. Тестировать удаление
c. Тестировать вставку
d. Тестировать получение элемента по индексу

Школа Программирования, Ляпин Дмитрий, 2011 г. Страница 2


C# и .Net Framework – Часть 1 – Основы программирования и проектирования

Каждый метод должен принимать в качестве параметра экземпляр списка, состоящего из


целых чисел. Для тестирования список должен быть очищен и заполнен N случайными
значениями внутри метода. После чего должно быть засечено время и произведено в
цикле M тестируемых операций. После таймер следует остановить и вернуть отрезок
времени в качестве результата.

Например, метод тестирования получения элемента по индексу мог бы выглядеть так:


a. Очистить список
b. Добавить в список N случайных значений
c. Засечь время
d. Вызвать в цикле метод получения элемента по индексу M раз со случайными
индексами
e. Остановить таймер
f. Вернуть временной отрезок в качестве результата

Класс тестирования не должен знать о конкретных реализациях списка, а работать только


с интерфейсом.

Школа Программирования, Ляпин Дмитрий, 2011 г. Страница 3