АИСД (2 семестр) на С# / Лабоаторная2
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
отчет
по лабораторной работе №2
по дисциплине «Алгоритмы и структуры данных»
Тема: Поддержка обработки исключительных ситуаций.
Студенты гр. |
|
|
Преподаватель |
|
|
Санкт-Петербург
2023
Задание: переработать программу работы с библиотекой фигур, дополнив её механизмом контроля исключительных ситуаций.
Для выполнения задания было решено предусмотреть следущие случаи:
- некорректные параметры при формировании фигуры;
- непопадание точки на экран;
- повторный поворот/отражение уже повёрнутой/отражённой фигуры.
Описание работы программы
Функции обработки исключений помогают правильно обрабатывать ошибки и вместо аварийного отказа выполнять действия, которые не нарушат функционала программы.
В данной программе в случае появления ошибки на экран выводится сообщение с указанием объекта при рисовании которого возникла ошибка и фигура не отрисовывается.
При обработке исключений используются ключевые слова try, catch.
Чтобы создать исключение, используется ключевое слово throw.
Для фиксации исключительных ситуаций был реализован класс ClassError.cs, который имеет следующие методы:
CheckPoints() проверяет находится ли фигура на экране и перехватывает ошибку, если фигура находится за пределами экрана. При этом программа не вылетает, а выдаёт “Точка вне границ экрана”.
CheckWasRotated() проверяет была ли фигура повёрнута и выдаёт сообщение “Объект уже был повёрнут”.
CheckWasReflected() проверяет была ли фигура отражена и выдаёт сообщение “Объект уже был отражён”.
CheckParameters(), который проверяет были ли координаты точек фигуры заданы корректно. И выдаёт сообщение “Некорректные параметры при формировании фигуры”.
Рассмотрим механизм обработки исключений на примере рисования шляпы.
Допустим при создании шляпы пользователь ввёл следующие координаты:
main.cs
В конструкторе класса rectangle при создании экземпляра объекта вызовется метод CheckPointsOnErrors().
rectangle.cs
В методе CheckPointsOnErrors() происходит вызов методов CheckPoints() и CheckParametres() класса ClassError, которым передаются координаты точек a и b (расположение левого нижнего угла фигуры и правого верхнего угла фигуры).
rectangle.cs
ClassError.cs
В блоке try метода CheckParametrs() происходит следующая проверка: если координаты точки “a” имеют значения больше значения координат точки “b” (то есть, если левый нижний угол находится выше или дальше правого верхнего угла фигуры), то программа создаёт исключение с помощью ключевого слова throw. Далее исключение перехватывается с помощью оператора catch, который обрабатывает это исключение, выводит на экран сообщение с ошибкой и переменной error присваивается значение true. Метод CheckParamets() возвращает значение переменной error. Если значение переменной error – true, то переменная addInDrawList класса rectangle становится равной false и фигура не отрисовывается. Аналогично происходит обработка всех исключительных ситуаций.
Результаты тестирования
1) При выполнении данной строчки кода была выдана следующая ошибка:
2) При выполнении данных строчек кода была выдана следующая ошибка:
Пользователь попытался отразить объект ухо дважды.
3) При выполнении данной строчки кода была выдана следующая ошибка:
Здесь пользователь ввёл неверно координаты левого нижнего угла объекта шляпы. (-15,25)
Вывод: в ходе работы был изучен механизм обработки исключительных ситуаций.
Список использованных источников
Колинько, П. Г. Пользовательские структуры данных: Методические указания по дисциплине “Алгоритмы и структуры данных, часть 1”.– СПБ.: СПБГЭТУ “ЛЭТИ”, 2022. – 64 с.
Код программы
Circle.cs
Line.cs
main.cs
Myshape.cs
parallelogram.cs
point.cs
rectangle.cs
reflectable.cs
rotatable.cs
Screen.cs
Shape1.cs
utility.cs