Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания по ООП.pdf
Скачиваний:
16
Добавлен:
25.03.2016
Размер:
1.65 Mб
Скачать

2.3 Использование делегатов

Задание: Для условий задачи: а) описать требуемые делегаты

1)делегат для обратного вызова, позволяющий вывести строку, содержащую идентификатор объекта и подробное описание выполненного действия;

2)делегат, позволяющий выполнить набор действий с элементом списка. Делегат имеет два параметра: параметр заданного типа и делегат типа «1»;

б) реализовать класс с указанными обязательными полями (возможно включение в класс дополнительных полей). Помимо указанных в задании полей, класс должен включать поля, хранящие:

1)идентификатор, int, уникальный;

2)ссылку на компонент, в котором отображается элемент;

в) реализовать перегрузку метода ToString() для обеспечения заданного отображения объекта. Примечание: при отображении информации о классе вместо данных в угловых скобках подставляются значения полей;

г) реализовать в классе указанные обязательные методы. Каждый метод должен соответствовать сигнатуре делегата типа«2» и вызывать делегат типа «1» для возврата требуемой строки;

д) реализовать в «основной программе» добавление и удаление объектов класса. Для отображения объектов использовать компонент класса CheckedListBox (возможно использование данного компонента для хранения объектов);

е) реализовать добавление к помеченным объектам операций. Список операции включает добавление выполнения или отмену выполнения каждого из обязательных методов класса, а также удаление всех операций. Операция добавления метода может быть назначена объекту несколько раз;

ж) реализовать активизацию выполнения всех операций, назначенных объектам.

Варианты заданий приведены в таблице 8.

Таблица 8 – Варианты заданий по использованию делегатов

Описание параметров задания

1.тип первого параметра делегата «2»: целое число;

обязательные поля класса:

1.поле №1, int;

2.поле №2, int;

58

 

 

отображение: «<идентификатор> : <поле №1> <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

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

 

 

 

переданное значение (если переданное значение равно 0, то де-

 

 

 

ление не производится);

 

 

2.

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

 

 

 

наибольшего из полей.

2.

 

тип первого параметра делегата «2»: строка;

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «а»;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : <поле №1> (<поле №2>)»;

 

 

обязательные методы класса:

 

 

1.

метод, производящий удаление из поля №1 всех букв, входящих

 

 

 

в переданное значение (если поле №1 после удаления становит-

 

 

 

ся пустым, то оно принимает значение по умолчанию);

 

 

2.

метод, добавляющий к полю №2 число, равное количеству букв

 

 

 

в переданном значении.

3.

 

тип первого параметра делегата «2»: строка:

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «б»;

 

 

2.

поле №2,

string, не пустая, по умолчанию «в»;

 

 

отображение: «<идентификатор> : <поле №1> <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, производящий добавление к каждому из полей тех букв

 

 

 

из переданного значения, которые не входят в соответствующее

 

 

 

поле;

 

 

 

2.

метод, удаляющий из полей все вхождения переданного значе-

 

 

 

ния (если после удаления поле становится пустым, то оно при-

 

 

 

нимает значение по умолчанию).

4.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int, двухзначное, по умолчанию 10;

 

 

2.

поле №2,

int, трехзначное, по умолчанию 100;

 

 

отображение: «<идентификатор> : <поле №1> <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, добавляющий к полю №1 переданное значение (если ре-

 

 

 

зультат меньше 10 или больше 100, то поле принимает значение

 

 

 

по умолчанию);

 

 

2.

метод, добавляющий к полю №2 все цифры, входящие в пере-

 

 

 

данное значение (если результат становится больше 999, то поле

59

принимает значение по умолчанию).

5.тип первого параметра делегата «2»: целое число;

обязательные поля класса:

1.поле №1, int;

2.поле №2, string, не пустая, по умолчанию «г»;

отображение: «<идентификатор> : [<поле №1>]<поле №2>»;

обязательные методы класса:

1.метод, добавляющий к полю №1 значение младшего разряда переданного числа;

2.метод, удаляющий с начала поля №2 первые буквы в количестве, равном значению переданного числа (если количество удаляемых букв больше или равно количеству букв поля №2, то поле принимает значение по умолчанию).

6.тип первого параметра делегата «2»: целое число;

обязательные поля класса:

1.поле №1, int, двухзначное, по умолчанию 50;

