Professional Documents
Culture Documents
Лабораторна робота 3 4 Бойко
Лабораторна робота 3 4 Бойко
Об’єктно-орієнтоване програмування
Міністерство освіти і науки України
Національний авіаційний університет
Київ 2019
Створення та використання делегатів
Мета: дослідити механізм обробки подій у мові C#, навчитися створювати та
використовувати делегати.
Завдання
Варіант №3
Програма на С#
Файл Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lab4
{
class Program
{
static void Main(string[] args)
{
string str = "Momotenko Pavlo";
Console.WriteLine(str);
string digits = MyString.getDigits(str);
Console.WriteLine(digits);
stack.MyStackEvent += handlerFalse.Handler;
stack.MyStackEvent += handlerTrue.Handler;
stack.Output();
stack.Add(1);
stack.Add(3);
stack.Add(5);
stack.Add(7);
stack.Add(9);
stack.EventCall();
stack.Output();
stack = temp;
stack.Remove();
stack.Remove();
stack.Add(16);
stack.EventCall();
stack.Output();
Console.ReadKey();
}
}
}
Файл MyString.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lab4
{
public delegate string GetDigits(string input);
public static class MyString
{
public static GetDigits getDigits = arr => Get(arr);
public static string Get(string input)
{
namespace Lab4
{
public delegate void MyEventHandler(object source, MyEventArgs arg);
class MyStack<T>
{
Node<T> head;
class Node<T>
{
public T data;
public Node<T> next;
namespace Lab4
{
public class MyEventArgs : EventArgs
{
public bool emptyStack;
}
}
Файл MyEventHandler.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab4
{
public class MyEventHandlerFalse
{
public void Handler(object source, MyEventArgs arg)
{
if (arg.emptyStack)
Console.WriteLine("Stack is empty!\n");
}
}
public ArifmeticFunc()
{
EventOverflow += OutOfRangeHandler; // задать метод для вызова
сообщения о событии
}
public void OutOfRangeHandler()
{
Console.WriteLine("Array is overflowed");
}
}
Подія – автоматичне повідомлення про виконання деякої дії.
Метод, який обробляє подію, повинен приймати ті самі параметри, як і
делегат, і повертати той тип, що і делегат.
7. Поясніть, яким чином генерується подія.
Тип, в якому є визначені події, повинен мати генератор події. Об’єкт повинен