Файл: Предметная область.docx

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 30.10.2023

Просмотров: 25

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




СОДЕРЖАНИЕ

Введение ……………………………………………………………………………...3

1 Предметная область ……………………………………………………………….5

1.1 Язык программирования Python ……………………………………………..5

1.2 Среда разработки PyQt ………………………………………………………..6

1.3 Библиотека для Telegram – Telethon …………………………………………7

1.4 Библиотека для ВКонтакте – vk_api ………………………………………...7

1.5 Таблица стилей Qt QSS ……………………………………………………….8

2 Концепция приложения …………………………………………………………...9

2.1 Создание структуры приложения …………………………………………..10

2.2 Графическая составляющая приложения …………………………………..13

2.3 Логическая составляющая приложения ……………………………………16

Заключение………………………………………………………………………….24

Список использованных источников……………………………………………...25

ВВЕДЕНИЕ

Сложно представить современный мир без компьютеров, информационных технологий, и интернета, так как они уже успели занять особое место в жизни каждого человека. Большой популярностью пользуются социальные сети. Сейчас у каждого человека есть аккаунт в не одной социальной сети, и он посещает их несколько раз по дню. Это позволяет осуществлять коммуникации между родными и близкими людьми, быстро передавать необходимую информацию и даже помогает человеку заниматься саморазвитием.

В нашем случае нас интересует возможность использования средств коммуникации не в одной социальной сети, а сразу в нескольких. Для реализации данной функции существует мультипротокольные чат-клиенты или мультипротокольные мессенджеры.

Актуальность мультипротокольных чат-клиентов в современном мире состоит в том, что на сегодняшний день очень много людей используют мессенджеры, чаты, социальные сети для передачи какой-либо информации между собой.

Главное преимущество мультипротокольных чат-клиентов состоит в том, что они позволяют одновременное пользоваться средствами коммуникаций в нескольких чатах, мессенджерах и даже в социальных сетях. Это позволяет экономить время, которое тратится на переключение между приложениями и это удобно в плане общения, так как пользователь может сразу связаться с нужным ему контактом в нескольких чатах и будет больше вероятности, что информация дойдет до адресата.


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

Целью данного курсового проекта является разработка программного обеспечения, которое позволит в рамках одного приложения пользоваться средствами коммуникации в минимум двух чат-клиентах, мессенджерах или социальных сетях, в нашем случае «Telegram» и «ВКонтакте».

1 Предметная область
Первым этапом разработки приложения является анализ предметной области. Необходимо определить комплекс задач и целей для реализации, которых создается данное приложение.

Необходимо изучить структуру чат-клиентов, мессенджеров или социальной сети. В данном курсовом проекте будет использоваться социальная сеть «Вконтакте», а точнее её API и мессенджер «Telegram», я выбрал их потому что на данный момент это самая популярная социальная сеть и мессенджер, а также у них имеется открытый код в свободном доступе и документации, что очень упрощает процесс разработки. Для того чтобы разработать приложения нужно подробно изучить документацию и библиотеки, которые позволяют работать с «Вконтакте» и «Telegram», также выбрать язык программирования и среду разработки, где будет создаваться приложение. Для того чтобы у приложения был спрос нужно продумать логическую структуру, так чтобы у приложения не было серьезных ошибок, либо они были незаметны пользователю, а также разработать понятный и удобный интерфейс, чтобы пользователь не терялся и понимал как работать с приложением.


    1. Язык программирования Python


Python – высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объем полезных функций.

Python поддерживает несколько парадигм программирования: структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты – динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений

, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Python организовывается в функции и классы, которые могут объединяться в модули[1].


    1. Среда разработки PyQt


PyQt – набор привязок графического фреймворка Qt для языка программирования Python, выполненный в виде расширения Python. PyQt работает на всех платформах, поддерживаемых Qt: Linux и другие UNIX-подобные OC, Mac OS X и Windows. Существует 2 версии: PyQt5, поддерживающий Qt 5, и PyQt4, поддерживающий Qt4. PyQt практически полностью реализует возможности Qt. А это более 600 классов, более 6000 функций и методов, включая:

  • cуществующий набор виджетов графического интерфейса;

  • cтили виджетов;

  • доступ к базам данных с помощью SQL;

  • qScintilla, основанный на Scintilla виджет текстового редактора;

  • поддержку интернационализации (i18n);

  • парсер XML;

  • поддержку SVG;

  • интеграцию с WebKit, движком рендеринга HTML;

  • поддержку воспроизведения видео и аудио.

PyQt также включает в себя Qt Designer – дизайнер графического интерфейса пользователя. Программа pyuic генерирует Python код из файлов, созданных в Qt Designer. Это делает PyQt очень полезным инструментом для быстрого прототипирования. Кроме того, можно добавлять новые графические элементы управления, написанные на Python, в Qt Designer[6].



    1. Библиотека для Telegram – Telethon


Цель библиотеки состоит в том, чтобы иметь существующую библиотеку MTProto, имеющую практически любые зависимости (действительно, везде, где доступен Python, можно запустить эту библиотеку).

Написание на Python означает, что производительность будет нигде не близка к другим реализациям, написанным, например, Java, C ++, Rust или почти любым другим скомпилированным языком. Однако библиотека оказывается довольно приличной для обычных операций, таких как отправка сообщений, получение обновлений или других сценариев. Загрузка файлов может быть заметно медленнее

Если libssl доступно в системе, библиотека будет использовать его для ускорения некоторых критических частей, таких как шифрование и дешифрование сообщений. Файлы будут отправляться и загружаться быстрее.

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


    1. Библиотека для ВКонтакте - vk_api


