Конвертирование образовательного контента из форматов офисных приложений компании MicroSoft

Содержание



1. Модели конвертирования образовательного контента

2. Структурная модель системы конвертирования контента

3. Уровень архитектуры

4. Модель интерфейса системы конвертирования контента

Библиографический список


1. Модели конвертирования образовательного контента



Базовым средством представления учебного курса в системе Moodle является язык разметки HTML. Структура учебного курса Moodle определяется набором взаимосвязанных HTML-страниц.

Моделирование автоматизированной системы конвертирования контента (АСКК) выполнено по объектно-ориентированной технологии. Для представления модели был использован универсальный язык моделирования UML. Ниже приведено описание в нотации UML трех базовых моделей системы конвертирования в объектно-ориентированном представлении:

		модель использования;

		модель поведения;

		структурная модель.

Модель использования является представлением системы в контексте окружения. Она описывает поведение системы как результат взаимодействия с внешними сущностями. В нотации UML модель использования представляется в виде диаграммы вариантов использования (Use Case) (рис. 1).





Рис. 1 - Модель использования АСКК


Ниже представлена детализация поведения прецедентов модели использования АСКК в виде потоков событий, включающих внешние события – действия пользователя системы (актера).



Таблица 1 - Основной поток событий прецедента «Открыть исходный файл»

Действия актера

Отклик системы

1. Прецедент начинается, когда пользователь выбирает в меню Файл команду Открыть

2. Программа выводит диалоговое окно выбора файла

3. Пользователь указывает исходный файл в формате MS Word 2000, 2003

4. Программа открывает файл

5. include (просмотреть исходный файл)

6. На этом прецедент заканчивается



Альтернативный поток событий

Пользователь может отменить процесс выбора файла, нажав на кнопку «Отмена» в окне выбора файла.



Таблица 2 - Основной поток событий прецедента «Выбрать каталог для сохранения результатов»

Действия актера

Отклик системы

1. Прецедент начинается, когда пользователь выбирает в меню Файл команду Сохранить

2. Программа выводит диалоговое окно для выбора каталога сохранения результатов

3. Пользователь указывает необходимую папку или создает новую

4. Программа запоминает каталог для сохранения результатов

5. На этом прецедент заканчивается



Альтернативный поток событий

Пользователь может отменить процесс выбора каталога, нажав на кнопку «Отмена» в окне выбора каталога.


Таблица 3 - Основной поток событий прецедента «Запустить конвертор»

Действия актера

Отклик системы

1. Прецедент начинается, когда пользователь нажимает кнопку «Запуск конвертирования»

2. include (извлечение структуры документа)

3. include (извлечение абзацев)

4. include (извлечение графических изображений)

5. include (извлечение таблиц)

6. На этом прецедент заканчивается



Альтернативный поток событий

Если ни одного элемента не найдено (заголовки, абзацы, картинки, таблицы), то программа выводит сообщение, что исходный файл не может быть конвертирован.



Таблица 4 - Основной поток событий прецедента «Сохранить результаты»

Действия актера

Отклик системы

1. Прецедент начинается, когда пользователь выбирает в меню Файл команду Сохранить проект

2. Программа сохраняет извлеченные объекты в указанный каталог

3. На этом прецедент заканчивается



Таблица 5 - Основной поток событий прецедента «Вызвать справку»

Действия актера

Отклик системы

1. Прецедент начинается, когда пользователь выбирает пункт меню Справка

2. Программа предоставляет пользователю выбор из двух команд меню: Помощь: WORDtoMOODLE и О программе

3. Пользователь выбирает команду меню

4. extend (Показать содержимое пункта Помощь: WORDtoMOODLE)

5. extend (Показать содержимое пункта О программе)

6. Пользователь нажимает кнопку Закрыть в диалоговом окне

7. На этом прецедент заканчивается


Таблица 6 - Основной поток событий прецедента «Выйти из программы»

Действия актера

Отклик системы

1. Прецедент начинается, когда пользователь нажимает кнопку Закрыть в строке заголовка

2. Программа закрывается

3. На этом прецедент заканчивается



Для представления модели поведения АСКК использовались два типа UML-диаграмм: диаграммы последовательностей и диаграммы деятельностей.

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

