9373_8_5
.pdfМИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра информационных систем
ОТЧЕТ
по практической работе №5
по дисциплине «Объектно-ориентированное программирование»
Студент гр. 9373 |
|
Заболотников М.Е. |
|
Студентка гр. 9373 |
|
Петрова С.В. |
|
Преподаватель |
|
|
Егоров С.С. |
Санкт-Петербург
2022
Постановка задачи.
Создать распределенное приложение, включающее клиентскую и серверную части, взаимодействующие посредством сетевого обмена сообщениями. Реализовать функционал по работе как с целыми, так и с рациональными числами.
Выполнение работы.
Для того, чтобы выполнить данную работу, необходимо было модифицировать исходную программу, то есть поработать с серверной и клиентской частями программы. Что было сделано?
1.В клиентской части произошли следующие существенные изменения:
Укласса TInterface (в соответствующем .h-файле) появились два новых атрибута: QRadioButton *i_mode и QRadioButton *r_mode, которые будут отвечать за кнопки выбора режима работы с целыми числами и с рациональными соответственно.
2.В серверной части:
a) В файле tpolinom.h был класс TPolinom был обёрнут в шаблон класса template <class number> для того, чтобы потом программа понимала,
счем мы работаем – с целыми числами (TPolinom <int>) или с
рациональными (TPolinom <TRational>). То же самое произошло и
со всем методами этого класса.
b)Были переопределены операции ввода и вывода для целых чисел.
c)Была переработана функция void TApplication::recieve(QByteArray msg) так, чтобы она работала и в режиме целых чисел, и в режиме рациональных. Для этого было создано перечисление типа modes с
атрибутами I_MODE и R_MODE. Здесь же были добавлены проверка
на ошибки ввода и защита от неверных значений.
Далее приведём диаграмму классов для клиентской и серверной частей
(рис. 1 и рис. 2 соответственно):
2
Рисунок 1 – Диаграмма классов для клиентской части
Рисунок 2 – Диаграмма классов для серверной части
3
Тесты работы программы.
Чтобы продемонстрировать исправную работу программы, проведём несколько тестов.
Рассмотрим полином 369 2 − 03 − 1. Работать будем в целых числах. Для программы это означает, что мы как бы "отбрасываем" знаменатели, то есть получаем полином 36 2 − 1.
1. Подставляем = 1, должны получить 35:
Ответ верный.
2. Корни у полинома есть, но они не целые ( = ± 16):
Ответ верный.
3. Вывод классической и канонической формы этого полинома:
4
Как видим, результаты получились корректные.
Теперь "вернём" знаменатели и поработаем с полиномом 369 2 − 03 − 1. В
теории должен быть следующий набор результатов:
a)(1) = 3;
b)= ± 12;
c)Классическая форма: 4 2 − 1;
d)Каноническая форма: 4 ( − 12) ( + 12).
Практические результаты представлены ниже:
a) |
b) |
5
c) d)
Из рисунков понятно, что программа справляется со своими задачами н отлично.
Проверка на ошибки в вводе данных:
Результат верный, так как знаменатель дроби не может равняться нулю.
Выводы.
В ходе работы было создано распределённое приложение, включающее клиентскую и серверную части, взаимодействующие посредством сетевого обмена сообщениями. Такая программа теперь может посредством пользовательского выбора работать как с целыми числами, так и с
рациональными. Создание шаблона классов позволило осуществить реализацию
6
такого выбора. Программа успешно прошла все тесты, дав положительные
результаты.
7