Отчёт_по ПР1
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра информационных систем
отчет
по практической работе №1
по дисциплине «Объектно-ориентированное программирование»
Студент гр. 9373 |
|
Заболотников М.Е. |
Студентка гр. 9373 |
|
Петрова С.В. |
Преподаватель |
|
Егоров С.С. |
Санкт-Петербург
2022
Постановка задачи.
Создать консольное приложение согласно представленной диаграмме классов, предназначенное для вычисления корней полинома второй степени на множестве целых чисел.
Выполнение работы.
В ходе выполнения практической работы был создан класс TApplication. В данном классе были созданы три метода:
TApplication() – конструктор класса;
exec() – это исполнительный метод, который не принимает в себя аргументы, а вызывает метод menu(); реализует выбор пункта и запускает нужные алгоритмы;
menu() – метод, реализующий вывод пункты меню и возвращающий код выбранного пункта.
Все методы, кроме menu(), имеют открытую область видимости – menu() находится в закрытой области. Класс TApplication нужен для запуска приложения.
Также был создан модуль TPolinom. В нём хранятся все действия, которые необходимо произвести с полиномом. В классе TPolinom содержатся следующие атрибуты и методы:
printMode – имеет пользовательский тип данных EPrintMode, созданный в рамках этого же класса. Является индикатором для вывода полинома в классическом или каноническом виде;
a, b, c – коэффициенты полинома (имеют пользовательский тип данных number);
r1, r2 – корни полинома второй степени (имеют пользовательский тип данных number).
Все атрибуты данного класса имеют закрытую область видимости.
Методы класса (имеют открытую область видимости):
TPolinom(number, number, number) – конструктор класса, принимающий в себя три коэффициента полинома;
operator<<(ostream&, TPolinom&) – дружественная функция, реализующая перегрузку оператора вывода. Этот метод необходим для корректного вывода полинома;
value(number) – принимает в себя значение аргумента типа number в полином и возвращает типа number.
setPrintMode(EPrintMode) – принимает аргумент типа EPrintMode и устанавливает вид вывода полинома;
roots() – проверяет наличие корней типа number (в данной задаче – целых), находит их (если они есть) и записывает их в свойства r1 и r2. Данный метод возвращает true, если удовлетворяющие условиям корни найдены, и false – в остальных случаях:
printRoots() – выводит значения корней.
В главном исполняющем файле main.cpp создаётся объект класса TApplication и вызывается функция exec().
Все числа, задающиеся в классе TPolinom, имеют тип данных number. Это нужно для того, чтобы программа была универсальной и можно было её подстраивать под любые условия задачи, меняя лишь сам тип number, но при этом не трогая класс TPolinom.
Ниже представлена диаграмма классов (см. рис. 1):
Рисунок 1 – Диаграмма классов
На диаграмме представлены все классы и их атрибуты и методы.
Тесты работы программы.
Для проверки исправности программы возьмём несколько примеров.
Рассмотрим полином .
Находя корни этого полинома, мы должны получить и . Если записать полином в каноническом виде, ожидаем получить следующего вида выражение: . Далее подставим значение аргумента , должны получить . Результаты работы программы представим ниже.
|
|
|
|
Рисунок 2 |
Рисунок 3 |
Рисунок 4 |
Рисунок 5 |
На рис. 2 демонстрация ввода коэффициентов полинома (по умолчанию, , и ) и вывод полинома в классической форме. На рис. 3 показан вывод полинома в канонической форме, на рис. 4 – вывод корней, и на рис. 5 – значение полинома при .
Далее рассмотрим ещё несколько примеров.
Полином , , :
Ожидаемый результат:
Классическая форма |
Каноническая форма |
Корни |
|
|
Не существует |
Нет |
37 |
Результат работы программы:
|
|
|
|
Полином , , :
Ожидаемый результат:
Классическая форма |
Каноническая форма |
Корни |
|
|
Не существует |
Есть, но они не удовлетворяют условию целочисленности |
33 |
Результат работы программы:
|
|
|
|
Полином , , :
Ожидаемый результат:
Классическая форма |
Каноническая форма |
Корни |
|
|
|
|
4 |
Результат работы программы:
|
|
|
|
Полином , , :
Ожидаемый результат:
Классическая форма |
Каноническая форма |
Корни |
|
|
|
|
16 |
Результат работы программы:
|
|
|
|
Полином , , :
Ожидаемый результат:
Классическая форма |
Каноническая форма |
Корни |
|
|
|
|
-60 |
Результат работы программы:
|
|
|
|
Полином , , :
Ожидаемый результат:
Классическая форма |
Каноническая форма |
Корни |
|
|
|
|
-25 |
Результат работы программы:
|
|
|
|
Выводы.
В ходе работы была создана программа по работе с полиномами второй степени, а именно: демонстрирующая полином в двух формах, считающая значение полинома в точке и определяющая его корни. Для этого были созданы классы в соответствии с заданной диаграммой. Проведены контрольные тесты программы на некоторых различных примерах полиномов. В ходе тестирования ожидаемые результаты совпали с результатами работы программы. Программа написана согласно положениям и идеям парадигмы ООП.