Разработка интерактивного учебного комплекса поJava на основеweb-технологий



СОДЕРЖАНИЕ

ВВЕДЕНИЕ

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

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

Целью выпускной квалификационной работы является разработка интерактивного учебного комплекса поJava на основеweb-технологий.

Для достижения поставленной цели необходимо решить следующие задачи:

  1. Рассмотреть существующие решения в этой области.
  2. Выбрать средства разработки ИУК.
  3. Определить портрет пользователя.
  4. Разработать структуру комплекса.
  5. Подобрать материал.
  6. Разработать комплекс.
  7. Осуществить настройку, отладку, тестирование и внедрение комплекса.

1 АНАЛИТИЧЕСКИЙ ОБЗОР

1.1 Обзор предметной области

1.1.1 Существующие средства обучения

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

Методы – это те способы совместной деятельности обучающихся и преподавателей, направленные на достижение образовательных целей. Методы применяются совместно со средствами обучения.

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

В ходе выполнения работы были рассмотрены наиболее актуальные виды средств обучения:

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

2. Электронные. К данному виду относятся электронные учебники, сетевые образовательные ресурсы, мультимедийные образовательные энциклопедии, интерактивные учебные комплексы. (ИУК) В большинстве случаев, электронные учебники  и мультимедийные образовательные энциклопедии мало отличаются от печатных, за исключением того, что они реализованы на основеweb – технологий.  ИУК предоставляют больший набор возможностей: более гибкую структуру курса, практико – ориентированный подход и многое другое.

3. Аудиовизуальные. Слайды, слайды – фильмы, видеофильмы, учебные кинофильмы – это всё относится к данным средствам. Аудиовизуальные средства отличаются от всех предыдущих уникальной формой подачи материала, воздействующих на слуховое и визуальное восприятие человека.

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

1.1.2 Интерактивные учебные комплексы

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

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

ИУК могут использоваться как в начальном, так и в среднем, и в высшем образовании. Предметные области, для которых применимы системы, так же различны – начиная со школьных предметов и заканчивая освоением сложных систем и программ.

1.1.3 Актуальность ИУК поJava на основеweb-технологий

Для определения актуальности поставленной задачи, необходимо рассмотретьJava как предметную область для обучения.

Java – это сильно типизированный, кроссплатформенный язык объектно-ориентированного программирования. (ООП)  Программы наJava выполняются виртуальной машиной  (JVM) – т.е. программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

ЯзыкJava используется для серверных приложений в крупных корпорациях. Примером таких корпораций могут служить банки, страховые компании, розничные сети и так далее. Такие банки, как  Barclays, Goldman Sachs, Citigroup применяютJava для написания бэк-энд и фронт-энд офисных электронных систем, бэк-энд Google+ так же реализован наJava.

Так же язык ООП широко применяется при создании вэб – приложений. Если говорить о рынке Европы, многие вэб-приложения госучреждений, страховых, образовательных, оборонительных учреждений написаны на Java. Не менее популярным является применениеJava вAndriod приложениях. Все приложения наAndriod написаны с помощью Java с использованием Google и Android API.

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

Веб-разработка — это процесс создания веб-приложения, включающий в себя веб-дизайн, вёрстку веб-страниц, веб-программирование, а также конфигурирование веб-сервера.

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

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

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

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

1.2 Обзор аналогов

В ходе анализа были рассмотрены существующие решения, что позволяет выделить наиболее актуальные и популярные учебные интерактивные комплексы.

1.GeekBrains - крупный интерактивный учебный комплекс. Он предоставляет широкие возможности по изучению различных языков программирования:Pythoon,Android,iOS, веб-разработчик, веб-дизайнер и так далее [1]. В число них входит иJava. К достоинствам можно отнести то, что обучение ориентировано на трудоустройство, по окончанию обучения выдаётся сертификат о его прохождении, так же появляется опыт как разработки проектов самостоятельно, так и в команде. Наличие наставника, готового помочь, широких смежных технологии, которые осваиваются обучающимся, а так же проектно - ориентированное подход во время прохождения курса - является весомыми и неоспоримыми преимуществами.

К недостаткам можно отнести то, что обучение платное (12,5 тысяч в месяц), длительность обучения длиться год - что может быть не всем удобно. Наличие теста для успешного начала обучения - так же является минусом системы, она не рассчитана на новичков, которые только-только знакомятся с основамиJava и ООП. Несмотря на то, что  предоставляется возможность пройти дополнительное обучение для поступления, оно так же оплачивается - 8 тысяч рублей за 8 занятий по 2 часа.

2.JavaRush - онлайн - курс обучения, являющийся практико - ориентированным [2]. В отличии отGeekBrains, данный комплекс заточен под обучение программированию только наJava. 1200 практических небольших заданий, более 500 часов опыта программирования, в случае успешного и полного прохождения курса, что является хорошей заявкой для трудоустройства. Целью его, как и аналоги выше - так же является трудоустройство. Так же к достоинствам можно отнести частичную бесплатность, включительно до 10 уровня,  подсказки по настройке среды для решения задач  -IntelleJIdea.

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

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

1.3 Обзор средств разработки

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

1.Ручное написаниеweb – приложений. Данный способ предполагает создание сайтов на одном или нескольких языках программирования. Наиболее популярными для этих целей являются языкиJava,Pythoon,PHP,JavaScript. Активно используются так жеHTML ,CSS,jQuery,ApacheMQ. Существующие варианты ручной разработки с использованиемweb - технологий:

Следует отметить, что для серьёзных проектов необходимы знания языков какback-end разработки, так иfront-end, это приводит к тому, что от разработчика требуются знания множества языков программирования, а так же множества смежных технологий, освоение (полное или частичное) на требуемом уровне занимает значительное количество времени.

2. Конструкторыweb - приложений. Этот метод предполагает их создание на основе шаблона или в специальном конструкторе. Такой способ является достаточно распространённым, множество конструкторов легко доступны в глобальной сети Интернет. Данный способ подходит для создания простых электронных учебников (сайтов), не требующих сложной логики. Так же при помощи таких конструкторов, учебные пособия – сайты достаточно просто и быстро может создать обычный пользователь, не обладающий навыками программирования. Для реализации интерактивного учебного комплекса, с достаточно сложной логикой, данный способ не подходит.

3. ПрименениеCMS движка вweb – технологиях.CMS - программное обеспечение (ПО), позволяющее управлять содержимым. Это средство позволяет создать как простые, так и сложные ИУК на основеweb – технологий. Так же ПО управления содержимым предоставляет возможность подключения к базе данных и взаимодействовать с ней. Помимо прочего, дляCMS можно писать свои модули, которые будут реализовывать функции, которых ещё нет. Данное ПО быстрее изучать (по отношению ко времени изучения языков для написанияweb – приложений вручную), соответственно, оно проще. ИспользованиеCMS для создания интерактивного учебного комплекса является неплохим вариантов, однако нужно учитывать следующие риски:

На основе вышесказанного, было принято решение использоватьCMS движок, более быстрый в освоении, чемfront-end языки. Поскольку интерактивный учебный комплекс не предполагает сохранение паспортных данных и  множества персональных данных, за исключением ФИО и адреса почты, необходим для регистрации, то риск взлома не так существенен.

1.4 ОбзорCMS движков

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

1. WordPress (WP) – наиболее популярнаяCMS, использующаяся в настоящее время. Это программное обеспечение с открытым исходным кодом [3]. Преимущества, которыми обладает данное ПО:

У каждого, даже самого хорошего ПО, есть и свои недостатки. Они представлены ниже:

2.Joomla – вторая по популярности CMS в мире. Так же, как иWordPress она являетсяopensourse решением, обладающая всеми ключевыми достоинствамиWP: простотой, доступностью и надёжностью [4]. Основным отличием является то, что она создана на основе схемы разделения данных приложенияview-modelcontroller, что позволяет создавать мощные онлайн приложения.

К достоинствам даннойCMS относятся:

Как и любая другаяCMS, уJoomla есть свои недостатки. Их список приведён ниже:

3. Drupal – это CMS совершенно другого уровня. Если Joomla и WordPress – простые, но ограниченные решение, то данная система управления содержимым – платформа, позволяющая практически любой замысел, однако, требующая определённых навыков программирования. Крупные корпоративные сайты, соцсети и интернет – магазины – это и многое другое успешно создаётся наDrupal уже не первый год [5].