Основными объектами разрабатываемой автоматизированной системы являются:

	главное окно (экземпляр CMainFrame) и его интерфейсные элементы, в частности кнопка запуска конвертирования;

	исходный документ (экземпляр CKonvertDoc), содержащий данные и реализующий бизнес-логику системы;

	объект-экземпляр класса HTML_DOC, который создает HTML-файлы для сохранения извлеченных объектов;

	объект-экземпляр класса XML_PARSER, хранящий структуру исходного документа в нотации XML;

	COM-объекты модели Microsoft Word. 

Диаграммы последовательностей с указанием объектов, участвующих в обмене сообщениями, представлены на рисунках 2–4.




Рис. 2 - Диаграмма последовательностей для прецедента «Извлечение структуры документа»





Рис. 3 - Диаграмма последовательностей для прецедента 




Рис. 4 - Диаграмма последовательностей для прецедента 



«Извлечение таблиц»Диаграмма деятельностей описывает последовательность выполнеия операций во времени. Фактически данные диаграммы представляют функциональные модели соответствующих прецедентов.

Диаграммы деятельностей модели АСКК представлены на рисунках 5–7.




Рис. 5 - Диаграмма деятельностей для прецедента «Извлечение структуры документа»




Рис. 6 - Диаграмма деятельностей для прецедента «Извлечение абзацев»




Рис. 7 - Диаграмма деятельностей для прецедента «Извлечение таблиц»


2. Структурная модель системы конвертирования контента



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

Структурная модель АСКК ориентирована на реализацию в системе Microsoft Visual C++. Поэтому она включает в себя три группы классов:

	классы каркасной библиотеки MFC;

	классы стандартной библиотеки шаблонов STL языка С++;

	классы классов-оберток СОМ-интерфейсов Microsoft Word.

Для автоматизированной системы главным классом является CMyKonvertApp – класс приложения, унаследованный от CWinApp.

Для реализации системы конвертирования выбрана модель MDI-приложения. На основе этой модели интерфейсную часть системы представляют:

	класс главного окна приложения CMainFrame;

	дочерние окна CChildFrame;

	диалоговое окно CDialog.

Основными компонентами интерфейса являются классы CButton (кнопки), CScrollBar (полосы прокрутки) и CToolBar (панель инструмен-тов). 

Классы CFileDialog, создающий диалоговые окна в приложении, и CAboutDialog, отображающий вспомогательную информацию по работе программы – наследники базового класса CDialog.

Средства и логика представления данных реализованы с помощью двух классов-потомков корневого класса CView:

	CTreeView, представляющий структуру обрабатываемых данных;

	CMyKonvertView, отображающий исходные данные, предназначен-ные для обработки.

Логика данных представляет классы обертки для COM-объектов MS Word, включающие коллекции и экземпляры объектов абзацев, заголовков, таблиц и графических объектов.

Основу бизнес-логики АСКК составляют классы CRange, CString и XML_PARSER.

На рисунке 8 представлена структурная модель автоматизирован-ной системы, а на рисунках 9–12 показаны детализирующие ее диаграммы классов.





Рис. 8 - Структурная модель АСКК





Рис. 9 - Диаграмма классов приложения




Рис. 10 - Диаграмма классов представления данных





Рис. 11 - Диаграмма классов интерфейса




Рис. 12 - Диаграмма классов логики данных



3. Уровень архитектуры



На данном уровне структурной модели АСКК представлена детализация основных методов классов, реализующих их интерфейс и бизнес-логику.

1. Интерфейс АСКК

Логика и средства представления данных автоматизированной сите-мы конвертирования контента основана на классе представления CMyKonvertView, который наследуется от базового класса CView библиотеки MFC.

Метод OnDraw вызывается, когда надо отобразить документ в окне. В качестве параметра pDC методу OnDraw передается указатель на контекст устройства, используя который надо отобразить документ. Вирту-альные методы OnPrepare, OnBeginPrinting и OnEndPrinting вызываются, если пользователь желает распечатать документ, отображенный в данном окне просмотра. На время отладки приложения в состав класса CMyKonvertView включаются переопределения виртуальных методов AssertValid и Dump. При окончательном построении приложения эти методы не переопределяются.

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

