Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx31 / Курсовой проектНОВЫЙ.docx
Скачиваний:
70
Добавлен:
01.08.2013
Размер:
581.23 Кб
Скачать
      1. Реализация базовых классов компонента Модель

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

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

Основными целями ORM являются: с одной стороны, необходимо организовать работу с БД, учитывая различные варианты взаимоотношения реляционных таблиц («один-к-одному», «один-ко-многим», «много-ко-многим») и необходимость объединения данных разных таблиц в одну выборку (или наоборот, сохранения данных одного объекта в несколько таблиц). С другой стороны, все это должно быть максимально прозрачно и просто для программиста.

Построив реляционную модель базы данных, основанную на модели сущность-связь, видно, что есть множество связей разного типа между таблицами, поэтому для работы с базой данных выбран модуль ORM (рис.14).

На основе ER-модели созданы классы модели:

  • Model_Test – модель содержит информацию о тесте, такую как «Название», «Время» и id курса, к которому тест относится.

  • Model_Testresult – модель хранит результаты тестирования.

  • Model_Question – хранит вопросы к тестовым заданиям. У одного теста может быть много вопросов.

  • Model_Answer – варианты ответов к вопросам теста.

  • Model_Course – модель содержит информацию о курсах. Кроме названия и описания курса, есть информация об авторе и категории, которые являются вторичными ключами.

  • Model_Coursescategor – категории курсов, например «Программирование», «Базы данных». К одной категории относится много курсов.

  • Model_Lection – лекционные задания. Имеют вторичный ключ id курса.

  • Model_Message – хранит переписку пользователей.

  • Model_New – хранит новости, которые опубликовывает администратор.

  • Model_Role – содержит роли пользователей: admin, login,tutor.

  • Model_User – содержит информацию о пользователях.

  • Model_Usercourse – хранит номер студента и номер курса на который он записан.

Рис.14. ER диаграмма модели сущность связь

Кохана поддерживает четыре типа объектных отношений: belongs_to, has_many, has_many "through" and has_one. Связь «много к одному», «один-ко-многим», «многие-ко-многим и «один-к-одному» соответственно.

Связь «много-к-одному», когда одна модель принадлежит другой. Много курсов относятся к одной категории. Пример связи «много-к-одному» в Листинге 16.

Листинг 16. Пример модели Model_Course со связью «много-к-одному».

class Model_Course extends ORM {

protected $_belongs_to = array(

'category' => array(

'model' => 'coursescategor',

'foreign_key' => 'id_category',

)

);

}

В классе Model_Course указывается название модели, отвечающей за связанную таблицу (в нашем случае это модель для таблицы категории курсов coursescategor), а также название внешнего ключа id_category.

Связь has_many используется как «один-ко-многим». Например, и один студент может быть записан на несколько курсов. Таблицы usercourse и course относятся как один-ко-многим (Листинг 17).

Листин 17. Пример модели Model_ Usercourse со связью «один-ко-многим».

class Model_Usercourse extends ORM {

protected $_has_many = array(

'cour' => array(

'model' => 'course',

'foreign_key' => 'id_course',

)

);

}

В классе модели Model_Usercourse указывается название модели, с которой связана таблица Usercourse, а также название внешнего ключа id_course.

Связь has_many "through" используется как многие-ко-многим. Например, есть три таблицы user, roles, roles_users. Надо связать две таблицы через roles_users. Это нужно для назначения прав пользователей. Админ выбирает пользователя и на страницу выводиться соответствующая информация, в том числе и название роли (рис.15).

Рис.15 Связь has_many "through"

Чтобы связать модель Model_Role с моделью Model_Users, надо прописать в каждой модели связь, с какой моделью связывается и через какую модель. Пример связи Model_Role с Model_Users в листинге 18.

Листинг 18. Модель Model_Role

class Model_Role extends ORM {

protected $_table_name = 'roles';

protected $_has_many = array('users' => array('through' => 'roles_users'));

}

Для описания связи используется стандартный синтаксис has_many с добавлением параметра through. Листинг № 7 показывает, что модель Model_Role связана с Model_User через таблицу 'roles_users'. Связь описывается и в модели Model_User (Листинг 19).

Листинг 19. Модель Model_User

class Model_User extends Model_Auth_User {

protected $_primary_key = 'id';

protected $_table_name = 'users';

protected $_has_many = array(

'roles' => array('model' => 'role', 'through' => 'roles_users'),

);

Таким образом, во время реализации базовых классов компонента Модель были созданы основные модели на основе ER-диаграммы, описаны связи между классами моделей, изучен модуль ORM и его методы для работы с моделями.

  1. Выводы

В процессе выполнения курсового проекта была спроектрована архитектура ПО и реализованы базовые классы онлайн системы поддержки самостоятельнйо работы студентов IT-направлений. Были решены поставленные задачи.

Перед тем как начать реализацию проекта, был проведен анализ и сравнение популярных систем тьюторской поддержки и систем дистанционного обучения, таких как «Прометей», «Moodle», «1С: Образование». Определив достоинства и недостатки этих систем, была обоснована актуальность разработки новой системы тьюторской поддержки самостоятельной работы студента в рамках данного курсового проекта.

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

В качестве архитектуры информационной системы выбрана трехуровневая архитектура на основе Web-технологии, так как разрабатываемая система web-ориентированная. В качестве архитектуры программы выбран паттерн MVC. Основываясь на выборе архитектуры ИС и архитектуры программы, были выбраны средства разработки. В качестве языка программирования выбран язык PHP, для работы с базами данных СУБД MySQL, веб-фреймворк Kohana, свободный веб-сервер Apache.

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

Все учебные материалы и информация о пользователях хранятся в базе данных. Для работы с данными созданы классы модели. Модели — это классы, предназначенные для работы с информацией, передаваемой или запрашиваемой контроллером. Для работы с моделью выбран модуль ORM, который позволяет представить работу с базой данных как взаимодействие объектов, выкидывая из кода большинство операций чтения, удаления, создания и изменения данных.

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

Соседние файлы в папке docx31