Плюсы использования даннойCMS:

Недостатков у данной системы всего два - цена и уровень сложности. Неподготовленному пользователю будет непросто создать проект на Drupal. В случае, если он хочет нанять профессионального разработчика, придется заплатить ему больше, чем разработчику на WordPress или Joomla. Премиум-темы на Drupal стоят на порядок дороже, чем темы на WP.

В результате проведённого выше анализа, была выбранаJoomla как бесплатнаяCMS, предоставляющая широкий спектр возможностей для создания интерактивного учебного комплекса.

1.5 Постановка задачи

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

Исходя из вышесказанного, можно поставить конечную задачу ВКР - разработать интерактивный учебный комплекс поJava, который позволяет пользователю получить все необходимые знания, для написания ПО на данном языке программирования. Комплекс необходимо реализовать таким образом, чтобы он минимизировал минусы уже существующих аналогов ИУК.

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

Таблица 1 - Требования пользователей по отношению к недостаткам существующих ИУК

Недостаток существующего ИУК

Требования пользователей

Плата за обучение (полная или частичная)

Полностью бесплатный функционал комплекса

Линейная структура курса, без возможности пропуска темы, перехода к другим

Незаблокированные возможности перехода к любой теме в ИУК, для новичков – система помощи, помогающая пройти курс (включаемая по их желанию)

Ориентированность на конкретный уровень пользователя

За счёт нелинейности и выбора изучаемых тем, ИУК может использоваться не только новичками, но и опытными обучающимися, в случае такой необходимости (пример – прохождение сертификации)

На основании требований пользователя, можно сформулировать и его портрет.

1.6 Определение портрета пользователя

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

Портрет пользователя приведён ниже:

Возраст: от 12 лет, т.к. может использоваться для обучения школьников. Ограничение сверху отсутствует.

Пол: любой.

Языки, которые знает: русский, английский (на уровне чтения и перевода со словарём, для понимания кода примеров программ наJava).

Локация: любая точка мира.

Оборудование, имеющееся в наличии: стационарный компьютер, ноутбук или планшет с выходом интернет (выбранные средства разработки предоставляют возможности адаптации ИУК под мобильные платформы, однако их поддержка не предполагается) .

Наиболее посещаемые ресурсы: Социальные сети, хабрахабр, электронные учебники поJava, практикумы по программированию и иные информационные сайты в области компьютерных технологий (например, новости, или видеоуроки).

Денежные затраты: неготовность платить за обучение

Проблема: недоступность в едином месте информации, покрывающей все аспекты обучения наJava в общем доступе (бесплатно)

Желания: в соответствии с проблемой, иметь такое место сбора информации (ИУК), которое абсолютно бесплатно позволить получить необходимые навыки для обученияJava .

Решения, используемые ранее: частично платные ИУК, электронные учебники, отдельные практикумы по программированию.

1.7 Краткое видение продукта

В качестве итога данной главы, приведём краткое видение продукта.Vision – концепция продукта, определяющая целевую аудиторию и назначение продукта. Представляет собой суть будущего продукта.

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

Вопрос 1: Кто будет использовать продукт? (Кто его покупает? Кто использует? Кто целевая аудитория?)

Ответ: Целевая аудитория: школьники, студенты,  junior, middle, senior разработчики  объектно-ориентированного языка программирования Java, а так же те, кто хочет научиться программировать на этом языке.

Вопрос 2: Какие нужды пользователей продукт удовлетворяет? (Какую пользу приносит продукт? Как он облегчает жизнь пользователям?)

Ответ: С помощью продукта можно освоить объектно-ориентированный язык Java, узнать как об основах программирования на нём, так и иметь представление о подводных камняхJava.

Вопрос 3: Каковы критические атрибуты, чтобы удовлетворить эти нужды и сделать продукт успешным? В каких областях продукт должен быть выдающимся?

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

Вопрос 4: Чем продукт похож на существующие аналоги и чем он от них отличается? (Есть ли аналоги в организации? Есть ли аналоги на рынке?)

Ответ: Присутствует много аналогов на рынке, отличается тем, что собирает всю информацию в едином месте (комплексе). Так же продукт объединяет основные преимущества аналогов.

Вопрос 5: Какой есть срок и бюджет, чтобы запустить продукт?

Ответ: Срок запуска программного продукта – 7-8 месяцев, т.е. всё время, с момента выбора темы ВКР. Бюджет - 600 рублей, для покупки домена 2 уровня, на котором развёрнут комплекс.

2 РАЗРАБОТКА УЧЕБНОГО КОМПЛЕКСА

2.1 Разработка структуры комплекса

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

На основании аналитического обзора, структура комплекса должна иметь следующие элементы:

  1. Набор учебного материала,  необходимый для усвоения теоретической части. Лекции должны быть максимально полными, в них должны входить как простые темы, так и сложные.
  2. Средства для проверки уровня понимания (усвоения) материала пользователем. С этой целью, в набор учебных материалов должны быть так же включено несколько несложных вопросов, а так же набор тестов, который  будет проверять усвоение материала на более серьёзном уровне.
  3. Получение практических навыков. В большинстве тем с этой целью должны быть приведены ссылки на задачи из проверяющих систем, находящихся в открытом доступе, по освоенному материалу. Реализация собственной системы для проверки практической части в ИУК не предполагается.
  4. Статистика, позволяющая получить пользователю информацию о ходе его обучения. Отслеживание пройденного материала на основе тестов, которые прошёл пользователь.

Схемы структуры комплекса представлены в приложении 1.

Рассмотрим подробнее структурные элементы главного меню:

Вышеприведённые трёх лекций можно объединить. Рассматривается реализация принципов ООП  (в каждой отдельной главе - конкретного) и то, как они реализуются на объектно - ориентированном языке программированияJava, приводятся примеры.

  1. Интерфейсы. Немного познакомившись с ними в лекции про композицию, рассматриваются более подробно в данной главе. Предназначение, возможности, преимущества использования, примеры.
  2. Внутренние классы. Рассматривается всё, начиная от их понятия, видов и цели использования, заканчивая различными образцами, наглядно показывающие, как реализовать их вJava.
  3. Контейнеры. Во всех главах до этого, речь шла о простых объектах. Но иногда необходимо работать с объектами единообразно, для чего и используются контейнеры. Виды контейнеров, особенности работы с каждым, много примеров и заданий, которые помогут освоить и понять принцип их работы.
  4. Обработка ошибок и исключений. Программа не всегда завершается успехом. Иногда это происходит по причине того, что разработчик допустил ошибку и работоспособность кода может быть полностью или частично утеряна. В иных случаях, обстоятельства, ставшие причиной возникновения исключения не так тривиальны. Лекция охватывает всё это, показывая, что делать, если такая ситуация возникает или может возникнуть.
  5. Многопоточность. Что такое многопоточность? Где и зачем применяется? Именно на эти вопросы даёт ответ глава,так же приводится множество примеров применения.
  6. Java + Spring.
  7. Java + Maven/Gradle
  8. Java и интеграция с базами данных

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

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

2.2 Подбор материала

На основании структуры, приведённой выше, необходимо произвести сбор информации из различных источников.

В качестве источников могут выступать материалы различного вида, рассмотрим их:

  1. Учебная литература. (Бумажная) Представляет собой бумажные книги, основной целью которых является обучение программированию наJava [6]. Некоторые включают практические задания с ответами в конце [7]. Помимо основной цели, может быть направлена на улучшение качества кода [8].
  2. Электронные учебники. Аналогично приведённому выше, только в электронном виде.[9] Не всегда имеют удобную систему навигации и практические задания. [10]
  3. Интернет ресурсы. Представляют собой сайты, на которых есть информация поJava. Зачастую, помимо необходимой информации есть так же и лишняя, никак не относящаяся данному языку ООП, а иногда и к программированию как к таковому. Помимо прочего, не всегда данные, представленные на них, являются достоверными. Отдельного внимания заслуживают коллективные блоги и новостные сайты. Примером последних могут служить:Tproger,Habrahabr. Заточенные под программирование, они имеют структурированную информацию о различных языках, а так же вопросы для собеседования и т.д. Такие источники являются более достоверными, в сравнении с остальными сайтами, что так же является их преимуществом.
  4. Различные комплексы. Включает в себя существующие интерактивные учебные комплексы как на основе интернет технологий, так и другие.
  5. Мобильные приложения. Представляют собой специальные программы, созданные для изученияJava под платформыIOS,Android,WindowsPhone.