Работать с API «ВКонтакте» доводилось многим, и каждый может сказать: работать с ним напрямую неудобно. Разумеется, было написано множество библиотек, предоставляющих удобный интерфейс работы с ним. Их используют для облегчения работы и ускорения разработки. Одна из таких библиотек vk_api для Python, она
содержит все методы, которые находится в документации в разделе «Разработчикам» на сайте vk.com, это очень сильный инструмент, который существенно упрощает процесс разработки.

    1. Таблица стилей Qt QSS


QSS - это механизм, позволяющий настраивать внешний вид виджетов библиотеки Qt.

QSS в значительной части был вдохновлён каскадными таблицами стилей CSS для HTML, вследствие чего имеет похожий синтаксис. В частности, как и в CSS, в QSS можно изменять форму, цвета, прозрачность элемента, а также визуальную реакцию на события (такие, как нажатие кнопки). Стили можно присоединять как к отдельному компоненту так и к ко всему приложению, с помощью метода ::setStyleSheet(), имеющегося как у отдельных виджетов, так и у объекта QApplication.

Qt Designer предоставляет возможность интеграции QSS-стилей, что упрощает их тестирование и разработку. Также, при запуске приложения на Qt, можно применить к нему таблицу стилей, воспользовавшись синтаксисом командной строки вида:MyApp -stylesheet MyStyle.qss

Поддержка QSS появилась в Qt начиная с версии 4.3, однако до версии 4.5 этот механизм не работал на платформе Mac OS X

Механизм QSS позволяет полностью отделить визуальный дизайн от разработки приложения и привлечь к стилизации приложения веб-дизайнеров. Наряду с подсистемами QtScript и QML — это один из шагов по сближению Qt-программирования с web-разработкой.


  1. Концепция приложения


Приложения оформлено в темных тонах, они были выбраны, потому что они имеют больше спрос у пользователей и не бросаются сильно своей яркостью в глаза.

Во время разработки приложения были использованы принципы объектно-ориентированного программирования. Когда пользователь открывает приложение, перед ним открывается главное меню приложения, где справа расположены вкладки с выбором канала в моем случаем «Telegram», «ВКонтакте». Внутри каждой вкладки расположены кнопки для входа, при нажатии на эту кнопку происходит обращения к классу авторизации «Telegram» или «ВКонтакте» и запускает окно для авторизации.

Если пользователю нужно будет авторизоваться в «Telegram», то необходимо будет ввести номер телефона и его логин. Для авторизации в «ВКонтакте» пользователь должен ввести, свой номер телефона по которому он регистрировался и пароль. В каждом окне авторизации пользователь может посмотреть свой пароль, чтобы убедиться в его правильности, а также может сохранить свою учетную запись для того чтобы постоянно не вводить свои данные.


После успешной авторизации загружаются контакты пользователя вместе с их фотографиями. Теперь вместо кнопки авторизации во вкладке «Telegram» отображается два списка, один отображает контакты пользователя, с которыми он общался, другой каналы на которые он подписан. Во вкладке «ВКонтакте» отображается также контакты пользователя, с которыми он общался и его беседы. Все в этих списках отсортировано.

При выборе одного из контактов во вкладке «Telegram» или «ВКонтакте», на элементе расположенным справа открывается вкладка с именем этого контакта и внутри этой вкладки загружается сообщения пользователя с этим контактом. Имя пользователя и контакта выделены жирным шрифтом, чтобы можно было легко сориентироваться кому принадлежит то или иное сообщение. Внизу этого компонента с вкладками расположено поле для набора сообщений, а также кнопка для их отправки.


    1. Создание структуры приложения


Для решения этой задачи будет использован способ динамического создания объектов на языке Python в среде разработки PyQt. Технология этого способа заключается в том, что все компоненты приложения будут созданы посредством написания определенного кода, а не с помощью QtDesigner. В текстовом редакторе, в моем случае geany, создается файл с расширением .py. Для того чтобы работать в PyQt, необходимо подключить библиотеки, которые нужны будут в процессе разработки. Подключение необходимо библиотек представлено на листинге 1.
from PyQt5 import QtWidgets, QtCore

from PyQt5.QtWidgets import QApplication, QGridLayout,QTabWidget, QWidget, QCheckBox, QLineEdit, QLabel, QListView, QVBoxLayout, QHBoxLayout, QListWidget, QListWidgetItem, qApp, QAction

from PyQt5 import QtCore, QtGui, uic

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.Qt import QImage, QLabel, QPixmap, QPainter, QItemSelectionModel

from PyQt5.QtGui import QStandardItem, QFont, QStandardItemModel, QPixmap, QIcon, QTextCursor, QTextImageFormat

from PyQt5.QtCore import QTimer, QSize, Qt
Листинг 1 - Подключение библиотек
Ниже расположен листинг 2, отвечающий за динамическое создание объектов, которые пригодятся в разработке приложения.
self.layout_chats = QtWidgets.QGridLayout(self)

self.layout_chats.setAlignment(Qt.AlignTop)

self.telegram_list = QtWidgets.QListWidget(self)

self.telegram_list.setObjectName("telegram_list")

self.telegram_list.setFixedSize(220,700)

self.tab_chats = QtWidgets.QTabWidget(self)

self.tab_chats.setFixedSize(210, 750)

self.tab_chats.setObjectName("tab_chats")

self.users_telegram = QtWidgets.QListWidget(self)

self.users_telegram.setObjectName("users_telegram")

self.users_telegram.setIconSize(QSize(32,32))

self.users_telegram.setFixedSize(200,340)

self.users_telegram.itemClicked.connect(self.item_changed_telegram)