2.поле №2, double, отображать с двумя знаками дробной части;

отображение: «<идентификатор> : <поле №1> – <поле №2>»;

обязательные методы класса:

1.метод, вычитающий из каждого из полей переданное число (если поле №1 становится меньше 10 или больше 99, то оно принимает значение по умолчанию);

2.метод, вычитающий из поля №2 число N, рассчитываемое по

формуле

N M

M

 

, где M – переданное значение, а деле-

 

100

 

 

 

 

ние целочисленное.

7.тип первого параметра делегата «2»: целое число;

обязательные поля класса:

1.поле №1, int;

2.поле №2, int;

отображение: «<идентификатор> : [<поле №1>][<поле №2>]»;

обязательные методы класса:

1.метод, вычитающий из поля с наибольшим значением переданное число;

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

8.тип первого параметра делегата «2»: строка;

обязательные поля класса:

1.поле №1, string, не пустая, по умолчанию «д»;

2.поле №2, string, не пустая, по умолчанию «е»;

отображение: «<идентификатор> : (<поле №1>)(<поле №2>)»;

60

 

 

обязательные методы класса:

 

 

1.

метод, добавляющий переданную строку к полю наименьшей

 

 

 

длины;

 

 

 

2.

метод, заменяющий поле с наибольшей длиной на переданную

 

 

 

строку.

 

9.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «ж»;

 

 

2.

поле №2,

string, не пустая, по умолчанию «з»;

 

отображение: «<идентификатор> : [<поле №1>]{<поле №2>}»;

 

 

обязательные методы класса:

 

 

1.

метод, удаляющий с начала каждого поля первые буквы в коли-

 

 

 

честве, равном переданному значению (если какое-либо поле

 

 

 

после удаления становится пустым, то оно принимает значение

 

 

 

по умолчанию);

 

 

2.

метод, добавляющий строковое представление переданного

 

 

 

числа к полю с наименьшей длиной.

10.

 

тип первого параметра делегата «2»: строка;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : [<поле №1>]{<поле №2>}»;

 

 

обязательные методы класса:

 

 

1.

метод, добавляющий к полю №1 числовое представление пере-

 

 

 

данной строки (если преобразование в число возможно), или

 

 

 

значение количества букв в переданной строке (если преобразо-

 

 

 

вание в число не возможно);

 

 

2.

метод, вычитающий из поля с наибольшим значением число,

 

 

 

равное количеству букв в переданной строке.

11.

 

тип первого параметра делегата «2»: строка;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

string, не пустая, по умолчанию «и»;

 

отображение: «<идентификатор> : ~<поле №1>~<поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, добавляющий к полю №2 первые буквы переданной

 

 

 

строки в количестве, равном значению поля №1 (если значение

 

 

 

поля №1 больше количества букв переданной строки, то добав-

 

 

 

ляется вся строка);

 

 

2.

метод, записывающий в поле №1 количество букв переданной

 

 

 

строки, если оно меньше текущего значения поля.

61

12.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

double, отображать с двумя знаками дробной части;

 

 

2.

поле №2,

double, отображать с двумя знаками дробной части;

 

отображение: «<идентификатор> : <поле №1> - <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, добавляющий переданное число, деленное на 100, к по-

 

 

 

лю, имеющему меньшее значение целой части;

 

 

2.

метод, заменяющий на переданное число целую часть первого

 

 

 

поля.

 

13.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : [<поле №1>][<поле №2>]»;

 

 

обязательные методы класса:

 

 

1.

метод, заменяющей поле №2 суммой поля №1 и переданного

 

 

 

числа;

 

 

 

2.

метод, делящий наименьшее из полей на переданное число.

14.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : <поле №1> x <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, заменяющей поле №1 старшим разрядом числа N, а поле

 

 

 

№2 – младшим. Число N – остаток от деления переданного чис-

 

 

 

ла на 100, взятый по абсолютной величине. Если N меньше 10,

 

 

 

то считать, что старший разряд равен нулю;

 

 

2.

метод, добавляющий переданное число к наименьшему из по-

 

 

 

лей.

 

15.

 

тип первого параметра делегата «2»: строка;

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «к»;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : <поле №1>_<поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, удаляющий из поля №1 все буквы, имеющиеся в пере-

 

 

 

