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

Лабораторные Егоров / 0361_ЦукановаПА_№6

.pdf
Скачиваний:
5
Добавлен:
03.02.2024
Размер:
337.72 Кб
Скачать

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

ПРАКТИЧЕСКАЯ РАБОТА №6

по дисциплине «Объектно-ориентированное программирование»

 

 

 

Семенова Е.А.

Студенты гр. 0361

 

Цуканова П.А.

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

 

 

Егоров С.С.

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

2023

ЗАДАНИЕ НА ПРАКТИЧЕСКУЮ РАБОТУ

Студенты Цуканова П.А., Семенова Е.А. Группа 0361

Исходные данные: Создать распределенное приложение, включающее клиентскую и серверную части, взаимодействующие посредством сетевого обмена сообщениями. Клиентские и серверные части представляют собой приложения, реализованные в работе №5.

Клиентская часть модифицируется таким образом, что реализованные функции матриц могут исполняться по желанию пользователя на областях определения: вещественная, комплексная и рациональная. Отличие серверной части заключается в том, что классы «Матрица» и «Квадратная матрица» параметризуются. Параметром класса делается абстрактный тип number, при этом файл number.h исключается из серверного приложения

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

СПЕЦИФИКАЦИИ КЛАССОВ

Общая часть:

1. Класс TCommunicator.

Атрибуты класса:

1. ready, тип атрибута TCommunicator*. Область видимости

private. Поле для хранения адресов и портов сервера и

клиента.

2.params, тип атрибута TCommParams. Область видимости private. Используется для взаимодействия с UDP сокетами.

Методы класса:

1.

TCommunicator(TCommParams&,

QObject*).

Область

 

видимости

public.

Конструктор

класса,

выделяет

 

динамическую память под атрибуты класса и задает их.

2.

send(QByteArray). Область видимости public

slots.

 

Отправляет сообщение серверу или клиенту.

 

3.

recieve().

Область видимости

public

slots. Принимает

сообщение от сервера или от клиента и вырабатывает сигнал

readed().

4. recieved(QByteArray). Область видимости public signals.

Используется для чтения сообщения от сервера или клиента.

Клиентская часть:

1. Класс TApplication.

Методы класса:

1. TApplication(int, char**). Область видимости public.

Конструктор класса.

2. fromCommunicator(QByteArray). Область видимости public

slots. Вызывается в ответ на сигнал «readed()» от коммуникатора и передает результат работы программы в интерфейс

3. toCommunicator(QString). Область видимости public slots.

Вызывается в ответ на сигнал «request()» от интерфейса и

передает запрос в коммуникатор.

2. Класс TInterface.

Атрибуты класса:

1.matrix_size, тип атрибута QLabel. Область видимости public. Заголовок поля ввода размера матрицы.

2.matrix_elements, тип атрибута QLabel. Область видимости public. Заголовок поля ввода элементов матрицы.

3.size, тип атрибута QSpinBox. Область видимости public.

Поле ввода размера матрицы.

4.matrix, тип атрибута QTableWidget. Область видимости public. Поле ввода элементов матрицы.

5.matrix_btn, тип атрибута QPushButton. Область видимости public. Кнопка для отправки команды «вывести текущую

матрицу».

6. rank_btn, тип атрибута QPushButton. Область видимости public. Кнопка для отправки команды «вывести ранг текущей матрицы».

7. determinant_btn, тип атрибута QPushButton. Область

видимости public. Кнопка для отправки команды «вывести определитель текущей матрицы».

8. transposed_btn, тип атрибута QPushButton. Область

видимости public. Кнопка для отправки команды «вывести транспонированную текущую матрицу».

9. output, тип атрибута QLabel. Область видимости public.

Неизменяемое текстовое поле для вывода результатов программы.

Методы класса:

1.TInterface(QWidget*parent=nullptr). Область видимости

public. Конструктор класса.

2.~TInterface(). Область видимости public. Деструктор

класса, реализовывает удаление объекта типа TInterface и

освобождение динамической памяти, использованной под атрибуты класса.

3. answer(QString). Область видимости public slots.

Реализует вывод результата работы сервера в GUI приложение.

4. formRequest(). Область видимости private slots.

Формирует сообщение серверу и вырабатывает сигнал request() с сообщением.

5. handleSizeChange(int i). Область видимости public slots.

При вводе нового размера матрицы обновляет текущую матрицу.

6. request(QString). Область видимости public slots.

Используется для передачи сообщения серверу.

Серверная часть:

1. Класс TApplication.

Атрибуты класса:

1.comm, тип атрибута TCommunicator*. Область видимости

public.

Методы класса:

1. TApplication(int,char**). Область видимости public.

Конструктор класса, реализует создание объекта типа

TApplication, выделяет динамическую память под атрибуты

класса и задает их.

2.recieve(QByteArray). Область видимости public slots..

2.Класс Matrix.