Для управления главным окном приложения используется класс CMainFrame, определенный в файле MainFrm.h. Класс CMainFrame наследуется от базового класса CMDIFrameWnd. Создание главного окна контролируется при обработке сообщения WM_CREATE методом OnCreate. Метод OnCreate сначала вызывает метод OnCreate базового класса CMDIFrameWnd, а затем создает и отображает внутри главного окна панель управления Toolbar и панель состояния Status Bar. Виртуальный метод PreCreateWindow определен в классе CWnd. Он вызывается непосредственно перед созданием окна, связанного с объектом класса и используется для задания параметров и характеристик окна. В качестве параметра этому методу передается структура типа CREATESTRUCT, определяющая характеристики создаваемого окна. Приложение может изменить данные, записанные в этой структуре, чтобы переопределить стили создаваемого окна и повлиять на внешний вид создаваемого окна. MFC AppWizard переопределяет этот метод, но не вносит в него изменений и просто вызывает метод PreCreateWindow базового класса CMDIChildWnd.

Класс, непосредствено связанный с отображением дочерних окон MDI, называется CChildFrame, и он наследуется от базового класса CMDIChildWnd, определенного в библиотеке MFC. Объекты класса представляют дочерние окна MDI главного окна приложения. Внутри этих окон отображаются окна просмотра документов.


2. Элементы управления

Класс CButton содержит методы для работы с кнопками Windows. Данный элемент управления может использоваться самостоятельно или в группах. К какому из данных типов кнопок будет относиться объект класса CButton, определяется ее стилем, задаваемым в функции Create при его создании.

Наиболее часто в качестве макросов обработки сообщений от кнопок используются: 

	ON_BN_CLICKED – пользователь нажал кнопку;

	ON_BN_DOUBLECLICKED – пользователь дважды нажал кнопку.

int GetCheck() const – возвращает собственное состояние флажка или переключателя. Возвращаемое значение может принимать одно из значений: 0 – кнопка не выбрана; 1 – кнопка выбрана; 2 – кнопка в неопределенном состоянии. Если кнопка не является ни переключателем, ни флажком, возвращается 0.

void SetCheck(int nCheck) – устанавливает собственное состояние флажка или переключателя. Значения задаются из набора: 0 – невыбранное; 1 – выбранное; 2 – неопределенное.

Класс CScrollBar является оболочкой для полос прокрутки. Полосы прокрутки аналогичны тем, которые добавляются в главное окно приложения при использовании оконных стилей WS_VSCROLL и WS_HSCROLL. Полоса прокрутки создается вызовом CScrollBar::Create.

Объекты класса CToolBar представляют собой панели управления, содержащие ряд кнопок, на которых помещены битовые образы, между которыми могут находиться разделители. Кнопки панели инструментов могут действовать как обычные кнопки, переключатели или флажки. По умолчанию кнопки панели инструментов имитируют простые кнопки. Однако они могут имитировать также и переключатели, и флажки. Флажки имеют три состояния: установлен, сброшен и неопределенное. Переключатели имеют только два состояния: установлен и сброшен. Для установки стиля отдельной кнопки или разделителя без обращения к массиву сначала необходимо вызвать функцию GetButtonStyle, чтобы получить ее текущее состояние, а затем вызвать функцию SetButtonStyle вместо вызова функции SetButtons. Функцию SetButtonStyle целесообразно использовать при изменении стиля кнопки в процессе работы с приложением. Если необходимо, чтобы в кнопке появился текст, вызовите функцию GetButtonText, чтобы получить текст, который должен быть выведен в кнопке, а затем вызовите функцию SetButtonText для установки текста.

3. Диалоги

Объекты класса CFileDialog представляют диалоговые панели Open или Save As в зависимости от параметра bOpenFileDialog. Если параметр bOpenFileDialog содержит значение TRUE, то создается объект, управляющий диалоговой панелью Open, а если FALSE – диалоговой панелью Save As. 

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

Чтобы создать объект класса CFileDialog, представляющий диалоговую панель для открытия файлов (mFileOpen), и объект, представляющий диалоговую панель для сохранения файлов (mFileSaveAs), можно воспользоваться следующими вызовами конструктора класса:

	CFileDialog mFileOpen(TRUE) – для панели открытия файлов;

	CFileDialog mFileSaveAs(FA LSE) – для панели сохранения файла.

Создание объекта класса CFileDialog еще не вызывает отображения соответствующей диалоговой панели. При вызове метода DoModal для ранее созданного объекта класса CFileDialog на экране открывается соответствующая диалоговая панель. После того как пользователь завершает работу с диалоговой панелью, метод DoModal вернет значение IDOK или IDCANCEL в случае успешного завершения и нуль – в случае возникновения ошибок:

CFileDialog dlgOpen(TRUE);