Отдельно следует отменить различные подборки материалов, доступные на просторах интернета. Такие подборки могу быть составлены как на основе мнения разработчиков различных крупных компаний, напримерGoogle,Microsoft,Amazon,Mail.ru и др.

Несмотря на такое многообразие источников, они обладают различными критериями, признаками, на основании которых пользователь и выбирает конкретный источник информации:

  1. Ориентированность на различный уровень обучающегося. Некоторые  предназначены для новичков, другие же для профессионалов. От уровня зависит спектр тем, рассматриваемых в книге и то, насколько глубоко они рассматриваются.
  2. Возраст. От возраста обучающегося зависит стиль изложения материала, иногда и те темы, которые рассматриваются в источниках.
  3. Специализация. Все учебные материалы имеют свою специализацию, некоторые предназначены для изучения строго набора тем.
  4. Версия языка программирования. С появлением каждой версииJava, в него добавляются новые функции, классы, работа с некоторыми существующими методами становится проще и некоторые программные структуры могут быть оформлена более компактно.
  5. Возможность получения практических навыков. Часть источников даёт лишь возможности изучить теоретический материал, без возможности проверить свои знание на практике.

Это основные критерии, на их основании каждый человек может выбрать наиболее подходящий для себя источник или источники обучения.

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

2.3 Программирование интерфейса

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

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

Для интерактивного учебного комплекса был разработан следующий макет. Основная информация центрируется в контейнере, размером 1000 пикселей, что для ИУК является оптимальным. В таком случае, для обучения в интерактивном учебном комплексе с планшета, стандартная ширина экрана которого 1024 пикселя, нет необходимости в создании адаптивного дизайна. Для устройств, с шириной экрана менее 980 пикселей, разработана адаптивная версия дизайна, в которой, для раскрытия пунктов меню появляется специальная кнопка, позволяющая раскрыть пункты меню. Минимальный размер, поддерживаемый дизайн - макетом 800 пикселей, т.к. поддержка работы с мобильных устройств не предполагается. Дизайн-макет разработан по частям. Основной и адаптивный дизайн шапки представлены на рисунках 1 и 2.

Рисунок 1 - Шапка для разрешения экрана свыше 980 пикселей в ширину

Рисунок 2 - Шапка для разрешения экрана меньше 980 пикселей в ширину

В шапке видны разделы основного меню комплекса. Ниже шапки, в соответствии с макетом, находится изображение, которое представляет собой название языка, которому обучаются в ИУК, справа от него располагается пользовательское меню и окно авторизации.  Вид, который принимает главная страница ИУК при разрешении, свыше 980 пикселей, представлено на рисунке 3.

Рисунок 3 - Главная страница ИУК

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

Помимо подвала страницы, есть так же подвал дизайн - макета, который изображён на рисунке 4.

Рисунок 4 - Подвал дизайн-макета

В подвале содержится наименование ИУК, текущий год и кнопка наверх, для перехода к самому верху страницы. В случае, если разрешение экрана менее 980 пикселей - информация, расположенная слева и справа приближается друг к другу, вид подвала не изменяется.

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

Рисунок 5 - Вид комплекса для неавторизированного пользователя

За основу, для дизайн-макета, был взят стандартный шаблонJoomla, который автоматически устанавливается на сайт во время инсталяцииCMS. Следовательно, первым этапом разработки интерактивного учебного комплекса является адаптация стандартного шаблона под дизайн-макеты.

1.  Верстка элементов ИУК в соответствии с макетом.

Данное действие осуществляется через административную панель ИУК. Для этого необходимо ввестиURL-адрес комплекса и фразу для входа в панель для администрирования, которая отделяется отURL символом «слэш». ДляCMSJoomla, фраза, размещаемая после "слэша" - administrator. Введя логин и пароль, которые задавлись при установкеJoomla (см. подробнее в главе 3.), осуществляется переход на административную панель, изображённую на рисунке 6.

Рисунок 6 - Административная панель

Вёрстку элементов будет рассмотрена на примере Лекции 2 для комплекса. Предварительно, для корректной работы пункта меню Лекции следует создать категорию для материала. Категория представляет собой материалы одного вида. Создадим категорию "Лекции". Для этого необходимо в административной панели необходимо перейти в Материалы - Менеджер категорий - Создать категорию. После перехода появляется окно для создания категории, показанной на рисунке 7.

Рисунок 7 - Создание категории

Необходимо заполнить заголовок категории, в данном случае - для лекций это "Лекции". Описание заполнять не обязательно. Краткое пояснение к другим настройкам:

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

Аналогично с вышеописанным, создаются категории для разделов "Для собеседования" и "Новости"

Для создания лекции 2  следует перейти в административную панель  и выбрать  пункт меню Материалы - Менеджер материалов - Создать материал. Внешний вид незначительно отличается от создания категории, за исключением вкладок, что представлено на рисунке 8.

Рисунок 8 - Создание материала

Для лекции 2 требуется заполнить так же само значение поля материал, это и будет размещаемая на сайте лекция. Содержание заполняется на языке разметки страниц -HTML, полный текст верстаемой лекции представлен в приложении 2.HTML используется для преобразования кода, который сможет прочесть веб0обозреватель, в текст, понятный для пользователя.

2. Добавление соответствующих пунктов меню в шапку по дизайн - макету.

Для добавления, изменения или удаление пункта меню необходимо перейти в соответствующее меню, нажав на пункт "Меню" и выбратьMainMenu - для  перехода в меню шапки илиUserMenu - для перехода в меню пользователя.

После осуществления перехода в основное меню (MainMenu) на административной панели отобразиться следующее:

Рисунок 9 - ПунктыMainmenu

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

Ниже рассмотрены слева направо наиболее важные части строки таблицы с заголовком "Главная".

Для добавления нового пункта меню нужно нажать на кнопку создать. После этого административная панель примет вид, представленный на рисунке 10.

Рисунок 10 - Создание пункта Меню.

Следует заполнить заголовок меню, в данном случае -  ввести "Лекции". В "Типе пункта" меню необходимо выбрать Материалы - Блок категорий, т.к. раздел содержит в себе список лекций, после чего необходимо выбрать категорию, это материалы того раздела, которые будут отображаться. Для этого в поле Выбор категории необходимо нажать изменить и выбрать нужную категорию, в данном случае - ранее созданная категория лекций. После чего, необходимо выбрать меню, пунктом которого будет являться данный, установить правильное значение в поле "Доступ" и нажать кнопку "Сохранить", после этого кнопку "Закрыть" или, альтернативный вариант, нажать на "Сохранить и Закрыть". Аналогично с этим создаётся пункт "Для собеседования".

Остальные пункты создаются следующим образом: Каждая лекция - от вышеописанного необходимо выбрать в Типе пункта меню - Материалы - Материал, появится подпункт "Выбрать материал ", вместо пункта "Выбрать категорию",описанного ранее,  и, нажав на кнопку "Изменить" необходимо указать нужный материал. Помимо прочего, следует дополнительно изменить родительский элемент, чтобы каждая лекция стала подпунктом меню "Лекции", выбрать которую можно нажать на соответствующий треугольник в выпадающем списке под надписью. Аналогично создаются подпункты раздела "Для Собеседования". В результате, пользователь увидит выпадающее меню, представленное на рисунке 11.

Рисунок 11 - Меню лекций

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

Для материалов, использующихся в разделах "Главная", "Контакты", "Помощь" действия аналогичны вышеописанным, за исключением выбора родительского элемента. Для подпункта меню "Профиль" изменения не требуются.

Для меню "Тесты" следует выбрать "Вид материала": Тестирование - Список тестов, по аналогии выбирается категория тестов. Для отдельных подпунктов меню тестов "Вид материала": Тестирование - Страница тестов. Остальные действия аналогичны описанным для меню "Лекции".

3. Создание тестов для комплекса. Для этого используется расширениеTestformBuilder 3.