Атрибуты класса:

1. Size_i, тип атрибута int. Область видимости public. Поле,

которое хранит значение количества строк массива.

2. Size_j, тип атрибута int. Область видимости public. Поле,

которое хранит значение количества столбцов массива.

3. elements, тип атрибута number**. Область видимости private. Поле, хранит в себе элементы матрицы.

Методы класса:

1. Matrix(). Область видимости public. Конструктор класса,

инициирует создание матрицы по умолчанию.

2. Matrix(int n). Область видимости public. Конструктор класса, инициализирует матрицу заданного размера n.

3. Matrix(int x, int y). Область видимости public.

Конструктор класса, инициализирует матрицу заданного

размера n.

4. ~Matrix(). Область видимости public. Деструктор класса,

освобождает выделенную динамическую память.

5. inputElement(int i, int j, number el). Атрибуты int i,

int j, number el принимают координаты матрицы и новое значение элемента. Область видимости public. Производит ввод нового значения матрицы.

6. print(). Область видимости public. Производит вывод элементов матрицы.

7. rank(). Область видимости public. Производит расчет ранга матрицы.

8. transpose(). Область видимости public. Производит транспонирование матрицы.

9.operator=(const Matrix &other). Область видимости

public. Перегрузка оператора присваивания.

3.Класс SquareMatrix.

Атрибуты класса:

1. size, тип атрибута int. Область видимости private. Поле,

которая хранит значение размера массива.

Методы класса:

1. SquareMatrix(). Область видимости public. Конструктор класса, инициирует создание матрицы по умолчанию.

2. SquareMatrix(int n). Область видимости public.

Конструктор класса, инициирует создание матрицы заданного размера.

3. determinant(). Область видимости public. Производит расчет определителя матрицы.

4. Класс TRational.

Атрибуты класса:

1. num, тип атрибута int. Область видимости public. Поле,

которое хранит значение делимого.

2. den, тип атрибута int. Область видимости public. Поле,

которое хранит значение делителя.

Методы класса:

1. TRational(). Область видимости public. Конструктор класса,

производит создание рационального нулевого числа.

2. TRational(int n, int d). int n, int d – значения делимого

и делителя соответственно. Область видимости public.

Конструктор класса, производит создание комплексного числа

с переданными значениями делимого и делителя.

3.TRational(int i). Область видимости public. Конструктор

класса, производит преобразование целого числа до

рационального с делителем 1.

4. operator-(const TRational& c). Область видимости public.

Перегрузка оператора вычитания.

5. operator*(const TRational& c). Область видимости public.

Перегрузка оператора умножения.

6. operator/(const TRational& c). Область видимости public.

Перегрузка оператора деления.

7. operator=(const TRational& c). Область видимости public.

Перегрузка оператора присваивания.

8.operator==(const TRational& c). Область видимости

public. Перегрузка оператора сравнения (равенства).

9.operator!=(const TRational& c). Область видимости

public. Перегрузка оператора сравнения (неравенства).

5.Класс TComplex.

Атрибуты класса:

1. re, тип атрибута double. Область видимости public. Поле,

которое хранит значение вещественной части числа.

2. im, тип атрибута double. Область видимости public. Поле,

которое хранит значение мнимой части числа.

Методы класса:

1. TComplex(). Область видимости public. Конструктор класса,

производит создание комплексного числа по умолчанию с нулевыми значениями вещественной и мнимой части числа.

2. TComplex(double r, double i). double r, double i

значения вещественной и мнимой частей числа соответственно.

Область видимости public. Конструктор класса, производит создание комплексного числа с переданными значениями вещественной и мнимой части числа.

3. TComplex(int i). Область видимости public. Конструктор класса, производит преобразование целого числа до комплексного с нулевой мнимой частью.

4. operator-(const TComplex& c). Область видимости public.

Перегрузка оператора вычитания.

5. operator*(const TComplex& c). Область видимости public.

Перегрузка оператора умножения.

6. operator/(const TComplex& c). Область видимости public.

Перегрузка оператора деления.

7. operator=(const TComplex& c). Область видимости public.

Перегрузка оператора присваивания.

8. operator==(const TComplex& c). Область видимости public.

Перегрузка оператора сравнения (равенства).

9. operator!=(const TComplex& c). Область видимости public.

Перегрузка оператора сравнения (неравенства).

10. operator>>(istream& in, TComplex& c). Область

видимости public. Дружественная функция. Перегрузка оператора ввода.

11. operator<<(ostream& os, const TComplex& c). Область

видимости public. Дружественная функция. Перегрузка оператора вывода.

ДИАГРАММА КЛАССОВ

На рисунке 1 представлена диаграмма классов, дополненная атрибутами и методами.

Клиентская часть:

Рисунок 1 – Диаграмма классов клиента.

Серверная часть:

Соседние файлы в папке Лабораторные Егоров