Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Обработка собственных событий

Автор:   •  Апрель 20, 2022  •  Лабораторная работа  •  2,515 Слов (11 Страниц)  •  183 Просмотры

Страница 1 из 11

Липецкий государственный технический университет[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)

...

Скачать:   txt (9.2 Kb)   pdf (119.1 Kb)   docx (58 Kb)  
Продолжить читать еще 10 страниц(ы) »
Доступно только на Essays.club