данной строке (если после удаления поле становится пустым, то

 

 

 

оно принимает значение по умолчанию);

 

 

2.

метод, вычитающий из поля №2 значение количества букв поля

62

 

 

 

№1.

 

16.

 

тип первого параметра делегата «2»: символ;

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «л»;

 

 

2.

поле №2,

char, не пустой, по умолчанию «м»;

 

отображение: «<идентификатор> : <поле №1> <поле №2>.»;

 

 

обязательные методы класса:

 

 

1.

метод, заменяющий в поле №1 все вхождения поля №2 на пере-

 

 

 

данный символ;

 

 

2.

метод, добавляющий поле №2 к полю №1 и заменяющий поле

 

 

 

№2 на переданный символ.

17.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : <поле №1> ! <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, заменяющий в поле №1 на переданное число, если пере-

 

 

 

данное число и поле №1 оба четные или оба нечетные;

 

 

2.

метод, добавляющий к полю №2 переданное число.

18.

 

тип первого параметра делегата «2»: вещественное число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

double, отображать с двумя знаками дробной части;

 

 

2.

поле №2,

double, отображать с двумя знаками дробной части;

 

отображение: «<идентификатор> : <поле №1> х <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, добавляющий к полю №1 целую часть переданного чис-

 

 

 

ла, а к полю №2 – дробную;

 

 

2.

метод, заменяющий на переданное число то из полей, разница

 

 

 

которого с переданным числом наименьшая.

19.

 

тип первого параметра делегата «2»: строка;

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «н»;

 

 

2.

поле №2,

int;

 

отображение: «<идентификатор> : [<поле №1>]_<поле №2>_»;

 

 

обязательные методы класса:

 

 

1.

метод, вычитающий из поля №2 число, равное количеству букв

 

 

 

в переданной строке;

 

 

2.

метод, добавляющий к полю №1 число, равное позиции послед-

 

 

 

него вхождения переданной строки в поле №1.

20.

 

тип первого параметра делегата «2»: вещественное число;

63

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

double, отображать с двумя знаками дробной части;

 

отображение: «<идентификатор> : {<поле №1>}{<поле №2>}»;

 

 

обязательные методы класса:

 

 

1.

метод, вычитающий целую часть переданного числа из поля №1

 

 

 

и дробную – из поля №2;

 

 

2.

метод, заменяющий поле №2 на целую часть переданного числа,

 

 

 

если поле №1 четное и на дробную часть – если поле №1 нечет-

 

 

 

ное.

 

21.

 

тип первого параметра делегата «2»: вещественное число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

double, отображать с двумя знаками дробной части;

 

 

2.

поле №2,

double, отображать с двумя знаками дробной части;

 

отображение: «<идентификатор> : <поле №1> / <поле №2>»;

 

 

обязательные методы класса:

 

 

1.

метод, упорядочивающий три числа по возрастанию: поле №1,

 

 

 

поле №2 и переданное число и записывающий в поле №1 мень-

 

 

 

шее из них, а в поле №2 – среднее;

 

 

2.

метод, вычитающий из поля №1 дробную часть переданного

 

 

 

числа, а из поля №2 – целую.

22.

 

тип первого параметра делегата «2»: целое число;

 

 

обязательные поля класса:

 

 

1.

поле №1,

int;

 

 

2.

поле №2,

string, не пустая, по умолчанию «о»;

 

отображение: «<идентификатор> : <поле №1> (<поле №2>)»;

 

 

обязательные методы класса:

 

 

1.

метод, копирующий N первых букв поля №2 (или все поле, если

 

 

 

N больше числа букв поля №2) в конец этого же поля. N – зна-

 

 

 

чение переданного числа;

 

 

2.

метод, вычитающий из поля №1 остаток от деления переданного

 

 

 

числа на 5.

23.

 

тип первого параметра делегата «2»: строка;

 

 

обязательные поля класса:

 

 

1.

поле №1,

string, не пустая, по умолчанию «п»;

 

 

2.

поле №2,

string, не пустая, по умолчанию «р»;

 

 

отображение: «<идентификатор> : (<поле №1>) – (<поле

 

 

№2>)»;

 

 

 

обязательные методы класса:

 

 

1.

метод, заменяющий на переданную строку поле с наименьшей

 

 

 

длиной (если поле становится пустым, то оно принимает значе-

64