Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет компьютерного проектирования
Кафедра проектирования информационных компьютерных систем
Дисциплина "Объектно-ориентированное программирование"
К защите допустить:
Руководитель курсовой работы _______________ А.В.Михалькевич 23.11.2024 |
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
на тему
БГУИР КР 1-40 05 01-10 № 150 ПЗ
Студент | (подпись студента) |
Курсовая работа представлена на проверку 23.11.2024 ___________________ (подпись студента) |
2024
БГУИР КР 1-40 05 01-10 № 150 ПЗ, гр. 814303
, создание веб-приложения "социальная сеть", Минск: БГУИР - 2024.
Пояснительная записка 38932 с., 14 рис., 0 табл.
Ключевые слова:
Предмет Объектно-ориентированное программирование, А.В.Михалькевич
Предмет: создание веб-приложения Объект: шаблоны проектирования. Цель: Верстка и программирование социальной сети с использованием архитектурного шаблона проектирования MVC(MVT) на python-фрэймворке Django. Методология проведения работы: в процессе решения поставленных задач спроектирован и разработан простой и удобный интерфейс веб-приложения, разработана логика приложения с использованием паттерна MVC, изучена и применена работа с базой данных. Результаты работы: разработана социальная сеть с удобным и боьшим функционалом. Интерфейс сайта был максимально упрощен и в меру информативен. Область применения результатов: Посетителями данного проекта будут люди всех возрастных категорий, так как общаться и высказывать мнение характерно для всех возрастных групп.Ссылка на онлайн-репозиторий GitHub:https://github.com/nikita907/taoapp. Ссылка на сайт на хостинге:http://taoap.pythonanywhere.com/
-
Курсовой проект представляет собой упрощённую социальную сеть с возможностью авторизации(имеется проверка на уникальность e-mail и никнейма,а также на соответсвие паролей друг другу). Есть возможность для пользователя предочтавлять свой текстовый и фото-контент.Для каждого комментария отображается ссылка на автора комментария(если автор не предпочёл остаться анонимным,и если этот комментарий не от Вас). Социальная сеть предоставляет возможность перехода на страницу других пользователей,оставления там комментариев или прочтение уже существующих.Осуществленна система лайков и дизлайков для комментариев,с подстветкой уже выбранного лайка или дизлайка.
На сайте реализован функионал разных ролей.Если Вы обладаете ролью администратора,вы можете удалить пользователя,удалить комментарий,наделить другого пользователя правами администратора(если этот пользователь уже не является администратором)
На главной странице отображается весь список пользователей и 2 последних комментария о них,их фотография,если она имеется и информация о нем,если он её предоставил,общее количество комментариев о конкретном пользователе.Также на главной странице отображаются элементы навигации,есть возможность поиска по никнейму
Проект разработан при помощи языка Python, с использованием языков разметки HTML и CSS,фреймворка Django
Вся информация, которая отображается на сайте, хранится при помощи баз данных, доступ к которым осуществляется по запросам.
Навигация по сайту довольно проста и интуитивно понятна
В зависимости от метода программирование подразделяют на:
Python – мультипарадигмальный язык программирования: он позволяет совмещать процедурный подход к написанию кода с объектно-ориентированным и функциональным.Так почему же всё-таки ООП? Потому,что оно дает возможность создавать расширяемые системы. Это одно из самых значительных достоинств ООП и именно оно отличает данный подход от традиционных методов программирования. Расширяемость (extensibility) означает, что существующую систему можно заставить работать с новыми компонентами, причем без внесения в нее каких-либо изменений. Компоненты могут быть добавлены на этапе выполнения.Многоразового использования программного обеспечения на практике добиться не удается из-за того, что существующие компоненты уже не отвечают новым требованиям. ООП помогает этого достичь без нарушения работы уже имеющихся клиентов, что позволяет нам извлечь максимум из многоразового использования компонент.
· Мы сокращаем время на разработку.
· Компоненты многоразового использования обычно содержат гораздо меньше ошибок, чем вновь разработанные, ведь они уже не раз подвергались проверке.
· Когда некая компонента используется сразу несколькими клиентами, то улучшения, вносимые в ее код, одновременно оказывают свое положительное влияние и на множество работающих с ней программ.
· Если программа опирается на стандартные компоненты, то ее структура и пользовательский интерфейс становятся более унифицированными, что облегчает ее понимание и упрощает ее использование.
Также,у ООП есть очень большой плюс: код удобнее поддерживать, изменять и обслуживать, так как он разбит на модули, которые проще воспринимаются визуально.
Для своего проекта я использовал следующие технолигии:
1. Язык программирования Python (3.8)
2. Фреймворк Python Django
3. HTML5
4. CCS3
1. Python: Python это язык программирования общего назначения, нацеленный в первую очередь на повышение продуктивности самого программиста, нежели кода, который он пишет. Говоря простым человеческим языком, на Python можно написать практически что угодно (веб-/настольные приложения, игры, скрипты по автоматизации, комплексные системы расчёта, системы управления жизнеобеспечением и многое многое другое) без ощутимых проблем. Более того, порог вхождения низкий, а код во многом лаконичный и понятный даже тому, кто никогда на нём не писал. За счёт простоты кода, дальнейшее сопровождение программ, написанных на Python, становится легче и приятнее по сравнению с Java или C++..Элегантный дизайн и эффективный, дисциплинирующий синтаксис этого языка облегчают программистам совместную работу над кодом. Кроме того,по сравнению с другими языками программирования.Несомненным достоинством является то, что интерпретатор Python реализован практически на всех платформах и операционных системах.Ещё одним достоинством является наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности.Следующая немаловажная черта - расширяемость языка, этому придается большое значение и, как пишет сам автор, язык был задуман именно как расширяемый.
2.Django: Django был представлен в 2005 году. За 14 лет существования он сильно изменился и усовершенствовался. В фреймворке постоянно появляются новые возможности, а старые совершенствуются. Важный момент: когда вы разбираетесь с Django и ищете ответ на конкретный вопрос, чаще всего это не вызывает затруднений. Тысячи специалистов уже решали такие же проблемы до вас и делились своим опытом в интернете. Так работает сообщество Django.Ещё одно преимущество:Административная панель Django автоматически генерируется при создании приложения. Это избавляет разработчика от необходимости создавать админку вручную. Функциональность Django расширяется с помощью плагинов. Это программные модули, которые позволяют быстро добавить на сайт нужную функцию.В популярных языках программирования есть библиотеки, с помощью которых удобно решать специальные задачи. В библиотеках можно найти готовые решения: функции, классы, конфигурации и так далее. Благодаря таким решениям расширяются возможности языка, а также упрощается создание приложений.Значительную роль в успехе Django сыграли несколько известных сайтов, которые использовали этот фреймворк. В их число входят Pinterest, Dropbox, Spotify, сайт The Washington Post. В настоящее время сообщество Django включает более 11 тыс. разработчиков из 166 стран мира.
3.HTML5:HTML – это самый распространенный инструмент создания сайтов, если вы обратите внимание на исходных код страниц, то увидите, что среди всех онлайн-проектов большинство пишется именно на базе HTML.HTML считается самым демократичным языком, так как он оптимальным образом поддерживается и интерпретируется Интернет-проводниками.Ведь браузеры функционируют по индивидуальным принципам, а HTML позволяет деликатно подстроить представление страниц под условия каждого из них.Кроме того, HTML никогда не стоит на месте в плане развития, без конца появляются новые версии, которую позволяют оптимизировать и облегчить работу, улучшая при этом общую картину конечного результата. Последняя версия HTML – это HTML 5.Если рассматривать эту версию в отдельности, то можно выявить следующие плюсы: она стала более гармоничной в плане SEO-продвижения, так что теперь и код вы сможете оптимально сопоставить с поисковыми алгоритмами.Кроме того, было усовершенствована мультимедийная сторона HTML. И если раньше для воспроизведения музыки или видео приходилось подключать вспомогательные расширения, то теперь вы сможете легко обойтись без подобной необходимости, используя встроенные функции HTML5.
4.CSS3: Главное полезное качество каскадных таблиц стилей заключается в их блочных свойствах, блочной ориентировке. Чтобы использовать конкретный стиль CSS по всей странице или даже сайту, достаточно задать параметры лишь единожды. После этого нужные стили (по идентификатору и названию) могут присваиваться любым элементам веб-ресурса.
Системой контроля версий является программный продукт, который запоминает все ваши модификации данных и, при необходимости, позволяет выполнить откат. А также дополнительной функцией является возможность определить, кто внес различные изменения в документ. С представленной системой программист способен отслеживать различные модификации документов, добавлять и объединять ветви проектов, а также выполнять сброс документа до определенных моментов. Репозиторий считается главным определением VCS - это специальное выделенное хранилище, на котором хранится информация о файлах, также с помощью хранилища возможно наблюдать за модификацией данных.На сегодняшний день существует две группы VCS: распределенные и централизованные.Так как я использовал распределенные,тоС помощью этих систем контроля версий каждый разработчик может сохранить копию проекта. У них также есть общее центральное хранилище, которое уже содержит изменения, отправленные из сохраненных копий разработчиков, и они уже синхронизируется. Когда пользователи работают с распределенными системами контроля версий, они обычно синхронизируют свою копию с центральным репозиторием и вносят любые изменения в свой локальный репозиторий.
Есть несколько преимуществ таких систем:
· Автономность программиста при работе над проектами.
· Повышенная надежность.
· Гибкость всей системы.
Одной из самых известных СВК распределённой группы является git.Git — это «система управления версиями», используемая множеством программистов. Эта программа отслеживает изменения, происходящие с файлами, чтобы впоследствии можно было восстановить состояние кода на нужный момент времени.
В моём курсовом проекте использовался онлайн-репозиторий GitHub. Ссылка на него: https://github.com/nikita907/taoapp.
Шаблон проектирования Модель – Представление – Контроллер
(MVC) – это шаблон программной архитектуры, построенный на основе сохранения представления данных отдельно от методов, которые взаимодействуют с данными [5].
Не смотря на то, что схема MVC была первоначально разработана для персональных компьютеров, она была адаптирована и широко используется веб-разработчиками из-за точного разграничения задач и возможности повторного использования кода. Схема стимулирует развитие модульных систем, что позволяет разработчикам быстро обновлять, добавлять или удалять функционал.
Моя соц.сеть организуется по так называемому паттерну MVC. В Django этот паттерн называют MVT, но сути это не меняет. Что из себя представляет MVC: Модель (Model), Представление (View), Контроллер (Controller). Модель отвечает за работу с данными. Она взаимодействует с базой данных, проверяет данные на корректность, создает расчетные данные в случае необходимости. Представление отвечает за то, как эти данные будут выглядеть, придает им удобочитаемую форму. Контроллер является прослойкой между моделью, представлением и посетителем сайта. Когда посетитель сайта запрашивает страницу, этот запрос передается контроллеру. Он в свою очередь собирает все модели, которые могу пригодиться, и просит их предоставить данные. Потом контроллер выбирает представление, которое лучше всего отвечает запросу пользователя и передает ему данные. Сформированная страница (представление) передается как ответ на запрос.(рис.2).В Django начинается небольшая путаница, поскольку в его терминах этот паттерн называется Model-View-Template (Модель-Представление-Шаблон). Однако View в Django скорее выполняет функцию контроллера, а Template — представления.
Рисунок 2 - Схема шаблона MVC
На рисунке показана структура одностороннего потока данных и пути его следования между различными компонентами, а также их взаимодействие.
Каждый владелец сайта знает, что для правильного функционирования сайта нужны не только файлы с кодом страниц, но и базы данных. Для взаимодействия с базами данных используются системы управления базами данных (СУБД).
База данных представляет собой определенный набор данных, которые, как правило, связаны объединяющим признаком либо свойством (или несколькими). Эти данные упорядочены, например, по алфавиту. Обилие различных данных, которые могут быть помещены в единую базу, ведет к множеству вариаций того, что может быть записано: личные данные пользователей, записи, даты, заказы и так далее.
В первую очередь это удобно тем, что информацию можно быстро заносить в базу данных и так же быстро ее извлекать при необходимости. Если на заре развития web-разработки все необходимые данные нужно было прописывать в коде страницы, то теперь такая необходимость отсутствует – нужная информация может быть запрошена из базы данных при помощи скриптов и запросов. Специальные алгоритмы хранения и поиска информации, которые используются в базах данных, позволяют находить нужные сведения буквально за доли секунд – а при работе в виртуальном пространстве скорость работы ресурса важна как ничто другое.
Фреймворк Django предоставляют свою Базу Данных,работать с которой очень удобно и просто
Немаловажной является и взаимосвязь информации в базе данных: изменение одной строчки может привести к значительным изменениям других строк. Работать с данными таким образом гораздо проще и быстрее, чем, если бы изменения касались только одного места в базе данных.В модели у меня в проекте реализованы связи между сущностями посредством ключей,как раз таки функция ON_CASCADE позволяет удалить дочернюю сущность,если удаляется родительская,что облечает работу в разы
Для управления реляционными базами данных применяется особый язык программирования – SQL. Сокращение расшифровывается как “Structured query language”, в переводе на русский «язык структурированных запросов».
Команды, которые используются в SQL, делятся на те, которые манипулируют данными, те, которые определяют данные, и те, которые управляют данными.
Схема работы с базой данных представлена на рисунке 5:
Рисунок 5 - Схема работы с базой данных
После успешного прохождения регистрации и авторизации мы попадаем на главную страницу,где можем видеть навигационную панель(ссылка на личный кабинет,на главную страницу,на выход из сессии,на другую страничку-о проекте),всех пользователей,2 последних комментариев о нём(если автор коммента не скрыл свою личность-ссылка на автора,если скрыл-то автор коммента будет отображён как anonim,если это от вас-автор коммента будет отображен как “От вас:”),его роль(если он администратор),количество комментариев о нём,функция поиска (рис.3)
Рис.3 (обычный пользователь на главной странице)
Рис.4 (администратор на главной странице)
Если мы перейдем на свою страницу,там будет отображено информация о нас,если она указана,аватарка,если она загружена, и все комментарии о нас,на каждый комментарий есть автор коммента,текст коммента,колличество лайков и дизлайков, дата публикации комментарии.(рис.5)
Рис.5 (Своя страница)
Если мы перейдём на любого пользователя,мы увидим информацию о нём,его аватарку,комментарии о нём,каждый комментарий содержит автора коммента,текст коммента,и две кнопки-лайк и дизлайк,если нажата одна из кнопок,она подсвечивается соответствующим красным цветом,есть дата публикации коммента(рис.6)
Рис.6(страничка другого пользователя с ролью обычного
юзера)
Если же мы авторизируемся с ролью администратора,страница пользователя,к которому мы заходим,модернизируется-появляется возможность удалить пользователя,наделить его правами администратора(если этот пользователь не админ),удалить комментарий(рис.7)
Рис.7