diff --git a/Report/report.md b/Report/report.md
index a42f274..56ca2b7 100644
--- a/Report/report.md
+++ b/Report/report.md
@@ -1,109 +1,144 @@
# Лабораторная работа 1
## Компоненты:
-### CustomDataTable:
-Визуальный компонент вывода таблицы значений
-
-__Публичные Методы__:
-- Определить структуру таблицы
- ```c#
- void ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters)
- ```
- CustomDataTableColumnParameter
- ```c#
- ///
- /// Параметры столбца таблицы
- ///
- public record CustomDataTableColumnParameter
- {
- ///
- /// Заголовок
- ///
- public string HeaderName { get; init; } = string.Empty;
-
- ///
- /// Ширина
- ///
- public int Width { get; init; } = 0;
-
- ///
- /// Видимость
- ///
- public bool Visible { get; init; } = true;
-
- ///
- /// Название свойства
- ///
- public string PropertyName { get; init; } = string.Empty;
- }
- ```
-- Отчистить таблицу
- ```c#
- public void Clear()
- ```
-- Заполнить таблицу
- ```c#
- public void Fill(IList insertValues)
- ```
-
-__Публичные Функции__:
-- Получить стоку таблицы в виде объекта
- ```c#
- public TType? GetRow(int rowIndex) where TType : new()
- ```
-
-__Свойства__:
-- Индекс выбранной строки
- ```c#
- public int SelectedRow
- ```
-
-
### CustomListBox
-Визуальный компонент выбора из списка значений
-__Публичные Методы__:
-- Заполнить список значениями
- ```c#
- public void FillValues(IEnumerable strings)
- ```
-- Очистить список
- ```c#
- public void Clear()
- ```
+Пользовательский визуальный компонент, который наследуется от UserControl.
+Этот компонент является оберткой вокруг стандартного ListBox и предоставляет функционал для выбора значений из списка.
+Класс поддерживает заполнение списка значениями, очистку списка,
+обработку выбора элемента и уведомление об ошибках.
-__Свойства__:
-- Событие возникающие при изменении списка
- ```c#
- public event EventHandler ValueChanged
- ```
-- Обработка ошибок
- ```c#
- public event Action AnErrorOccurred
- ```
-- Выбранное значение
- ```c#
- public string Selected
- ```
-
+---
+
+### Свойства:
+
+1. Selected (тип: `string`)
+ - Функция: Возвращает или устанавливает выбранное значение в списке.
+ - get: Возвращает выбранный элемент списка или пустую строку, если элемент не выбран.
+ - set: Устанавливает выбранный элемент списка, если он существует.
+
+---
+
+### Методы:
+
+1. FillValues(IEnumerable strings)
+ - Функция: Заполняет список значениями из переданной коллекции строк.
+
+2. Clear()
+ - Функция: Очищает список, сбрасывает выбор и обновляет отображение.
+
+---
+
+### Поля:
+
+1. _selectedChanged (тип: `EventHandler?`)
+ - Функция: Хранит подписчиков на событие изменения выбранного элемента.
+
+2. _errorOccured (тип: `Action?`)
+ - Функция: Хранит подписчиков на событие возникновения ошибки.
+
+---
+
+### События:
+
+1. ValueChanged (тип: `EventHandler`)
+ - Функция: Событие, возникающее при изменении выбранного элемента в списке.
+
+2. AnErrorOccurred (тип: `Action`)
+ - Функция: Событие, возникающее при возникновении ошибки в процессе обработки выбранного элемента.
+
+### CustomDataTable
+
+CustomDataTable представляет собой пользовательский визуальный компонент, который наследуется от UserControl.
+Этот компонент является оберткой вокруг стандартного DataGridView
+и предоставляет функционал для отображения и управления таблицей данных. Класс поддерживает настройку столбцов,
+заполнение таблицы данными, очистку таблицы, выбор строки и получение данных из строки в виде объекта.
+
+---
+
+### Свойства:
+
+1. SelectedRow (тип: `int`)
+ - Функция: Возвращает или устанавливает индекс выбранной строки в таблице.
+ - get: Возвращает индекс текущей выбранной строки.
+ - set: Устанавливает выбранную строку по индексу.
+
+---
+
+### Методы:
+
+1. ConfigureColumns(params CustomDataTableColumnParameter[] columnParameters)
+ - Функция: Настраивает столбцы таблицы на основе переданных параметров.
+
+2. Clear()
+ - Функция: Очищает таблицу, удаляя все строки.
+
+3. GetRow(int rowIndex)
+ - Функция: Возвращает данные из указанной строки таблицы в виде объекта типа TType.
+
+4. Fill(IList insertValues)
+ - Функция: Заполняет таблицу данными из переданного списка объектов.
+
+---
+
+### Поля:
+
+- outDataGridView (тип: `DataGridView`)
+ - Функция: Внутренний элемент управления DataGridView, используемый для отображения таблицы.
+
+---
### CustomNumericInputField
-Визуальный компонент ввода целочисленного значения допускающего null
-__Свойства__:
-- Событие возникающие при изменении поля ввода
- ```c#
- public event EventHandler NumericInputChanged
- ```
-- Обработка ошибок
- ```c#
- public event Action AnErrorOccurred
- ```
-- Значения поля ввода
- ```c#
- public int? Value
- ```
- _Возможно исключение ```InvalidNumericInputValueException```_
+CustomNumericInputField представляет собой пользовательский визуальный компонент,
+который наследуется от UserControl.
+Этот компонент предназначен для ввода целочисленных значений, которые могут быть null.
+Он включает текстовое поле для ввода числа и флажок (чекбокс) для указания,
+что значение должно быть null. Компонент также поддерживает события для обработки изменений ввода и ошибок.
+
+---
+
+### Свойства:
+
+1. Value (тип: `int?`)
+ - Функция: Возвращает или устанавливает значение поля ввода.
+ - get: Возвращает введенное целое число или null, если флажок "null" активен.
+ Если введенное значение не является числом, выбрасывает исключение InvalidNumericInputValueException.
+ - set: Устанавливает значение поля ввода. Если значение null, активирует флажок "null" и очищает текстовое поле.
+
+---
+
+### Методы:
+
+1. Приватный: IsNullcheckBox_CheckedChanged(object sender, EventArgs e)
+ - Функция: Обрабатывает изменение состояния флажка "null". Если флажок активен,
+ отключает текстовое поле и очищает его. Вызывает событие _numericInputChanged или _errorOccurred в случае ошибки.
+
+2. Приватный: InputField_TextChanged(object sender, EventArgs e)
+ - Функция: Обрабатывает изменение текста в поле ввода.
+ Вызывает событие _numericInputChanged или _errorOccurred в случае ошибки.
+
+---
+
+### Поля:
+
+1. _numericInputChanged (тип: `EventHandler?`)
+ - Функция: Хранит подписчиков на событие изменения значения в поле ввода.
+
+2. _errorOccured (тип: `Action?`)
+ - Функция: Хранит подписчиков на событие возникновения ошибки.
+
+---
+
+### События:
+
+1. NumericInputChanged (тип: `EventHandler`)
+ - Функция: Событие, возникающее при изменении значения в поле ввода (включая активацию флажка "null").
+
+2. AnErrorOccurred (тип: `Action`)
+ - Функция: Событие, возникающее при возникновении ошибки в процессе обработки ввода.
+
+---
# Лабораторная работа 2
@@ -111,131 +146,92 @@ __Свойства__:
### CustomPdfTable
-Компонент для сохранения таблицы в пдф
+Класс CustomPdfTable представляет собой компонент, который сохраняет данные в виде таблицы в PDF-документ.
+Этот компонент использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов.
+Класс поддерживает добавление заголовка документа,
+создание таблиц на основе двумерных массивов строк и сохранение документа по указанному пути.
-__Публичные Методы__:
-- Определить структуру таблицы
- ```c#
- public void SaveToPdf(PdfTableInfo tableInfo)
- ```
- PdfTableInfo
- ```c#
- ///
- /// Параметры для создания таблиц в пдф
- ///
- public record PdfTableInfo
- {
- ///
- /// имя файла (включая путь до файла)
- ///
- public string FilePath { get; init; } = @"C:\pdfTable.pdf";
+---
- ///
- /// название документа(заголовок в документе)
- ///
- public string Title { get; init; } = "Таблица";
+### Методы:
- ///
- /// Список таблиц
- ///
- public IEnumerable Tables { get; init; } = [];
- }
- ```
+1. SaveToPdf(PdfTableInfo tableInfo)
+ - Функция: Сохраняет данные в PDF-документ с таблицами.
+ - Параметры:
+ - tableInfo: Объект типа PdfTableInfo,
+ - содержащий информацию о пути сохранения файла, заголовке документа и таблицах.
+ - Логика:
+ - Проверяет, что таблицы не пусты.
+ - Создает PDF-документ с помощью PdfCreator.
+ - Добавляет заголовок документа.
+ - Для каждой таблицы создает строки и столбцы на основе двумерного массива строк.
+ - Сохраняет документ по указанному пути.
+
+---
### CustomPdfTableWithGrouping
-Компонент создающий таблицу и группирует элементы по 1 столбцу
-__Публичные Методы__:
-- Сохранить в пдф
- ```c#
- public void SaveToPdf(PdfTableWithGroupingInfo tableInfo) where TType : class
- ```
- PdfTableWithGroupingInfo
- ```c#
- ///
- /// Параметры для создания таблицы в пдф с группировкой по 1 столбцу
- ///
- public class PdfTableWithGroupingInfo where TType : class
- {
- ///
- /// имя файла (включая путь до файла)
- ///
- public string FilePath { get; init; } = @"C:\pdfTable.pdf";
+CustomPdfTableWithGrouping создает PDF-документ с таблицей,
+группируя данные по первому столбцу.
+Использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов.
+Класс поддерживает настройку заголовка таблицы, столбцов, строк и группировку данных.
- ///
- /// название документа(заголовок в документе)
- ///
- public string Title { get; init; } = "Таблица";
+---
- ///
- /// Высота заголовков
- ///
- public float HeaderHeight { get; init; } = 0.5f;
+### Методы:
- ///
- /// Параметры столбцов
- ///
- public IEnumerable Columns { get; init; } = [];
+1. SaveToPdf(PdfTableWithGroupingInfo tableInfo)
+ - Функция: Сохраняет данные в PDF-документ с таблицей, группируя строки по первому столбцу.
+ - Параметры:
+ - tableInfo: Объект типа PdfTableWithGroupingInfo,
+ содержащий информацию о пути сохранения файла, заголовке таблицы, столбцах и строках.
+ - Логика:
+ - Проверяет, что столбцы и строки не пусты.
+ - Создает PDF-документ с помощью PdfCreator.
+ - Добавляет заголовок таблицы в документ.
+ - Создает таблицу с указанными столбцами и строками, группируя данные по первому столбцу.
+ - Сохраняет документ по указанному пути.
+
+
+---
- ///
- /// Список таблиц
- ///
- public IEnumerable> Rows { get; init; } = [];
- }
- ```
-
### CustomPdfHistogram
-Компонент создающий линейную диаграмму
-__Публичные Методы__:
-- Сохранить гистограмму в пдф
- ```c#
- public void SaveToPdf(PdfHistigramInfo histogramInfo)
- ```
- PdfHistigramInfo
- ```c#
- ///
- /// Параметры для создания линейной диаграммы
- ///
- public record PdfHistigramInfo
- {
- ///
- /// Имя файла (включая путь до файла)
- ///
- public string FilePath { get; init; } = @"C:\pdfTable.pdf";
-
- ///
- /// Заголовок документа
- ///
- public string DocumentTitle { get; init; } = "Гистограмма";
-
- ///
- /// Заголовок диаграммы
- ///
- public string HistogramTitle { get; init; } = "Гистограмма";
-
- ///
- /// Расположение легенды
- ///
- public PdfLegendPosition LegendPosition { get; init; } = PdfLegendPosition.Bottom;
-
- ///
- /// Значения
- ///
- public required IEnumerable Values { get; init; }
- }
- ```
+CustomPdfHistogram представляет собой компонент, который сохраняет гистограмму в PDF-документ.
+Этот компонент использует библиотеку PdfSharp.MigraDoc для создания и форматирования PDF-документов.
+Класс поддерживает добавление заголовка документа,
+создание гистограммы на основе переданных данных и сохранение документа по указанному пути.
+---
+
+### Методы:
+
+1. SaveToPdf(PdfHistigramInfo histogramInfo)
+ - Функция: Сохраняет гистограмму в PDF-документ.
+ - Параметры:
+ - histogramInfo: Объект типа PdfHistigramInfo, содержащий информацию о пути сохранения файла, заголовке документа,
+ заголовке диаграммы, данных и положении легенды.
+ - Логика:
+ - Проверяет корректность входных данных (путь к файлу, заголовки, данные).
+ - Создает PDF-документ с помощью PdfCreator.
+ - Добавляет заголовок документа.
+ - Создает линейную диаграмму на основе переданных данных.
+ - Сохраняет документ по указанному пути.
+ - Исключения:
+ - ArgumentException: Если входные данные некорректны (например, отсутствует путь к файлу, заголовок или данные).
+
+---
# Лабораторная работа 3
Программный продукт предназначен для учета успеваемости студентов и управления их данными.
Он позволяет хранить информацию о каждом студенте,
формировать отчеты в различных форматах (Word, PDF, Excel)
-и визуализировать данные с помощью круговой диаграммы.
+и визуализировать данные с помощью линейной диаграммы.
### Цель программы
-Цель программы — автоматизация процесса учета успеваемости студентов, упрощение работы с данными и формирование отчетов для анализа успеваемости и стипендиальных выплат.
+Цель программы — автоматизация процесса учета успеваемости студентов,
+упрощение работы с данными и формирование отчетов для анализа успеваемости студентов.
### Функционал программы
- Хранение данных о студентах:
@@ -281,18 +277,21 @@ __Публичные Методы__:
1) Дать описание паттернов, указанных во вариантах, для каких целей они могут применяться,
какие участники там фигурируют.
2) На основе задания из 3 лабораторной работы, для каждого паттерна придумать сущности,
- относящиеся к той же предметной области, что описаны в задании и реализация которых
+ относящиеся к той же предметной области, что описаны в задании и реализация которых
бы в приложении потребовала применения паттерна.
### Ограничения:
- На каждый паттерн свои сущности
- - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы, а не элементы разработки (что-то типа «У меня паттерн Singleton, укажу ка я класс-подключение к БД через него», не принимается).
-3) Создать диаграммы классов, отражающие взаимодействие новых
-сущностей (а также используемый паттерн) с классами,
-созданными в рамках 3 лабораторной работы. Отдельно отметить
-классы, которые являются участниками паттерна
+ - В качестве источника сущностей использовать предметную область задания 3 лабораторной работы,
+ а не элементы разработки (что-то типа «У меня паттерн Singleton,
+ укажу ка я класс-подключение к БД через него», не принимается).
+3) Создать диаграммы классов, отражающие взаимодействие новых
+ сущностей (а также используемый паттерн) с классами,
+ созданными в рамках 3 лабораторной работы. Отдельно отметить
+ классы, которые являются участниками паттерна
## Вариант 3: _Adapter, Composite, Proxy_
### Паттерн Adapter
+
Паттерн Адаптер используется для того,
чтобы объекты с несовместимыми интерфейсами могли работать вместе.
Он оборачивает один интерфейс в другой,
@@ -419,7 +418,7 @@ __Публичные Методы__:
- FivePointLaggingStudentsReport и HundredPointLaggingStudentsReport (Concrete Products) отчеты по отстающим студентам для 5- и 10-балльной систем.
- ReportManager (Client) класс, который обрабатывает отчеты
-![img_4.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/raw/branch/dev/Lab5-6/img_4.png)
+![img_4.png](https://i.pinimg.com/originals/43/89/ed/4389ed56415070fc606be04621db69cc.jpg)
### Паттерн FactoryMethod
@@ -506,7 +505,7 @@ Object Pool (пул объектов) — это поведенческий па
- Student ConcreteColleague2 - Студент
- Dean`s Office ConcreteMediator - Деканат
-![img_8.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/raw/branch/dev/Lab5-6/img_8.png)
+![img_8.png](https://i.pinimg.com/originals/7f/c3/40/7fc340de38957f5c29de3a6a6689a252.png)
- ILms Mediator - Сайт лмс
- User Colleague - Пользователь лмс
@@ -514,7 +513,7 @@ Object Pool (пул объектов) — это поведенческий па
- Student ConcreteColleague2 - Студент
- Lms ConcreteMediator - Логика сайта лмс
-![img_7.png](https://git.is.ulstu.ru/bekodeg/Cop.Borovkov.Var3/raw/branch/dev/Lab5-6/img_7.png)
+![img_7.png](https://i.pinimg.com/originals/ac/c5/67/acc567be76d33349c35fd5fc10f84b9f.jpg)
### Паттерн Strategy