---
# System prepended metadata

title: QueueApp

---

# QueueApp
Решение состоит из 2-х проектов: 
* QueueApp.GUI
* QueueApp.Model
Целевая платформа: .Net Framework 4.7.2

## QueueApp.Model
Данный проект - это библиотека классов.
Здесь содержатся классы:
* Node
* Operations
* Queue
* EmptyQueueException
Классы Node, Queue и методы класса Operations - шаблонные, поэтому при использовании стека мы можем выбирать, какой тип данных он будет хранить.

### Node
Данный класс представляет из себя ячейку стека. Имеет 2 поля
* Value - значение, хранимое в ячейке
* Next - следующая ячейка

### Queue
Данный класс хранит всю информацию об очереди, а так же его верхний элемент. Имеет 3 поля:
* Head - первый элемент
* Tail - последний элемент
* Count - количество элементов
Также имеет переопределение метода ToString.

### Operations
Статичный класс, методы которого реализуют все операции над очередью. Каждый метод является шаблонным, а также методом расширения. Т.е. вызов этих методов можно производить двумя способами:
* queue.Insert(value);
* Operations.Insert(queue, value);

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

## QueueApp.GUI
GUI для взаимодействия с очередью. Сам объект очереди хранится в классе Program, как публичное статическое поле.
MainForm - это класс главного окна программы. Все операции, кроме добавления нового элемента, происходит в нём.
AddForm - это класс окна добавления нового элемента. Когда оно открывается, главное окно становится недоступным, пока окно AddForm не закроется.
Вывод всех результатов производится через MessageBox.