Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб раб №2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
78.34 Кб
Скачать

Описание интерфейса

Синтаксис:

[атрибуты][модификаторы]interface

Имя_интерфейса[:список_родительских_интерфейсов]{объявление_свойств_и_методов}

Пример:

Interface Species

{

String Species();

Void Feed();

}

Class Cheetah:Animal,Species{

Private string ScientificName;

Public string Species()

{return ScientificName;}

Public void Feed()

{Weigth++;}

}

В языке C# допустимо объявление ссылочных переменных интерфейсного типа. Такие переменные могут ссылаться на любой объект, реализующий их интерфейсы. При вызове метода объекта по интерфейсной ссылке происходит вызов той конкретизации метода, которая реализуется данным объектом.

В языке C# допустимо наследование интерфейсов. При этом синтаксис аналогичен таковому для наследования классов. В случае, если класс реализует интерфейс, который наследует другой интерфейс, необходимо предусмотреть реализацию всех членов, определенных в составе иерархии наследования интерфейсов.

Делегаты

Под делегатом будем понимать объект, который имеет ссылку на метод. Делегат позволяет осуществлять выбор вызываемого метода во время выполнения программы. Фактическим значением является то, что он позволяет указать в коде программы вызов метода, однако фактически вызываемый метод определяется во время выполнения программы, а не во время ее компиляции.

Делегат объявляется с помощью ключевого слова delegate, за которым указывается тип возвращаемого значения, имя делегата и список параметров вызываемых методов.

Описание делегата

Синтаксис:

dlegate тип_возвращаемого_значения имя_делегата(список_параметров);

Характерной особенностью делегата является возможность его использования для вызова любого метода, который соответствует подписи делегата. Это дает возможность определить, какой из методов должен быть вызван, во время выполнения программы. Вызываемый метод может быть методом экземпляра, ассоциированным с объектом, либо статическим методом, ассоциированным с классом. Метод можно вызвать только в том случае, если его подпись соответствует подписи делегата.

Многоадресность делегатов

Многоадресность – это способность делегата хранить несколько ссылок на различные методы, что позволяет при вызове делегата инициировать эту цепочку методов.

Для формирования цепочки методов следует создать экземпляр делегата и, пользуясь операторами «+» или «+=», добавлять методы к цепочке. Для удаления метода из цепочки используется оператор «-» или «-=». Делегаты, хранящие несколько ссылок, должны иметь тип возвращаемого значения void.

Контрольные вопросы

  1. Что понимается под термином «интерфейс» языка C#?

  2. Что понимается под термином «делегат» языка C#?

  3. Что понимается под термином «многоадресность» в языке C#?

  4. В чем состоит практическое значение многоадресности в языке C#?

  5. Чем отличается синтаксис интерфейса языка C# от синтаксиса абстрактного класса?

  6. Какое ключевое слово языка C# используется для описания интерфейса?

  7. Какое ключевое слово языка C# используется для описания делегатов?

  8. Поддерживают ли реализацию методы интерфейса?

  9. Может ли класс языка C# реализовать множественные интерфейсы?

  10. Может ли реализация интерфейса языка C# включать множественные классы?

  11. Какой модификатор доступа соответствует интерфейсу языка C#?

  12. Допустимо ли в языке C# создание ссылочной переменной интерфейсного типа?

  13. Допускается ли в языке C# наследование интерфейсов?

  14. Какие операторы языка C# используются для добавления методов к цепочкам для многоадресных делегатов?

  15. Какие операторы языка C# используются для удаления цепочки методов для многоадресных делегатов?

  16. Каким должен быть тип возвращаемого значения для многоадресных делегатов?

Варианты заданий

Реализовать для иерархии из лабораторной работы № 5 механизм интерфейсов, при этом один из классов должен реализовать как минимум два интерфейса. Использовать для проверки всех методов данного класса многоадресный делегат.

Порядок выполнения работы:

1) Реализовать программу на C# в соответствии с вариантом исполнения.

2) Для проверки всех методов использовать данного класса многоадресный делегат.

3) Подготовить отчет в твердой копии и в электронном виде.