int iResult=dlgOpen.DoModal().

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

	GetPathName – определяет полный путь файла;

	GetFileName – определяет имя выбранного файла;

	GetFileExt – определяет расширение имени выбранного файла;

	GetFileTitle – позволяет определить заголовок выбранного файла;

	GetNextPathName – если диалоговая панель позволяет выбрать сразу несколько файлов, то этот метод можно использовать для определения полного пути, следующего из выбранных файлов;

	GetReadOnlyPref – позволяет узнать состояние атрибута «только для чтения» (read-only) выбранного файла;

	GetStartPosition – возвращает положение первого элемента из списка имен файлов.

Кроме основных классов создается также класс CAboutDlg, наследованный от базового CDialog. Он отвечает за диалоговую панель «О программе». 

4. Логика данных АСКК

Логика данных системы представлена классами-обертками интерфейсов СОМ-объектов модели Microsoft Word. Поэтому класс CMyKonvertDoc использует пространство имен исполняющей среды Microsoft.NET:

Microsoft.Office.Tools.Word.

Объект Microsoft.Office.Interop.Word::Document является основой для программирования в Word. Он представляет документ и все его содержимое. При открытии документа или создании нового документа создается новый объект Microsoft.Office.Interop.Word::Document, который добавляется в коллекцию Documents объекта Application. Документ, в котором находится фокус, называется активным документом. Он представляется свойством ActiveDocument объекта Application. Список коллекций, входящих в состав объекта Document: Bookmarks, Characters (Range), CommandBars, Comments, DocumentProperties, Endnotes, Fields, Footnotes, FormFields, Frames, Hyperlinks, Indexes, InlineShapes, HorizontalLineFormat, ListParagraphs, Lists, ListParagraphs, Range, ListTemplates, ListLevels, Font, Paragraphs, ProofreadingErrors (Range), Revisions, ReadabilityStatistics, Scripts, Sections, Sentences (Range), Shapes, StoryRanges (Range), Styles, Subdocuments, Tables, Variables, Versions, Windows, Words (Range).

Объект CaptionLabel – член коллекции CaptionLabels. CaptionLabels(index) используется, чтобы возвратить номер уровня заголовка – единственный объект CaptionLabel. Число индекса представляет положение заголовка в коллекции CaptionLabels.

Класс CBitmap (пространство имен: System.Drawing) инкапсулирует точечный рисунок GDI+, состоящий из данных точек графического изображения и атрибутов рисунка. Объект Bitmap используется для работы с изображениями, определяемыми данными точек. Можно создать изображения из файлов, потоков и других источников, используя один из конструкторов Bitmap, и сохранить их в поток или файловую систему с помощью метода Save. Изображения обрисовываются на экране или в памяти с помощью метода DrawImage объекта Graphics. 

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

Свойство Tables представляет коллекцию таблиц документа CTables в пространстве имен System.Web.UI.WebControls. TableCell – элемент содержимого потока, который определяет ячейку содержимого в рамках Table. Пространство имен: System.Windows.Documents. Элемент TableCell является единственным элементом таблицы, непосредственно размещающим содержимое. Прочие элементы таблицы (Table, TableColumn, TableRowGroup и TableRow) существуют для определения структурных атрибутов таблицы.

Класс CRange (пространство имен Microsoft.Office.Tools.Word) инкапсулирует интерфейс объекта Range, который играет ведущую роль в процессе структурного анализа документа. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свойство Range, возвращающие в качестве результата объект Range. Так, если некоторый объект вызвал метод Range, то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод. Каждый объекта Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом – комментарии, ссылки и прочее. Метод Copy, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод Cut, действуя аналогично, копирует объект в буфер, заодно удаляя его. Метод Paste позволяет приклеить объект, помещенный в буфер.

Шаблон класса-контейнера vector<> содержится в стандартной библиотеке STL. Тип vector – это коллекция объектов одинакового типа, каждому из которых присвоен целочисленный индекс. Это тип контейнера, очень похожий на динамический массив. Позволяет выполнять обращение к произвольному элементу по его индексу. Инстанциализация шаблона Vector<CString> – контейнер текстовых строк-переменных типа CString. В таком случае для каждого элемента класса CString определены собственные конструкторы и для создания инициализирующего значения элемента библиотека использует стандартный конструктор класса.


4. Модель интерфейса системы конвертирования контента

образовательный контент конвертирование модель

