Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АИСД (2 семестр) на С# / Лабоаторная2

.docx
Скачиваний:
1
Добавлен:
20.08.2023
Размер:
1.53 Mб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

отчет

по лабораторной работе №2

по дисциплине «Алгоритмы и структуры данных»

Тема: Поддержка обработки исключительных ситуаций.

Студенты гр.

Преподаватель

Санкт-Петербург

2023

Задание: переработать программу работы с библиотекой фигур, дополнив её механизмом контроля исключительных ситуаций.

Для выполнения задания было решено предусмотреть следущие случаи:

  1. - некорректные параметры при формировании фигуры;

  2. - непопадание точки на экран;

- повторный поворот/отражение уже повёрнутой/отражённой фигуры.

Описание работы программы

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

В данной программе в случае появления ошибки на экран выводится сообщение с указанием объекта при рисовании которого возникла ошибка и фигура не отрисовывается.

При обработке исключений используются ключевые слова 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

Соседние файлы в папке АИСД (2 семестр) на С#