Для создания теста необходимо перейти в Компоненты -TestformBuilder 3. После перехода необходимо для отображение в меню создать категорию теста, создание аналогично созданию категории материала. После создания категории можно создать теста. Для этого необходимо перейти в "Тесты" и нажать на кнопку "Создать". После чего административная панель примет вид, представленный ниже:

Рисунок 12 - Создание теста

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

Рисунок 13 - Раздел доступ и уведомления теста.

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

Рисунок 14 - Сообщение о неуспешности прохождения теста.

В разделе условий теста необходимо установить значения всех обязательных полей следующим образом: ограничение положительных заполнений - 0, счётчик вопросов - прогресс - бар, возврат к предыдущему вопросу - Да, проходной балл теста в соответствии с количеством вопросом и предполагаемыми оценками. В разделе ограничения времени нужно задать ограничение времени с расчётом 2 минуты на вопрос, задаётся в минутах.

Далее нужно перейти в раздел "Группы" вопросов и создать группу, нажав на создать группу, установить проходной балл и количество вопросов в группе, задать её название, выбор вопросов установить случайным образом. После создания группы можно создать сам вопрос. Для этого нужно нажать на кнопку "Изменить" у созданной группы, после чего нажать на кнопку "Создать вопрос", окно, которое увидит пользователь, представленную на рисунке 15.

Рисунок 15 - Создание вопроса теста

Рекомендации по заполнению. В виде ответа лучше выбирать чек-бокс, когда правильных ответов несколько, или радиокнопки, когда правильный ответ лишь 1. Обязательность ответа всегда устанавливать да. Сортировка - случайным образом, правильный - выбор всех правильных, за исключением неправильных. После создания вопроса появится возможность добавления ответа. Для этого необходимо нажать на кнопку Добавить ответ. После чего отобразиться окно, где надо будет заполнить текст ответа, указать, правильных ответ или нет и количество баллов, которое даётся за выбор ответа. Для добавления ответа на вопрос следует нажать на кнопку "Добавить". Пример

одного из созданных вопросов в виде отображения  для обучающегося представлен на рисунке 16.

Рисунок 16 - Вопросы по собеседованию для темы исключения

Для раздела собеседований необходимо, чтобы правильный ответ на вопрос не отображался сразу, тем самым давая обучающемуся возможность подумать над правильным ответом.  С этой целью используется не стандартный тегHTML, а один из теговJoomla -spoiler, скрывающий информацию. Пример включения тегаspoiler в код, приведён ниже и в приложении 2:

{spoiler title= Answer3} Здесь размещается текст в тегахHTML правильного ответа на вопрос 3.{/spoiler}

Вид свёрнутого и развёрнутого тега спойлер представлены на рисунках 17 и 18.

Рисунок 17 - Спойлер в свёрнутом виде

Рисунок 18 - Спойлер в развёрнутом виде

2.4 Разработка базы данных

  Для реализации работы комплекса необходимо сохранять данные о прохождении курса пользователем, т.е. о результатах тестов, на основании которых формируется информация для статистики. Для этого раздела так же потребовались изменения в существующей базе данных, добавление таблиц для более удобного вывода информации. В связи с этим, были внесены изменения в БД, с которой взаимодействуетCMS. Существующие таблицы,  необходимые для взаимодействия с новыми, а так же новые таблицы приведены в схеме на рисунке ниже:

Рисунок 19 - Схема Базы данных

В данной схеме содержится 6 таблиц,  две из них - предоставляетсяCMS, ещё две - плагином для тестирования, оставшиеся две разработаны самостоятельно. Следует отметить, что в таблицах, которые созданы средствами системы управления содержимым или расширениями к ней, приведена лишь часть полей, наиболее важная для рассматриваемой схемы.

Таблицаjos_users - содержит информацию о пользователе. Включает в себя следующие основные поля:

Таблицаjos_content - содержит информацию о просмотренных материалах курса, т.е. лекциях. Основные поля:

Таблицаjos_jr_thb_test - содержит информацию конкретном тесте. Основные поля таблицы:

Таблицаjos_jr_thb_result - содержит информацию о конкретной попытке прохождения выбранного теста. Основные поля:

Данная таблица имеет взаимосвязь  много к одному с таблицамиjos_jr_thb_test иjos_users. Это обозначает, что каждый тест может быть повторно пройден множество раз пользователем.

Вышерассмотренные таблицы не являлись разработанными самостоятельно. Для раздела статистики были разработаны следующие таблицы:

Таблицаjos_statistic_for_test- содержит информацию об успехе прохождения каждого отдельного теста конкретным пользователем. Основные поля:

Данная таблица имеет взаимосвязь  один к одному с таблицейjos_jr_thb_result. Что обозначает, что для каждого конкретного теста есть только одна конкретная статистика для обучающегося.

Таблицаjos_lection_show - представляет собой таблицу связку просмотренных пользователем лекций. Основные поля таблицы:

Данная таблица имеет взаимосвязь много к одному с таблицами jos_content и jos_users.

3 НАСТРОЙКА, ОТЛАДКА, ТЕСТИРОВАНИЕ

3.1  Настройка комплекса

Для развёртывания интерактивного учебного комплекса на базе веб - технологий необходимо удовлетворить следующие требования, которая предъявляетCMSJoomla с версии 3.x [4].

Рисунок 20 - ТребованияCSMJoomla

Установку и настройку интерактивного учебного комплекса можно произвести двумя путями:

1. На локальном компьютере.

2. На домене второго уровня.

При развёртывании на локальном компьютере, администратору необходимо установить всё необходимое программное обеспечение, приведённое в таблице. Наиболее удобным вариантам является установка локального веб - сервера, напримерOpenServer илиDenver, который в себе уже содержит необходимые программы, до скачивания нужно проверить, удовлетворяет ли программа минимальным требованиям, это можно сделать на сайте или после установки соответствующего программного обеспечения.OpenServer поддерживает необходимые минимальные требования, сам же предъявляет следующие требования: операционная система не нижеWindows 7, память: 500 МбRAM и 3 ГбHDD, а так же требуется наличиеMicrosoftVisualC++ минимум 2005 года [11].

После установки нужно поднять сервер, и создать базу данных, к которой будет подключаться пользователь. Для этого необходимо в адресной строке браузера ввестиhttp://localhost:8080, после чего перейти вphpMyAdmin, и создать базу данных, с которой будет работатьCMSJoomla и пользователя для работы с базой данных. Имя базы данных, логин и пароль для входа следует сообщить до портирования с целью настройки БД. Настройку можно производить вручную, как это делается будет описано далее. При создании таблицы в глобальных привилегиях важно выбрать "Отметить все".

УстановкаCMS. Необходимо с официального сайтаJoomla скачать версию 3.8.6. - именно на базе этой версии функционирует комплекс. После загрузки всех файлов необходимо извлечь содержимое архива в папкуOpenServer/localhost/www.

При следующем обращении кlocalhost в адресной строке браузера должна появится панель установкиJoomla. Важная часть установкиCMS - конфигурация  базы данных. Наlocalhost это выглядит так, как представлено на рисунке 21. Очень важно задать префикс таблиц какjos_. После установки необходимо проверить работоспособность сайта. Должен быть доступ в административную панель и на сам сайт.

Рисунок 21 - Конфигурация БД

Для развёртывания на домене второго уровня соблюдение минимальных требований к конфигурации и предоставление доступа к серверу/домену обеспечивается хостинг - провайдером. После покупки доменного имени необходимо войти в панель для настройки конфигурации. В большинстве случаев, это будеISPManager. Для установкиJoomla необходимо выбрать пункт каталог веб-скриптов и выбрать её нужной или имеющейся версии. В случае, если в  списке веб-скриптов даннаяCMS не предлагается, необходимо обратиться к хостинг - провайдеру. Настроить базу данных необходимо точно так же, как и для случая развёртывания на локальном компьютере. Может возникнуть ситуация, что версияJoomla не удовлетворяет необходимой. В большинстве случаев, её версия ниже необходимой. В этой ситуации следует самостоятельно обновитьJoomla до нужной версии с помощью панели администрирования выбрав раздел Обслуживание в меню слева. Данный вариант использовался при разработке ВКР.