Модель интерфейса АСКК представляет собой набор абстрактных диалогов, соответствующих ролям пользователя в модели использования системы (рис. 13). В нотации UML абстрактные диалоги детализируются в виде диаграмм состояний, отражающих изменения состояния системы в процессе диалога. Абстрактные диалоги спроектированы с учетом основных сообщений системы и возможных сценариев работы. Детализация абстрактных диалогов системы конвертирования контента представлена в виде диаграмм состояния на рисунках 14-19.





Рис. 13 - Диаграмма состояний для прецедента «Открыть исходный файл»





Рис. 14 - Диаграмма состояний для прецедента «Выбрать каталог для сохранения результатов»




Рис. 15 - Диаграмма состояний для прецедента «Запустить конвертор»





Рис. 16 - Диаграмма состояний для прецедента «Сохранить результаты»





Рис. 17 - Диаграмма состояний для прецедента «Вызвать справку»





Рис. 18 - Диаграмма состояний для прецедента «Выйти из программы»



Внешний вид интерфейса приложения АСКК представлен на рисунке 19.




Рис. 19 - Внешний вид окна приложения АСКК



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

Система конвертирования контента использует расширенный интерфейс MDI-приложений. В Microsoft Visual Studio 2008 появилась возможность отображать окна не в виде каскада, как было ранее, а используя современную более удобную технологию – вкладки. Для этого используются классы CMDIFrameWndEx и CMDIChildWndEx. Пользователь имеет возможность одновременно работать с несколькими документами, переключаясь между ними нажатием на вкладки.

Основные рабочие области и элементы главного окна приложения:

	строка заголовка – отражено название автоматизированной системы, а также стандартные кнопки для Windows-приложений «Свернуть», «Свернуть в окно», «Закрыть»;

	строка меню – раскрывающиеся списки «Файл» и «Справка» с основными функциями АС, справочными сведениями о ней;

	панель инструментов – кнопки этой панели («Открыть», «Сохранить», «Сохранить как», «О программе», «Помощь») дублируют функции из раскрывающихся списков «Файл» и «Справка», панель предназначена для быстрого доступа к ним пользователя;

	окно документа – представляет содержимое выбранного для конвертирования файла;

	окно структуры – представляет структуру конвертируемого документа;

	строка состояния – отражает состояние процесса конвертирования.


Библиографический список



Радаев А. Трехуровневая модульная система представления образовательных ресурсов [Текст] / А. Радаев // Интернет-журнал «Инженерное образование». – 2008. – № 2–3.

Аванесов В.С. Сайт научно-методической поддержки слушателей курса «Педагогические изменения» [Электронный ресурс] / В.С. Аванесов. – URL: http://testolog.narod.ru.

Подласый И.П. Система принципов успешного обучения [Текст] / И.П. Подласый. – М.: Просвещение, 2010.

Grice H.P. Logic and conversation. – In: «Syntax and semantics» [Электронный ресурс] / H.P. Grice, J.L. Morgan, P. Cole, N.Y. Academic в переводе. – URL: http://kant.narod.ru/grice.htm. – 2008. – 41–58 с.

Ушинский К.Д. Руководство к преподаванию по родному слову [Текст] / К.Д. Ушинский. // Собр. соч. – М., 2008. – 665 с.

Занков Л.В. Наглядность и активизация учащихся в обучении [Текст] / Л.В. Занков. – М.: Учпедгиз, 2010.

Морев И.А. Образовательные информационные технологии. Ч. 2. Педагогические измерения [Электронный ресурс] / И.А. Морев. –URL: http://www.pedlib.ru/Books/1/0195/index.shtml.

Подласый И.П. Тестирование в учебном процессе: его история и возможности [Электронный ресурс] / И.П. Подласый. – URL: http://www.elitarium.ru/2006/04/08/

testirovanie_v_uchebnom_processe_ego_istorija_i_vozmozhnosti.html

Коменский Я.А. Великая дидактика [Текст] / Я.А. Коменский // Избр. пед. соч. – М.: Учпедгиз, 2009.

Ким В.С. Тестирование учебных достижений [Текст]: монография / В.С. Ким. – М.; Уссурийск: Изд. УГПИ, 2007. – 214 с.

Moodle [Электронный ресурс]; ВГУ. URL: http://www.vsu.moodle.ru/.

Аванесов В.С. Основы педагогической теории измерений. «Педагогические измерения» № 1 [Текст] / В.С. Аванесов. – 2007. – URL: http://testlog.narod.ru/.