Для реализации поставленных задач был выбран следующий язык программирования: С#.
C# — компилируемый статически типизированный язык программирования общего назначения.
Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции.
Одно из преимуществ языка C# является наличие конструированных форм, и задача событий для элементов форм, что упрощает процесс программирования и делает его интуитивно понятным даже для начинающих. Так же он объединяет достоинства таких языков как Java и C++
В качестве программной среды была выбрана Visual Studio из-за ее способности поддерживать множество языков программирования, подключать дополнительные динамические библиотеки и структурированное отображение проекта.
Основные модули программного средства
Для решения поставленной задачи были сконструированы следующие формы:
· ChatServer;
· ChatClient;
· PrivateChanel;
Форма ChatServer
ChatServer – форма, организующая запуск сервера и мониторинг со стороны администратора. Элементы формы представлены в таблице 3.1. Классы в таблице 3.2
Таблица 3.1 – Элементы формы ChatServer
Название объекта (в коде) | Вид объекта | Функция в программе |
Лог (richTextBox1) | Текстовое поле | только чтение, показывает сообщения клиентов |
Сообщение администратора (textBox2) | Текстовое поле | редактируемое, поле для ввода сообщения от администрации |
Пользователь (listBox1) | Поле списка | выводит никнеймы пользователей в сети |
IP-адрес (listBox2) | Поле списка | выводит IP-адреса пользователей в сети |
Приватное сообщение (button1) | Кнопка | Отправить сообщение выбранному пользователю |
Послать сообщение всем (button2) | Кнопка | Отправить сообщение всем пользователям в чате |
Выгнать пользователя (button3) | Кнопка | Выгнать пользователя из чата по усмотрению администратора |
Таблица 3.2 – Основные классы ChatServer
Имя класса | Его методы | Описание |
server | server.OnClientConnected server.OnClientDisconnected server.OnDataReceived server.OnServerError server.Start server.Broadcast | Присоединение пользователя Отключение пользователя Обновление полученных данных Проверка на ошибки Запуск сервера Отправка сообщений |
SoundPlayer | player.Play | Звуковые оповещения |
listbox1 | listBox1.SelectedIndex ChangeListBox | Выделение никнейма клиента Изменение списка (доб/удал) |
listbox2 | listBox2.SelectedIndex ChangeListBox | Выделение порта клиента Изменение списка (доб/удал) |
Form | (внешний класс) | (содержит в себе все классы и объекты) |
Форма ChatClient
Эта форма представляет собой интерфейс программы клиента в которой доступны возможности для рядовых пользователей чата: отправка сообщений, подключение к серверу и вызов приватного канала (Элементы: таб. 3.3, классы: таб. 3.4)
Таблица 3.3 – Элементы формы ChatClient
Название объекта (в коде) | Вид объекта | Функция в программе |
Никнейм (textBox4) | Текстовое поле | Редактируемое Ввод имени клиента |
Сервер (textBox3) | Текстовое поле | Редактируемое Ввод IP-адрес сервера |
Порт (textBox5) | Текстовое поле | Редактируемое Ввод порта сервера |
Лог (richTextBox1) | Текстовое поле | Только чтение Вывод всех сообщений чата |
Сообщение (textBox2) | Текстовое поле | Редактируемое Ввод сообщения пользователя |
Вход (button3) | Кнопка | Вход в чат по серверу и порту |
Приват-канал (button4) | Кнопка | Открыть окно приват- канала |
Отправить (button1) | Кнопка | Отправка сообщения из textBox2 в лог |
Очистить (button2) | Кнопка | Очистка textBox2 |
Таблица 3.4 – Основные классы ChatClient
Имя класса | Его методы | Описание |
Form | (внешний класс) | (содержит в себе все классы и объекты) |
client | client.OnClientConnecting client.OnClientConnected client.OnClientDisconnected client.OnDataReceived client.OnClientError client.Connect client.Send | Присоединение Реакция на приход других клиентов Реакция на уход клиента Получение сообщений Проверка на ошибки Выполнение соединения Отправка сообщений |
SoundPlayer | player.Play | Звуковые оповещения |
Форма PrivateChanel
Данная форма является интерфейсом программной реализации чата между двумя людьми, отдельно от остальной группы. (элементы формы: таб. 3.5, классы: таб. 3.6)
Таблица 3.5 – Объекты формы PrivateChanel
Название поля | Тип данных | Дополнительные сведения |
Вы: IP-адрес (textLocalIP) | Текстовое поле | редактируемое, IP-адрес пользователя-субъекта |
Вы: Port (textLocalPort) | Текстовое поле | редактируемое, порт пользователя-субъекта |
Собеседник: IP-адрес (textFriendsIP) | Текстовое поле | редактируемое, IP-адрес пользователя-объекта |
Собеседник: Порт (textFriendsPort) | Текстовое поле | редактируемое, порт пользователя-субъекта |
Соединение (button1) | Кнопка | устанавливает соединение между пользователями |
Отправить (button2) | Кнопка | отправка сообщения |
Лог (listMessage) | Список | только чтение, вывод отправленных сообщений |
Таблица 3.6 – Основные классы PrivateChanel
Имя класса | Его методы | Описание |
Form | (внешний класс) | (содержит в себе все классы и объекты) |
SoundPlayer | player.Play | Звуковые оповещения |
Socket | socket.SetSocketOption socket.BeginReceiveFrom socket.Bind socket.Connect socket.Send socket.EndReceiveFrom | Отправка данных Получение данных Связка двух пользователей Соединение между пользователями Отправка сообщения Получение сообщения |
3.3 Разработка диаграммы классов
Диаграмма классов - это диаграмма, демонстрирующая классы системы, их атрибуты, методы и взаимосвязи между ними. Диаграмма классов является ключевым элементом в объектно-ориентированном моделировании.
В данной диаграмме класcов демонстрируется взаимодействие 3 форм и их классов: ChatServer, ChatClient, PrivateChanel, с использованием основных методов
Для разработки программного средства была разработана следующая диаграмма классов (Рисунок 3.1):
Рисунок 3.1 – Диаграмма классов
Выводы по главе
В процессе программной разработки были созданы формы ChatClient, ChatServer и PrivateChanel. Первые две характерезуют собой основной процесс группового чата. PrivateChanel служит для связи ТОЛЬКО двух людей, независимо от работы программы-сервера или программы-клиента. Для каждой программы были разработаны свои классы.