Для дальнейшей установки комплекса в зависимости от выбранного варианта необходимо перейти в папку, куда была установленаJoomla. В случае покупки домена второго уровня, надо войти вISPManager перейти в менеджер файлов, далее в каталог www/ваш доме 2 уровня, куда установленаjoomla/. И туда извлечь архив с файлами ИУК, заменив существующие файлы. Тоже самое необходимо проделать для базы данных. Делается это следующим образом: необходимо зайти в раздел создания резервных копий базы данных панели управления и выбираем пункт «Загрузить резервную копию». Жмем на кнопку «Выберите файл», выбираем файл БД и загружаем его. После всего этого необходимо либо предварительно попросить отредактировать файл для базы данных, либо сделать это самостоятельно по следующей схеме:

Необходимо изменить конфигурационный файлJoomla Он располагается в корневой директории  ИУК и называется configuration.php. Необходимо его скачать(можно извлечь из архива до распаковки) Изменить необходимо следующие 3 строки:

public $user = '';

public $password = '';

public $db = '';

В первой сточке указываем имя пользователя базы данных, во второй – пароль от базы данных, в третьей – ее имя. После редактирования необходимо сохранить файл и загрузить к остальным файлам в директорию www/ваш доме 2 уровня, куда установленаJoomla/. Этим действием завершается установка ИУК. Для проверки работоспособности так же необходимо зайти в административную панель или на сам сайт.

После этого необходимо осуществить настройку ИУК через Панель управленияCMSJoomla в разделе общие настройки, которые представлен ниже:

Рисунок 22 - Настройки ИУК

Переход к данному разделу возможен из меню Система - Общие настройки.

Обязательными для корректной работоспособности являются: Сайт выключен (offline) - в случае, если данная функция выбрана, комплекс не доступен другим пользователям, поэтому важно, чтобы выбранное значение было "Нет".

Данный раздел предоставляет широкие возможности настройки интерактивного учебного комплекса. Наиболее интересными, помимо общих настроек, являются так же настройки пользователя, перейти к которым можно с помощью меню слева с рисунка 20 выбрав раздел "Пользователи".

Рисунок 23 - Настройки пользователя

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

  1. Разрешить регистрацию пользователей. В случае, если выбрано значение "Нет" обучающиеся не смогут проходить курс, т.к. он доступен только для зарегистрированных пользователей.
  2. Активация нового пользователя. В случае, если выбрано значение "Нет", то после регистрации  курс будет доступен пользователю сразу, однако, пользователь сможет ввести несуществующую почту и в случае возникновения проблем, с ним будет сложно связаться. Если выбрано значение "Администратором" - то администратор должен отдельно активировать каждого пользователя, что неудобно как для самого администратора, так и для пользователя, который не сможет мгновенно приступить к обучению. Оптимальный вариант - "Самостоятельно", тогда пользователю приходит письмо на электронную почту, с необходимостью подтверждения регистрации.
  3. Так же важно, чтобы группа пользователей для Гостей оставаласьGuest, чтобы не было доступа к лишним разделам с информацией.

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

Раздел тестирования тоже необходимо настроить. Окно представлено ниже:

Рисунок 24 - Настройки раздела тестирование

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

  1. Срок хранения результатов пользователя - значение 0 обозначает хранение результатов всегда, изменять его нельзя т.к. иначе не гарантируется корректная работа раздела статистика
  2. Срок хранения незавершённых тестов - аналогично с вышеприведённым разделом
  3. Показать результат- необходим для понимания пользователем успешности прохождения того или иного теста курса.

3.2 Тестирование и отладка

3.2.1 Методы тестирования

Интерактивный учебный комплекс тестируется при помощи двух видов тестирования:

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

а) Корректность отображения всех страниц

б) Тестирование форм регистрации

в) Проверка работоспособности навигации

г) Проверка модулей прохождения тестов и статистики

2. Usability тестирование - проводится с целью оценки удобства продукта в использовании. Для этого метода были привлечены обучающиеся, удовлетворяющие профилю пользователя из раздела 1.6, которые и оценивали удобство использования.

3.2.2  Результаты тестирования

Результаты функционального тестирования по соответствующим пунктам:

а) Корректность отображения всех страниц - проблем выявлено не было, все страницы отображались корректно

б) Тестирование форм регистрации - проблем с работоспособностью формы выявлено не было

в) Проверка работоспособности навигации - в навигации были перепутаны кнопки назад и вперёд, переводящие в следующую лекцию, вместо предыдущей и наоборот. Проблема была найдена и исправлена.

г) Проверка модулей прохождения тестов и статистики - были выявлены мелкие недочёты в компоненте статистики, которые были исправлены.

РезультатUsability тестирования основаны на отзывах пользователей, которые его проводили.  Выявленные и исправленные замечания приведены в таблице ниже:

Таблица 2 - Замечания пользователей и  предлагаемое решение

Замечание

Решение

Отправка пароля пользователя по почте. Это может быть небезопасно и считается плохой практики

Изменена настройка "Отсылать пароль",новое значение - "Нет" из раздела настроек пользователя с рисунка 15.

При наведении на разделы "Лекции", "Тесты", "Для собеседования" меню отображается лишь после выбора и наведения, а не сразу после наведения.

Была изменена настройка Меню из основных параметров "Показывать подпункты меню" новое значение - "Да"

Опечатка, орфографическая или пунктуационная ошибка в лекции №N в словеX.

Исправлены опечатки, орфографические ошибки или ошибки в пунктуации в соответствующих лекциях.

4 ВНЕДРЕНИЕ СИСТЕМЫ И РАЗРАБОТКА РУКОВОДСТВА ПОЛЬЗОВАТЕЛЯ

4.1 Разработка руководства пользователя

Руководство пользователя представлено в разделе сайта Помощь, который доступен для всех пользователей. Внешний вид раздела представлен на рисунке ниже:

Рисунок 25 - Руководство пользователя

В руководстве пользователя описываются все разделы сайта, подробнее рассматривается процесс регистрации, а так же работа с основными разделами комплекса: "Лекции", "Тесты", "Для собеседования". Руководство пользователя включает в себя множество иллюстраций, чтобы пользователю было легче сориентироваться при работе с ИУК, для процесса регистрации руководство рассматривает как успешные сценарии, так и неуспешные. Информации, приведённой в руководстве, достаточно для освоения основ работы с  интерактивным учебным комплексом.

4.2 Внедрение

Для внедрения комплекс был сконфигурирован в соответствии с разделом настроек, в частности, была выключена настройка "Сайт выключен (offline)". После этих изменений комплекс стал полностью доступен для обучения, соответственно, успешно внедрен.

ЗАКЛЮЧЕНИЕ

В ходе представленной выпускной квалификационной работы был разработан интерактивный учебный комплекс, позволяющий изучить язык Объектно - ориентированного программированияJava. Разработанный ИУК является адаптивным и удобно и корректно отображается как на экранах с большим разрешением экрана, так и на экранах среднего размера. Свойство адаптивности позволяет не только расширить аудиторию пользователей, но также и положительно влияет на продвижение комплекса в поисковых системах. Широкий круг тем, охватываемый комплексом, позволяет получить и развить навыки не только новичка, но и более опытного пользователя.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. GeekBrains[Электронный ресурс]: офиц. сайт – Режим доступа:https://geekbrains.ru/
  2. JavaRush [Электронный ресурс]: офиц. сайт – Режим доступа: https://javarush.ru/
  3. WordPress [Электронный ресурс]: офиц. сайт. – Режим доступа: https://ru.wordpress.org/
  4. Joomlaportal [Электронный ресурс]: офиц. сайт. – Режим доступа:https://joomlaportal.ru/
  5. Drupal [Электронный ресурс]: офиц. сайт. – Режим доступа:https://www.drupal.org/
  6. Брюс Эккель ФилософияJava/ Брюс Эккель - Санкт - Петербург: Питер,2009 - 640 с.
  7. Берт Бейтс Изучаем Java/Кэти Сиерра, Берт Бейтс - Санкт - Петербург : Эксмо, 2017 - 720 с.
  8. Joshua B. Effective Java /B. Joshua. -Москва:КНОРУС, 2015 – 369 c.
  9. Учебник программирования на Java [Электронный ресурс]: офиц. сайт. – Режим доступа: https://java9.ru/
  10. Java- учебник [Электронный ресурс]: офиц. сайт. – Режим доступа: http://www.java-study.ru/java-uchebnik.html
  11. OpenServer [Электронный ресурс]: офиц. сайт. – Режим доступа:https://ospanel.io/

