- •Содержание
- •Глава 1. Выбор программных средств для реализации Интернет-комплекса «Знание»
- •1.1. Выбор субд (MySql).
- •1) Быстродействие
- •6) Сообщество
- •7) Переносимость
- •1.2. Язык программирования Java
- •1.3. Технология Struts
- •Глава 2. Анализ предметной области и создание концептуальной модели
- •2.1. Сбор информации о предметной области
- •2.2. Выделение сущностей
- •2.3. Определение отношений между сущностями
- •2.4. Создание концептуальной модели
- •Глава 3. Программная реализация Интернет-комплекса
- •3.1. Логическая структура программы
- •3.2. База данных
- •3.3. Классы работающие с базой данных
- •3.4. Классы-сущности
- •3.5.Action-классы
- •3.6. Пользовательский интерфейс
- •Заключение
- •Список использованных источников
- •Приложение а Внешний вид программы
2.4. Создание концептуальной модели
Таким образом, построена концептуальная модель для данной предметной области.
Рис 2.2. Концептуальная модель данных
Глава 3. Программная реализация Интернет-комплекса
3.1. Логическая структура программы
Давно известно, что любое серьёзное приложение должно быть грамотно спроектировано и разделено на отдельные модули, которые должны быть относительно независимыми друг от друга. Подобное разделение значительно облегчает не только реализацию приложения, но и возможную его модификацию. В этом заключается принцип модульности объектно-ориентированного программирования.
Интернет-комплекс «Знание» представляет собой большое web-приложение с поддержкой базы данных, и целесообразно было разделить его на слои.
Были выделены следующие слои приложения:
База данных.
Классы работающие с базой данных.
Классы-сущности.
Action-классы, работающие с сущностями.
Пользовательский интерфейс.
Приложение реализовано с использованием технологии Struts, а значит его логическая структура сроится в соответствии с паттерном проектирования MVC. В данном случае к Модели (Model) относится вся бизнес-логика классов-сущностей и классов, работающих с базой данных. Пользовательский интерфейс является Представлением (View) в MVC. А все Action-классы, которые получают запросы пользователя и соответствующим образом их обрабатывают, представляют собой Контроллер (Controller).
Рассмотрим названные слои более подробно.
3.2. База данных
Таблицы базы данных – самый низкий логический уровень приложения. В соответствии с концептуальной схемой предметной области создана база данных Knowledge со следующими основными таблицами:
Actors (Деятели)
Events (Мероприятия)
Lectories (Лектории)
Domains (Направления деятельности)
Photo (Фотографии)
Data (Информация в помощь)
Так как между некоторыми таблицами используется связь «многие-ко-многим», то возникла необходимость создать дополнительные промежуточные таблицы:
ActorsAndDomains
ActorsAndEvents
ActorsAndLectories
ActorsAndPhoto
DomainsAndData
EventsAndDomains
EventsAndPhoto
В каждой из этих таблиц всего два столбца, содержащие значения первичных ключей тех таблиц, для которых данная таблица является промежуточной.
3.3. Классы работающие с базой данных
Классы, которые относятся к этому логическому слою, находятся в пакете by.knowledge.database.
Класс DBQueryHelper вспомогательный. Он генерирует SQL запросы к базе данных. Например, рассмотрим метод insertQuery, который конструирует SQL запрос, добавляющий новую запись в таблицу:
public static String insertQuery(String table, String[] fields,
String[] values) {
String query = "INSERT INTO " + table + " (";
for (int i = 0; i < fields.length; i++) {
query += fields[i] + ", ";
}
query = query.substring(0, query.length() - 2);
query += ") VALUES (";
for (int i = 0; i < values.length; i++) {
if ("null".equals(values[i])) {
query += "NULL, ";
}
else {
query += "'" + values[i] + "', ";
}
}
query = query.substring(0, query.length() - 2);
query += ")";
return query;
}
В качестве параметров этот метод принимает название таблицы table, массив названий полей fields и массив соответствующих значений values.
Таким образом, в коде не придётся писать полный запрос типа "INSERT INTO Domains (Name_Domain, Description_Domain) VALUES (‘Экология’, ‘Проблемы экологии’)". А достаточно будет вызвать метод insertQuery, передав ему необходимые параметры. Это позволяет избежать возможных опечаток в запросах и упростить разработку приложения.
Класс DBConnection позволяет работать с базой данных. В нём реализованы методы, с помощью которых открывается и закрывается соединение с базой данных, а также методы, осуществляющие SQL-запросы.