Обработка собственных событий
Автор: matane • Апрель 20, 2022 • Лабораторная работа • 2,515 Слов (11 Страниц) • 183 Просмотры
Липецкий государственный технический университет[pic 1][pic 2][pic 3][pic 4][pic 5][pic 6][pic 7][pic 8][pic 9]
Кафедра Высшей Математики
ЛАБОРАТОРНАЯ РАБОТА №6
по программированию
Вариант — 5
Обработка собственных событий
______________________________________________________________________
наименование темы
Студент ______________________ Дружинин К. О.
подпись, дата
Группа МА-19-1
Руководитель
_______________________ Муравейко А.Ю. подпись, дата
Липецк, 2020
Задание:
Реализовать на языке C++ программу, требования для которой представлены в табл. 6, с использованием механизма событий.
Цель работы:
Научиться создавать и использовать собственные события для возможности отслеживания другими классами наступления отдельных условий в текущем классе.
Таблица 6:
[pic 10]
Код программы:
#define LIBRARY_CAPACITY 3
using namespace System;
using namespace System::IO;
using namespace System::Text;
public delegate void BookCreate(String^ Create, int number);
public delegate void BookEdit(String^ Edit, int number);
public delegate void BookDelete(String^ Delete, int number);
ref class Book
{
public:
String^ Name;
void SetNewBook()
{
Console::WriteLine("Введите название книги:");
Name = Convert::ToString(Console::ReadLine());
}
};
template <class ObjType>
ref class BookShelf
{
public:
event BookCreate^ CREATE;
event BookEdit^ EDIT;
event BookDelete^ DELETE;
int BookShelfNumber;
cli::array < ObjType^ >^ Books;
int size;
BookShelf(int n)
{
BookShelfNumber = n;
size = 0;
Books = gcnew cli::array < ObjType^ >(size);
}
void BookAdd()
{
size++;
cli::array< ObjType^ >^ temp = gcnew cli::array < ObjType^ >(size);
for (int i = 0; i < size; i++)
{
if (i == size - 1)
{
temp[size - 1] = gcnew ObjType;
temp[size - 1]->SetNewBook();
}
else
{
temp[i] = gcnew ObjType;
temp[i] = Books[i];
}
}
delete Books;
Books = gcnew cli::array < ObjType^ >(size);
for (int i = 0; i < size; i++)
{
Books[i] = gcnew ObjType;
Books[i] = temp[i];
}
delete temp;
String^ EventCreate;
for (int i = 0; i < size; i++)
{
EventCreate += "Номер полки: " + BookShelfNumber + " Название книги: " + Books[i]->Name + "\n";
}
CREATE(EventCreate, BookShelfNumber);
}
void BookEdit(int number)
{
Console::WriteLine("Введите новое название книги:");
Books[number]->Name = Convert::ToString(Console::ReadLine());
String^ EventEdit;
for (int i = 0; i < size; i++)
{
EventEdit += "Номер полки: " + BookShelfNumber + " Название книги: " + Books[i]->Name + "\n";
}
EDIT(EventEdit, BookShelfNumber);
}
void BookDelete(int number)
{
size--;
cli::array< ObjType^ >^ temp = gcnew cli::array < ObjType^ >(size);
for (int i = 0; i < size; i++)
{
if (i < number)
...