ПРИЛОЖЕНИЕ 1

(обязательное)

Структурная схема ИУК.

Верхнеуровневая структура:

Подробная структура разделов :Лекции, Тесты, Для Собеседования

ПРИЛОЖЕНИЕ 2

(обязательное)

Пример вёртски страницы лекций комплекса.

<h2>О переменных</h2>

<p>Переменная предоставляется нам именем хранения, чтобы нашей программой можно было манипулировать. Каждая переменная в Java имеет конкретный тип, который определяет размер и размещение её в памяти; диапазон значений, которые могут храниться в памяти; и набор операций, которые могут быть применены к переменной.

Переменная — это именованная область памяти, куда может быть как записано, так и перезаписано и откуда может быть прочитано значение определенного типа. При создании переменной задаётся как её тип, так и значение, они не могут быть изменены далее по ходу программы.</p>

<p>

Так же важным является понятие имени или идентификатора переменной.Имя переменной -  последовательность символов, которая может включать в себя заглавные и строчные латинских буквы, цифры, а также символов «$» и «_». Идентификатор переменной может начинаться с любого из вышеперечисленных символов, за исключением цифры.

</p>

<br>

<p>Вы задаётесь вопросом :" А как же объявить переменную?" Ниже приведён ответ на этот вопрос. ОБщая форма объявления:</p>

<br>

<p>тип данных переменная [ = значение], [переменная [= значение], ...] ;</p>

<p>Чтобы объявить более чем одну переменную указанного типа, можно использовать список с запятыми в качестве разделителей.</p>

<br>

<p>Ниже приведены примеры объявления переменной и инициализации в Java:</p>

<br>

<p>int m, n;          // Объявление двух целых m и n/<p>

<p>int k = 10, c = 10;   // Пример инициализации.</p>

<p>double pi = 3.14159;  // Объявление и присвоение величины пи.</p>

<p>byte b = 22;          // Инициализация переменной b типа byte.</p>

<p>char c = 'c';         // Переменной c типа char присваивается значение 'c'.</p>

<br>

<p>Язык Java чувствителен к регистру символов в идентификаторах, т.е. идентификаторы Mira, mira и mIRa — в Java различны. Внутри одного блока не может существовать несколько элементов с одинаковыми идентификаторами</p>

<p>В Java используются как примитивные типы данных, так и ссылочные:</p>

<hr class="system-pagebreak" title="Примитивныетипы" />

<h2>Примитивные типы:</h2>

<br>

<il>

<li>Целочисленные</li>

<li>Вещественные</li>

<li>Логические</li>

<li>Строковые</li>

<li>Примитивные</li>

</il>

<br>

<h3>Целочисленныеданные - byte, short, int, long</h3>

<br>

<table border=1 align = "center" cellspacing=0 width=90%>

<tr><td><b>Типданных</td><td><b>Объёмпамяти</td><td><b>Диапазонзначений</td></tr>

<tr><td>byte</td><td>1байт</td><td>-128...127 (-27... 27)</td></tr>

<tr><td>short</td><td>2байта</td><td>-32 768...32 767 (-215... 215)</td></tr>

<tr><td>int</td><td>4байта</td><td>-128...127 (-27... 27)</td></tr>

<tr><td>long</td><td>8байт</td><td>-9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807 (-263... 263)</td></tr>

</table>

</br>

<p>Примерпримененияцелочисленныхданных java - byte, short, int, longприведёнподспойлером.Попробуйтенаписатьсами,азатемлишьпосмотрите. </p>

{spoiler title= Primer1}<p>public class Test</p>

<p>{</p>

<p> &nbsp;   public static void main (String [] arg)</p>

<p>&nbsp;    {</p>

<p> &nbsp;&nbsp;      int   integ = 47+ 1;</p>

<p> &nbsp;&nbsp;      byte  b = -128 + 127;</p>

<p> &nbsp;&nbsp;       short srt = 2223 + 3;</p>

<p> &nbsp;&nbsp;    long  lng = 473+11436113;</p>

<p> &nbsp;&nbsp;      System.out.println (integ);</p>

<p> &nbsp;&nbsp;      System.out.println (b);</p>

<p> &nbsp;&nbsp;     System.out.println (srt);</p>

<p> &nbsp;&nbsp;      System.out.println (lng);</p>

<p> &nbsp;   }</p>

<p>}</p>{/spoiler}

<h3>Вещественные типы данных - float, double</h3>

</br>

<table border=1 align = "center" cellspacing=0 width=90%>

<tr><td><b>Типданных</td><td><b>Объёмпамяти</td><td><b>Диапазонзначений</td></tr>

<tr><td>float</td><td>4байта</td><td>~1,4*10-45...~3,4*1038</td></tr>

<tr><td>double</td><td>8байт</td><td>-~4,9*10-324...~1,8*10308</td></tr>

</table>

</br>

<p>Пример применения вещественных типов данных java - float, double приведён ниже под спойлером</p>

{spoiler title= Primer2}public class DoubleFloat

<p>{

<p> &nbsp;   public static void main (String [] arg)</p>

<p> &nbsp;    {</p>

<p> &nbsp;&nbsp;       double d1 = 7.53; </p>

<p> &nbsp;&nbsp;     double d2 = 1.78 + d1;</p>

<p> &nbsp;&nbsp;      float  pi = 3.14f;</p>

<p> &nbsp;&nbsp;      // При использовании типа float необходимо использовать приведение типа,</p>

<p> &nbsp;&nbsp;      // так как дробные числа - это литералы типа double</p>

<p> &nbsp;&nbsp;     double con = d1 * pi;</p>

<p>&nbsp;&nbsp;   System.out.println (con);</p>

<p> &nbsp;  }</p>

<p>}</p>

{/spoiler}

<h3>Логический тип данных</h3>

<br>

Под логические значения в Java отводится тип boolean, которое может принимать только одно из двух возможных значений true (истина) и false (ложь).

<br>

<h3>Символьный тип данных - char</h3>

<br>

Для хранения символов в Java используется тип char размером 2 байта (16 бит). Диапазон значений варьируется от 0 до 65536.

</br>

<h3>Литералы java</h3>

</br>

<p>Литералы — это константы, которые записаны по правилам языка Java. Приведём примеры литералов в соответствии с типом<p>

</br>

<h5>Целочисленные литералы</h5>

</br>

<table border=1 align = "center" cellspacing=0 >

<col width=10% valign="top">

<col width=90% valign="top">

<tr><td><b>Пример</td><td><b>Что значит</td></tr>

<tr><td>2</td><td>литерал типа int</td></tr>

<tr><td>010 </td><td>литерал типа int заданный в восьмеричной системе счисления, признак её использования  - нуль в начале числа, в десятеричной системе это будет число 8 </td></tr>

<tr><td>0x10 </td><td> литерал типа int заданный в шестнадцатеричной системе счисления, признак её использования - 0x  в начале числа, в десятеричной системе это будет число 16 </td></tr>

<tr><td>3L </td><td>литерал типа long, можно использовать строчную букву l</td></tr>

</table>

</br>

<h5>Вещественные литералы </h5>

</br>

<table border=1 align = "center" cellspacing=0 >

<col width=10% valign="top">

<col width=90% valign="top">

<tr><td><b>Пример</td><td><b>Что значит</td></tr>

<tr><td>8.3</td><td>литерал типа double</td></tr>

<tr><td>7e9</td><td>литерал типа double, записанный в научной нотации, число после e надо воспринимать как показатель степени десятки, на которую умножается число указанное до e, т.е. в данном случае записано число 7*10^9 = 7000000000. Степень числа может быть как положительной, так и отрицательной</td></tr>

<tr><td>5D  </td><td>литерал типа double, можно использовать строчную букву d</td></tr>

<tr><td>9F</td><td>литерал типа float, можно использовать строчную букву f</td></tr>

<tr><td>4e-2f </td><td>литерал типа float, численно равен 0.04</td></tr>

</table>

</br>

<h5>Логические литералы </h5>

</br>

