
9373_8_4
.pdfМИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра информационных систем
ОТЧЕТ
по практической работе №4
по дисциплине «Объектно-ориентированное программирование»
Студент гр. 9373 |
|
Заболотников М.Е. |
|
Студентка гр. 9373 |
|
Петрова С.В. |
|
Преподаватель |
|
|
Егоров С.С. |
Санкт-Петербург
2022
Постановка задачи.
Создать распределенное приложение, включающее клиентскую и серверную части, взаимодействующие посредством сетевого обмена
сообщениями.
Выполнение работы.
Так как в этой работе вся программа делится на клиентскую и серверную составляющие, некоторые из ранее существующих классов претерпели изменения в своей структуре. Рассмотрим эти классы:
1.Класс TApplication (из клиентской части).
a)Добавился указатель на коммуникатор *comm типа TCommunicator,
который нужен для связи с коммуникатором.
b)Добавился метод void fromCommunicator(QByteArray). Он нужен для приёма сообщения из коммуникатора.
c)Добавился метод void toCommunicator(QString). Этот метод нужен для отправки сообщения коммуникатору.
2.Класс TInterface (из клиентской части).
a)void answer(QString) – данный метод принимает в себя строку с ответным сообщением, чтобы вывести результат выполнения операции над полиномом.
b)Так как в данной программе реализуется механизм слотов и сигналов, появляется такой метод как void formRequest() – слот – из области видимости private slots.
c)Появляется сигнал void request(QString) из области видимости signals.
3.Класс TApplication (из серверной части).
a)Здесь тоже появляется указатель на коммуникатор TCommunicator *comm. Как и в клиентской части, здесь он предназначен для связи с коммуникатором.
2
b)В области видимости public slots появляется слот void receive(QByteArray).
4.Класс TRational тоже претерпел изменения.
a)появляется атрибут static QString SEPARATOR. Данный атрибут необходим для разделения частей сообщений, которые поступают от клиента серверу и обратно.
b)В области видимости public появился метод static void setSeparator(QChar), которая устанавливает этот разделитель частей в сообщении.
c)friend QString& operator<<(QString&, TRational) – данная дружественная функция для перегрузки оператора вывода строковой информации с разделителями.
d)friend QByteArray& operator>>(QByteArray&, TRational&) – а это перегрузка оператора ввода строковой битовой информации с разделителями.
e)operator QString ()
5.Помимо сего прочего, добавляются в работу два новых файла common.h
и communicator.h, в которых описываются классы, необходимые для связи клиенткой и серверной частей. Соответственно, в
соответствующих .cpp-файлах более подробно описаны атрибуты и методы нужных классов.
3

Приведём диаграмму классов для клиентской части программы:
Теперь приведём диаграмму классов для серверной части:
4

Тесты работы программы.
Приведём несколько тестов программы.
1. Неверный ввод исходных данных.
Из рисунка видно, что программа сработала верно, потому что, во-
первых, знаменатель рациональной дроби не может быть равен нулю
(как в случае с коэффициентом b) и не может быть отрицательным (как
в случае с коэффициентом a).
2.Теперь попробуем поработать с полиномом 369 2 − 03 − 44 = 4 2 − 1.
Подставляем значение аргумента = 1 и получаем верный результат:
4 ∙ 12 − 1 = 4 − 1 = 3.
3. Теперь найдём корни этого полинома:
5

Программа выдала верный результат:
4 ∙ (12)2 − 1 = 0 и 4 ∙ (− 12)2 − 1 = 0.
4.Выведем теперь данный полином в классической и канонической формах:
Программа вывела полином корректно и в классической и в
канонической форме.
5.Теперь рассмотрим другой полином – полный квадрат: 2 + 2 + 1.
Попробуем проделать с этим полиномом то же самое, что и с предыдущим:
6

Как видно из рисунков, все действия программа выполнила корректно.
6. Рассмотрим теперь пример, когда нет действительных корней:
Понятно, что у уравнение 4 2 + 1 = 0 в действительных числах не разрешимо.
7. И последний пример, когда корни есть, но они иррациональные:
7

Уравнение 4 2 − 3 = 0 имеет два корня, которые являются
иррациональными числами: = ± √23. Программа отработала верно.
Выводы.
В ходе работы программа по работе с полиномом была усовершенствована.
Она была разделена на клиентскую и серверную часть, которые взаимодействовали посредством сетевого обмена сообщениями. На тестах убедились, что программа работает отлично.
8