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

9373_8_4

.pdf
Скачиваний:
1
Добавлен:
20.06.2023
Размер:
994.48 Кб
Скачать

МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра информационных систем

ОТЧЕТ

по практической работе №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

Соседние файлы в предмете Объектно ориентированное программирование