<p>Пример: true      // литерал типа boolean </p>

</br>

<h5>Символьные и строковые литералы </h5>

</br>

<table border=1 align = "center" cellspacing=0 >

<col width=10% valign="top">

<col width=90% valign="top">

<tr><td><b>Пример</td><td><b>Что значит</td></tr>

<tr><td>'c' </td><td> литерал типа char — печатный символ, задаётся в одинарных кавычках</td></tr>

<tr><td>'\n'</td><td>литерал типа char — относится к специальным символам, которые не отображаются в виде какого-либо значка на экране, но при этом форматированием символа или его выводом, например, данный символ переносит следующий за ним текст на новую строку</td></tr>

<tr><td>'\u004D</td><td> литерал типа char заданный своим кодом в шестнадцатеричной системе счисления по кодовой таблице Unicode, данный код соответствует букве «M»</td></tr>

<tr><td>"Енот"</td><td>// литерал класса String — строка символов, задаётся в двойных кавычках, может содержать любые литералы типа char. Строка может быть пустой, а так же состоять из всего одного символа</td></tr>

</table>

</br>

<hr class="system-pagebreak" title="Ссылочныетипы" />

<h2>Ссылочные типы:</h2>

<p>Ссылочные типы - это все остальные типы данных, существующих в Java, за исключением примитивным. К ссылочным типам данных относятся:строки, классы, перечисления и интерфейсы, например, объявленные в стандартной библиотеке Java, а также массивы.</p>

<p>В данном разделе будут подробно рассмотрены строки, перечисления,массивы</p>

<h3>Строки</h3>

<p>Строки — представляют собой последовательность символов. Строки в Java широко используются и являются объектами.</p>

<p>Платформа Java предоставляет класс строк (class String) для создания и работы со строками.</p>

<p>Наиболее простой способ создать строку:</p>

<p>String hello = "Hello world";</p>

<p>После каждого раза, когда компилятор встречает строковый литерал в коде, он создает строковый объект (String) c инициализируемым значением.</p>

<p>Для создания строк можно использовать как ключевое слово new, так и конструктор. Класс строк имеет одиннадцать конструкторов, которые позволяют обеспечить начальное значение строки, используя различные источники, таких как массив символов.</p>

<p>Примеркода:</p>

<p>public class Test {</p>

<p>&nbsp;  public static void main(String args[]){</p>

<p>&nbsp;&nbsp;      char[] helloArray = { 'П', 'р', 'и', 'в', 'е', 'т', '.'};</p>

<p>&nbsp;&nbsp;      String helloString = new String(helloArray);  </p>

<p>&nbsp;&nbsp;      System.out.println(helloString);</p>

<p>&nbsp;   }</p>

<p>}</p>

</br>

<p>Какой результат выведет программа? Правильный ответ написан под серой плашкой.</p>

{spoiler title= Result}Привет.{/spoiler}

<p>Примечание: Класс строк является неизменяемым, так что как только он будет создан, строковый объект не может быть изменен. Если есть необходимость сделать много изменений в строке символов, следует использовать классы строки буфера (String Buffer) и построитель строки (String Builder Classes).</p>

</br>

<p>Длина строки</p>

<p>Методы, используемые для получения информации об объекте, известны как методы доступа. Один из методов доступа, который можно использовать со строками является метод length(), он возвращает количество символов, содержащихся в строковом объекте.</p>

</br>

<p>Объединение строк в Java</p>

<p>Класс строк включает метод для объединения двух строк:

string1.concat(string2);</p>

<p>Возвращает новую строку string1, с добавленной строкой string2 в конце. Вы также можете использовать метод concat() со строковыми литералами:</p>

</br>

<p>"Меня зовут ".concat("Настя");</p>

<p>Чаще строки объединяют оператором +:</p>

</br>

<p>"Чёрный," + " кот" + "!"

Что приводит к: Чёрный кот!</p>

<p>Правило конкатенации. Соединение строк + осуществляется быстрее всего, если строки заданы литералами, константами. В случае,если же строки инициализируются во время выполнения программы использование + не рекомендуется</p>

</br>

<p>Создание формата строк</p>

<p>Класс строк в Java обладает  методом format(), который возвращает строковый объект, а не потоковый объект (PrintStream).Использование строкового статического метода format() позволяет создавать строку нужного формата, который можно использовать повторно, в отличие от одноразовых операторов print. Пример:</p>

<p>String fs;</p>

<p>fs = String.format("Значение переменной float = " +

                  "%f, пока значение integer " +

                  "переменная = %d, и string " +

"= %s", floatVar, intVar, stringVar);</p>

<p>System.out.println(fs);</p>

<h3>Перечисления</h3>

<p>Программируя мы часто сталкиваемся с необходимостью ограничить множество допустимых значений для некоторого типа данных. Например, году - 12 месяцев. Для решения подобных задач во многих языках программирования со статической типизацией предусмотрен специальный тип данных - перечисление (enum). В Java перечисление появилось не сразу, а лишь с версии  1.5. До этого момента программисты использовали другие методы для реализации перечислений.</p>

<p>В простейшей форме перечисление - это список именованных констант. Но в Java перечисления имеют более сложный функционал, чем в других языках программирования. Они могут иметь конструкторы, методы и переменные экземпляра.</p>

<p>Перечисления создаются с использованием ключевого слова enum. Создадим перечисление животных:

<p>enum Animals{</p>

<p> &nbsp;   CAT, DOG, TIGER, RABBIT</p>

<p>}</p>

<p>Обратите внимание, что значение enum-ов рекомендуется писать заглавными буквами, т.к. они статические.</p>

<p>Идентификаторы в фигурных скобках называются константами перечисления. Каждый из них явно объявлен как открытый статический финальный член класса Animal. Объявив перечисление, вы можете создавать переменные этого типа. Но делать это нужно без оператора new, а в упрощенном виде. Объявим переменную animal перечислимого типа Animal. Например:</p>

<p>Animal animal = Animal.DOG;</p>

<p>Иногда необходимо получить список всех элементов enum-класса во время выполнения. Для этих целей в каждом enum-классе компилятор создает метод public static EnumClass[] values(). Пример использования:</p>

<p>System.out.println(Arrays.toString(Animals.values()));</p>

<p>Вы уже догадывайтесь, какой результат выведен эта программа.Если нет - ответ под спойлеорм ниже</p>

{spoiler title= Result2}[CAT, DOG, TIGER, RABBIT].{/spoiler}

<p>Довольно часто возникает задача получить элемент enum по его строковому представлению. Для этих целей в каждом enum-классе компилятор автоматически создает специальный статический метод: public static EnumClass valueOf(String name), который возвращает элемент перечисления EnumClass с названием, равным name. Примериспользования:</p>

<p>String name = "CAT";</p>

<p> Animal animal = Animal.valueOf(name);</p>

<p>В результате выполнения кода переменная season будет равна Animal.CAT. Следует обратить внимание, что если элемент не будет найден, то будет выброшен IllegalArgumentException, а в случае, если name равен null — NullPointerException. Подробнее исключения будут рассмотрены в лекции 13.</p>

<p>Также можно сравнивать порядковые значения констант одного и того же перечисления с помощью метода compareTo(). Или сравнить на эквивалентность через метод equals().</p>

<p>Метод ordinal() возвращает порядковый номер определенной константы (нумерация начинается с 0).Пример:</p>

<p>System.out.println(Animal.TIGER.ordinal());    // будет возвращено 2</p>

<p>Перечисления, как и обычные классы, могут определять конструкторы, поля и методы. Например:</p>

<img src="files/3/images/2018-05-30_12-03-38.png" alt=""/>

<p>Перечисление Color определяет приватное поле code для хранения кода цвета, а с помощью метода getCode оно возвращается. Через конструктор передается для него значение. Следует отметить, что конструктор по умолчанию приватный, то есть имеет модификатор private. Любой другой модификатор будет считаться ошибкой. Поэтому создать константы перечисления с помощью конструктора мы можем только внутри перечисления.</p>

<h3>Массивы</h3>

