Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 34.docx
Скачиваний:
25
Добавлен:
30.04.2022
Размер:
74.1 Кб
Скачать

Лабораторная работа № 7 Делегаты и события в языке c#

Цель работы: научиться пользоваться механизмом делегатов и событий технологии .NET

Задание: Создать класс с единственным методом добавления элемента произвольного типа. Объявить в классе делегат и создать событие, происходящее при добавлении в класс элемента с порядковым номером кратным 5. В основном классе программы создать метод, выводящий текстовое сообщение о произошедшем событии.

Инструкции к выполнению:

  • Для хранения элементов использовать объект класса ArrayList.

Теоретическая справка

Объявление класса делегата начинается ключевым словом delegate и выглядит следующим образом:

ОбъявлениеКлассаДелегата ::=

[СпецификаторДоступа]

delegate

СпецификаторВозвращаемогоЗначения

ИмяКлассаДелегата

(СписокПараметров);

При этом

СпецификаторВозвращаемогоЗначения ::= ИмяТипа

ИмяКлассаДелегата ::= Идентификатор

а синтаксис элемента СписокПараметров аналогичен списку параметров функции.

Класс-делегат способен порождать объекты. При этом назначение объекта — представителя класса-делегата заключается в представлении методов (функций-членов) различных классов. В частности, тех которые оказываются видимыми из пространства имен, содержащих объявление данного класса-делегата. Объект этого класса способен представлять любые (статические и нестатические) функции — члены классов, лишь бы спецификация их возвращаемого значения и список параметров соответствовали бы характеристикам данного класса-делегата.

Если в классе объявить член-событие, то объект — представитель этого класса сможет уведомлять объекты других классов о данном событии.

Класс, содержащий объявление события, поддерживает:

  • регистрацию объектов — представителей других классов, "заинтересованных" в получении уведомления о событии;

  • отмену регистрации объектов, получающих уведомление о событии;

  • управление списком зарегистрированных объектов и процедурой уведомления о событии.

Реализация механизма управления по событиям предполагает два этапа:

  • объявление делегата,

  • объявление события.

Лабораторная работа № 8 Использование шаблонов в языке c# 2.0

Цель работы: изучить способы создания шаблонов классов и функций в языке C# 2.0

Задание: создать шаблон класса, позволяющего хранить множество элементов произвольного типа. Предусмотреть методы добавления, удаления и поиска элементов.

Инструкции к выполнению:

  • Для хранения элементов множества использовать объект класса List<>.

Теоретическая справка

Объявление любого шаблона предполагает использование специальных обозначений, которые называются параметрами шаблона. Традиционно для этого применяются однобуквенные обозначения: A, ..., K, L, M, N, ..., T, ..., Z.

При объявлении шаблонного класса или функции параметры шаблона заменяются на конкретные имена классов.

Шаблонный класс – это класс, который строится на основе ранее объявленного шаблона для определенного класса (этот класс мы будем называть подстановочным классом). Шаблонный класс (и функция) обеспечивают стандартную реализацию какой-либо функциональности для подстановочного класса — например, построения специализированной коллекции для множества объектов данного типа.

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

Ниже приводится пример объявления шаблона класса Stack с параметром типа <T>.

Параметр T в объявлении рассматриваемого шаблонного класса обозначает место подстановки реального типа. Он используется для обозначения типа элемента для внутреннего массива элементов, типа параметра метода Push и типа результата для метода Pop:

public class Stack<T>

{

T[] items;

int count;

public void Push(T item) {...}

public T Pop() {...}

}

Шаблонный класс обеспечивает стандартную реализацию дополнительной функциональности на основе ранее объявленных подстановочных классов.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]