Министерство образования Республики Беларусь
Учреждение образования
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Факультет Компьютерных технологий
Кафедра проектирования информационных компьютерных систем
Дисциплина "Объектно-ориентированное программирование"
К защите допустить:
Руководитель курсовой работы _______________ А.В.Михалькевич 22.12.2024 |
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
на тему
БГУИР КР 1-40 05 01-10 № 188 ПЗ
Студент | (подпись студента) |
Курсовая работа представлена на проверку 22.12.2024 ___________________ (подпись студента) |
2024
БГУИР КР 1-40 05 01-10 № 188 ПЗ, гр. 784371
, Автоматизация работы новостного портала, Минск: БГУИР - 2024.
Пояснительная записка 32812 с., 8 рис., 0 табл.
Ключевые слова:
Предмет Объектно-ориентированное программирование, А.В.Михалькевич
Электронная доска объявлений (новостей) функционально подобна обыкновенной: это сайт, где каждый желающий может вывесить своё объявление или новость, а все посетители сайта — прочитать его. Электронная доска объявлений (новостей), как правило, поделена на несколько тематических разделов, согласно содержанию объявлений (новостей).
Большинство электронных досок — бесплатные. Для размещения своего объявления пользователю нужно лишь ввести в специальной форме его тему, своё имя/псевдоним либо название организации, а также координаты: адрес электронной почты, почтовый адрес, телефон, URL своего сайта и т. п. (набор данных зависит от конкретного ресурса). Как правило, отображаются только имена авторов и темы объявлений, а для просмотра полного текста объявления пользователь должен щёлкнуть по ссылке, ведущей к нему. В некоторых досках объявления могут подавать только зарегистрированные пользователи, в некоторых — все. Сейчас в интернете существует тысячи и даже десятки тысяч досок объявлений. Обычно каждая из них посвящается какому-либо отдельному виду объявлений. Существуют национальные доски объявлений, предназначенных для жителей конкретной местности.
Электронные доски объявлений бывают двух видов: модерируемые (те, у которых есть так называемый модератор — человек, контролирующий работу этой доски) и немодерируемые — работающие автоматически.
Большинство досок объявлений в интернете предполагают размещение объявлений о продаже и покупке товаров и услуг. Но есть и такие сервисы, которые предлагают размещать объявления о передачи различных вещей в дар, а также о поиске новых хозяев для домашних животных, которые передаются в добрые руки безвозмездно. На страницах досок объявлений представлены тысячи бесплатных объявлений о недвижимости, авто, услугах, поиске работы, знакомствах, покупке и продаже оборудования, компьютеров, средств связи и прочему. Доски объявлений позволяет разместить объявление с фотографией и без дополнительной регистрации.
Разработаем упрощенную электронную доску объявлений. Исходя из материалов предметной области, центром системы будет пользователь, размещающий объявление. Для начала он должен внести в базу свои данные, а затем добавить новое объявление.
Каждый пользователь будет заноситься в базу данных, и по этим данным станет возможно отследить, какие объявления были им размещены.
Каждое объявление, как правило, относится к какой-либо категории, будь то автомобили, недвижимость, животные и др. При публикации объявления необходимо указать категорию, к которой оно относится, что позволит найти данное объявление при просмотре какой-либо конкретной категории.
В основе IDEF0 методологии лежит понятие блока, который отображает некоторую бизнес-функцию. Четыре стороны блока имеют разную роль: левая сторона имеет значение "входа", правая - "выхода", верхняя - "управления", нижняя - "механизма (рисунок 1).
Рисунок 1 – Функциональная модель
Проанализировав предметную область и требования к задаче, выделим следующие объекты, которые имеют отношение к системе:
Составим список всех функций, имеющих отношение к системе:
Основной процесс (а также его декомпозиция) функциональной модели находится в приложении А.
Система состоит из двух связанных компонентов: клиента (браузер) и сервера. Вся логика приложения выполняется на сервере и осуществляется по вызову клиента, т.е. клиент создает запрос. Сервер выполняет его и возвращает результат клиенту. Диаграмма состояний клиентской части представлена в приложении В. Диаграммы вариантов использования описывают функциональное назначение системы или то, что система должна делать. Данная диаграмма представлена в приложении Б.
Центральное место в объектно-ориентированном программировании занимает разработка логической модели системы в виде диаграммы классов. Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывать их внутреннюю структуру и типы отношений. Данная диаграмма представлена в приложении Д.
При рассмотрении диаграммы состояния, было отмечено, что хотя эта диаграмма и используются для спецификации динамики поведения систем, время в явном виде в них не присутствует. Временной же аспект поведения может иметь существенное значение при моделировании синхронных процессов, описывающих взаимодействия объектов. Для моделирования взаимодействия объектов во времени в языке UML используются диаграммы последовательности (приложение Г). Полный проект программной системы представляет собой совокупность моделей логического и физического уровней, которые должны быть согласованы между собой. В языке UML для физического представления моделей систем используются диаграммы реализации (implementation diagrams), которые включают в себя диаграмму компонентов (приложение Е) и диаграмму развертывания (приложение Ж).
Все данные располагаются в базе данных, которая в свою очередь состоит из таблиц. В данном проекте использовались 3 таблицы, которые связаны между собой:
Итоговая модель представлена в приложении З.
Сущность находится в первой нормальной форме, если все атрибуты являются простыми или атомарными (их нельзя разделить на составные части без потери смысла) и среди атрибутов отсутствуют повторяющиеся группы. Также, не допускается хранить в одном атрибуте разные по смыслу значения.
Для приведения сущности к первой нормальной форме необходимо:
Наша информационная модель соответствует вышеперечисленным требованиям, следовательно, находится в первой нормальной форме.
Сущность находится во второй нормальной форме, если она находится в первой нормальной форме и в ней отсутствуют неключевые атрибуты, функционально зависящие от части первичного ключа. Сущность, имеющая простой первичный ключ (т.е. состоящий из одного атрибута) и находящаяся в первой нормальной форме, автоматически находится и во второй нормальной форме.
Для приведения сущности ко второй нормальной форме необходимо:
Наша информационная модель соответствует вышеперечисленным требованиям, следовательно, находится во второй нормальной форме.
Сущность находится в третьей нормальной форме, если она находится во второй нормальной форме и отсутствуют функциональные зависимости между ее неключевыми атрибутами.
Другая формулировка. Сущность находится в третьей нормальной форме, если она находится во второй нормальной форме и каждый ее неключевой атрибут нетранзитивно зависит от первичного ключа.
Таким образом, можно сказать, что в третьей нормальной форме каждый неключевой атрибут сущности функционально зависит только от всего первичного ключа и ни от чего другого.
Для приведения сущности к третьей нормальной форме необходимо:
Наша информационная модель соответствует вышеперечисленным требованиям, следовательно, находится в третьей нормальной форме.
Для написания курсового проекта использовались 2 фреймворка – Spring и Hibernate.
The Spring Framework — универсальный фреймворк с открытым исходным кодом для Java-платформы.
Центральной частью Spring Framework является Inversion of Control контейнер, который предоставляет средства конфигурирования и управления объектами Java с помощью рефлексии. Контейнер отвечает за управление жизненным циклом объекта: создание объектов, вызов методов инициализации и конфигурирование объектов путем связывания их между собой.
Объекты, создаваемые контейнером, называются управляемыми объектами или бинами (beans). Обычно конфигурирование контейнера осуществляется путем загрузки XML файлов, содержащих определение бинов и предоставляющих информацию необходимую для создания бинов.
Объекты могут быть получены либо с помощью Поиска зависимости, либо Внедрения зависимости. Поиск зависимости — шаблон проектирования, когда вызывающий объект запрашивает у объекта-контейнера экземпляр объекта с определенным именем или определенного типа. Внедрение зависимости — шаблон проектирования, когда контейнер передает экземпляры объектов по их имени другим объектам либо с помощью конструктора, либо свойства, либо фабричного метода.
Spring Framework обладает следующими отличительными особенностями:
Эти особенности привели в результате к продукту, который не ограничен какой-то одной областью или технологией и может быть легко адаптирован и изменен для различных целей, оставаясь при этом простым для использования.
Hibernate — библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного проецирования (object-relational mapping — ORM). Она представляет собой свободное программное обеспечение с открытым исходным кодом, распространяемое на условиях GNU Lesser General Public License. Данная библиотека предоставляет лёгкий в использовании каркас (фреймворк) для отображения объектно-ориентированной модели данных в виде традиционных реляционных баз данных.
Целью Hibernate является освобождение разработчика от значительного объёма сравнительно низкоуровнего программирования по обеспечению хранения объектов в реляционной базе данных. Разработчик может использовать Hibernate как в процессе проектирования системы классов и таблиц «с нуля», так и для работы с уже существующей базой данных.
Hibernate не только решает задачу связи классов Java с таблицами базы данных (и типов данных Java с типами данных SQL), но также предоставляет средства для автоматической генерации и обновления набора таблиц, построения запросов и обработки полученных данных и может значительно уменьшить время разработки, которое обычно тратится на ручное написание SQL- и JDBC-кода. Hibernate автоматизирует генерацию SQL-запросов и освобождает разработчика от ручной обработки результирующего набора данных и преобразования объектов, максимально облегчая перенос (портирование) приложения на любые базы данных SQL.
Для публикации объявления необходимо предварительно внести контактную информацию пользователя. Для этого через форму регистрации указываются ФИО пользователя, его электронная почта, а также телефонный номер. Информация добавляется в базу данных.
Далее заполняется форма публикации объявления. Указывается тема объявления, подробности, категория, к которой следует его отнести. При выполнении данного условия объявление добавляется в базу данных и становится доступным для просмотра.
Для каждого объявления возможен просмотр пользователя, разместившего его, категории. При выборе категории все объявления, относящиеся к ней, автоматически отображаются на экране. Также при выборе конкретного пользователя на экран выводятся все объявления, которые были им опубликованы.
Диаграмма работы бизнес-логики серверной части представлена в приложении И.
Для запуска проекта его необходимо развернуть на сервере Tomcat. Для этого поставляемый на диске файл bulletinBoard.war скопировать в папку %TOMCAT_HOME%\webapps и запустить сервер командным файлом startup.bat.
После этих манипуляций сервер развернет проект из архива и зарегистрирует его.
Для корректной программы также необходимо на сервере MySQL создать базу данных bulletinBoard посредством выполнения скрипта bulletinBoardDB.sql.
Для запуска WEB проекта необходимо в адресной строке браузера ввести http://localhost:8080/bulletinBoard, после чего в браузере откроется основной вид программы (рисунок 2).
Рисунок 2 – Окно после запуска программы
Проведем тестирование разработанной системы. Произведем регистрацию пользователя. Для этого открываем список пользователей нажимаем кнопку «Новый Пользователь» (рисунок 3).
Рисунок 3 – Регистрация нового пользователя
Как видно на рисунке 4, пользователь добавлен в базу данных и отображён в списке пользователей.
Рисунок 4 – Обновлённый список пользователей
Просмотрим профиль созданного пользователя (рисунок 5).
Рисунок 5 – Профиль созданного пользователя
Как видно на рисунке, данный пользователь не создал ещё ни одного объявления. Опубликуем объявление, нажав кнопку «Новое Объявление».
Рисунок 6 – Ввод данных нового объявления
Нажимаем кнопку «Сохранить». Объявление добавлено в базу данных, о чём свидетельствует обновившийся профиль пользователя. На рисунке 7 показан результат.
Рисунок 7 – Результат добавления объявления
Просмотрим список всех объявлений. Как видим, новое объявление благополучно отобразилось и в общем списке (рисунок 8)
Рисунок 8 – Обновлённых список объявлений