<p>Массивом называется именованное множество переменных одного типа. Каждая переменная в данном массиве называется элементом массива. Чтобы сослаться на определенный элемент в массиве нужно знать имя массива в соединении с целым значением, называемым индексом. Индекс указывает на позицию конкретного элемента относительно начала массива. Обратите внимание, что первый элемент будет иметь индекс 0, второй имеет индекс 1, третий - индекс 2 и так далее. Данное решение было навязано математиками, которым было удобно начинать отсчёт массивов с нуля.</p>

<p>Переменную массива можно объявить с помощью квадратных скобок:</p>

<p>int[] animals;  // мы объявили переменную массива</p>

<p>Возможен альтернативный вариант:int animals[];</p>

<p>Чаще всего, программисты на Java предпочитают 1 вариант</p>

<p>Несмотря на то, что массив был объявлен,на самом деле его ещё не существует, так как не заполнен данными. Фактически значение массива равно null.</p>

<p>После объявления переменной массива, можно определить сам массив с помощью ключевого слова new с указанием типа и размера. Например, массив должен состоять из 5 целых чисел:</p>

<p>animals= new int[5];</p>

<p>Если массив создается таким образом, то всем элементам массива автоматически присваиваются значения по умолчанию. Например, для числовых значений начальное значение будет 0. Для массива типа boolean начальное значение будет равно false, для массива типа char - '\u0000', для массива типа класса (объекты) - null.</p>

<p>Последнее правило может запутать начинающего программиста, который забудет, что строка типа String является объектом. Если вы объявите массив из десяти символьных строк,то у вас появятся строки со значением null, а не пустые строки, как вы могли бы подумать.</p>

<p>Обращение к элементу массива происходит по имени массива, за которым следует значение индекса элемента, заключенного в квадратные скобки. Например, на первый элемент нашего массива cats можно ссылаться как на animals[0], на пятый элемент как animals[4].</p>

<p>В качестве индекса можно использовать числа или выражения, которые создают положительное значение типа int. Поэтому при вычислении выражения с типом long, следует преобразовать результат в int, иначе получите ошибку. С типами short и byte проблем не будет, так как они полностью укладываются в диапазон int.</p>

<p>Не всегда нужно иметь значения по умолчанию. вы можете инициализировать массив собственными значениями, когда он объявляется, и определить количество элементов. Вслед за объявлением переменной массива добавьте знак равенства, за которым следует список значений элементов, помещенный в фигурные скобки. В этом случае ключевое слово new не используется:</p>

<p>int[] cats = {2, 5, 7, 8, 3, 0};  // массив из 6 элементов</p>

<p>Массивы часто используют в циклах.</p>

<p>Массив содержит специальное поле <b> length </b>, которое можно прочитать (но не изменить). Оно позволяет получить количество элементов в массиве. Данное свойство удобно тем, что вы не ошибётесь с размером массива.</p>

<p>Стандартная библиотека Java содержит статический метод System.arraycopy(), который копирует элементы массива</p>

<p>В аргументах arraycopy() передается исходный массив, начальная позиция копирования в исходном массиве, приёмный массив, начальная позиция копирования в приёмном массиве и количество копируемых элементов. Любое нарушение границ массива приведет к исключению.</p>

<p>Класс java.util.Arrays предназначен для работы с массивами. Он содержит удобные методы для работы с целыми массивами:</p>

<il>

<li>copyOf() − предназначен для копирования массива</li>

<li>copyOfRange() − копирует часть массива</li>

<li>toString() − позволяет получить все элементы в виде одной строки</li>

<li>sort() — сортирует массив методом quick sort</li>

<li>binarySearch() − ищет элемент методом бинарного поиска</li>

<li>fill() − заполняет массив переданным значением (удобно использовать, если нам необходимо значение по умолчанию для массива)</li>

<li>equals() − проверяет на идентичность массивы</li>

<li>deepEquals() − проверяет на идентичность массивы массивов</li>

<li>asList() − возвращает массив как коллекцию (Рассматриваются в лекции 12)</li>

</il>

</br>

<p>Сортировка (упорядочение по значениям) массива a производится методами Arrays.sort(a) и Arrays.sort(a, index1, index2). Первый метод упорядочивает в порядке возрастания весь массив, второй — часть элементов (от индекса index1 до индекса index2). Имеются и более сложные методы сортировки. Элементы массива должны быть сравниваемы (поддерживать операцию сравнения).</p>

<p>Простойпример</p>

<img src="files/3/images/chrome_2018-05-30_12-28-44.png" alt=""/>

<p>У метода sort() есть перегруженные версии, где можно указать диапазон массива, в пределах которого следует произвести сортировку.</p>

</br>

<p>Метод Arrays.copyOf(оригинальный_массив, новая_длина) — возвращает массив-копию новой длины. Если новая длина меньше оригинальной, то массив усекается до этой длины, а если больше, то дополняется нулями. Пример:</p>

<img src="files/3/images/chrome_2018-05-30_12-30-54.png" alt=""/>

<p>Метод Arrays.copyOfRange(оригинальный_массив, начальный_индекс, конечный_индекс) — также возвращает массив-копию новой длины, при этом копируется часть оригинального массива от начального индекса до конечного –1.</p>

<p>Метод Arrays.toString(массив) возвращает строковое представление массива со строковым представлением элементов, заключенных в квадратные скобки. В примерах выше мы уже вызывали данный метод.</p>

<p>Метод deepToString() удобен для вывода многомерных массивов. </p>

</br>

<p>Метод Arrays.fill() позволяет быстро заполнить массив одинаковыми значениями. У метода есть восемнадцать перегруженных версий для разных типов и объектов.Метод fill() просто дублирует одно заданное значение в каждом элементе массива (в случае объектов копирует одну ссылку в каждый элемент):</p>

<img src="files/3/images/chrome_2018-05-30_12-34-14.png" alt=""/>

<p>Как вы думайте,какой результат выведет программа? Правильный ответ под спойлером ниже:</p>

{spoiler title= Result3} Значения выводятся по очереди:

<img src="files/3/images/chrome_2018-05-30_12-35-35.png" alt=""/>{/spoiler}

</br>

<p>Класс Arrays содержит метод equals() для проверки на равенство целых массивов. Чтобы два массива считались равными, они должны содержать одинаковое количество элементов, и каждый элемент должен быть эквивалентен соответствующему элементу другого массива.</p>

<p>До этого,все рассмотренные примеры были для одномерных массивов (Одномерный массив – это именованная последовательность, состоящая из пронумерованных элементов одного типа.). Однако массивы бывают так же двумерными и многомерными. (Многомерный массив — это массив, элементы которого сами являются массивами. Например, первый элемент трехмерного массива является двумерным массивом.) </p>

<p>Рассмотрим пример двумерного массива:</p>

<p>String[][] arr = new String[2][2];

<p>arr[0][0] = "1";</p>

<p>arr[0][1] = "Васька";</p>

</br>

<p>arr[1][0] = "2";</p>

<p>arr[1][1] = "Рыжик";</p>

<p>Первое число в скобках обозначают ряд (строку), а второе число - столбец. Принято считать, что в массиве new int[M][N] первый размер означает количество строк, а второй - количество столбцов.</p>

<p>Здесь рассмотрены не все методы для работы с массивами. В лекции 4 "Ветвления и циклы" так же будут рассмотрены некоторые методы для работы с массивами.</p>

<p>Поздравляем! Вы изучили весь материал из данной лекции. Для проверки знаний пройдите тест, перейдя по ссылке:

<a href="index.php?Itemid=164">ТестпоЛекции 2.</a></p>




Похожие работы, которые могут быть Вам интерестны.

1. Разработка учебного комплекса по алгебре для учеников средней общеобразовательной школы

2. Создание дизайн-проекта современного и функционального пространства холла гостиничного комплекса с использованием инновационных технологий и материалов.

3. Разработка программного комплекса на языке программирования С++

4. Разработка робототехнического комплекса по производству фанеры

5. Разработка программного комплекса для SEO-аналитики и оптимизации веб-приложений

6. Анализ и разработка комплекса маркетинговых коммуникаций салона

7. Разработка комплекса рекомендаций по обеспечению информационной безопасности на предприятии

8. Разработка каталога продукции с применением технологий My SQL, HTML и PHP

9. Разработка программного комплекса лабораторных работ по методам обработки экспертной информации

10. Разработка подсистемы автоматизированного обучения компьютерного тренажерного комплекса оператора перегрузочной машины