Диплом: Реализация раздела "Транслейты" для кроссплатформенного приложения "Английский Puzzle Inglish" Cocos2d-x

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
22
опция скрытия выполненных заданий. Задания, выполненные без ошибок,
помечаются на превью определенной отметкой. Если задание не законченно,
т.е. переведены не все фразы Транслейта, на обложке выведен индикатор
прохождения в процентах. После выбора задания пользователь оказывается
на главной странице Транслейта. Здесь Выведена основная информации по
заданию: название на русском, текст Трнаслейта на русском, сложность,
принадлежность к категории; кнопки начала задания(точка входа в режим
сборки), кнопка возврата в каталог Транслейтов, кнопки шаринга в соцсетях
и добавления в избранное. Также под текстом расположен блок словаря
задания – список лексики, использованной в задании с возможностью
добавления в пользовательский словарь и воспроизведения произношения
диктором. Ниже расположена область комментариев, где можно
ознакомиться с отзывами на задания других пользователей и оставить
собственный комментарий. Комментарии имеют статусы «оставлен до
прохождения задания»/«оставлен после прохождения задания». Возможность
оставления общего комментария обусловлена ролью пользователя(для гостя
комментарии не доступны).
После нажатия кнопки «Начать Транслейт» пользователь оказывается в
новом окне, где непосредственно выполняет перевод фраз. Если ранее
пользователем была начата работа над этим Транслейтом, сборка
продолжится со следующей фразы, после последней переведенной, иначе – с
первой фразы Транслейта, в т.ч. если это повторное выполнение задания.
Рис. 8 Иллюстрация сборки Транслейта.
23
На этом этапе пользователь видит порядковый номер переводимой
фразы, слова-подсказки, поле ввода перевода, кнопку отправки ответа. Если
поле пустое, кнопка задизейблена(отключена). Если выбрана русская
раскладка клавиатуры, при попытке ввода выводится сообщение о
необходимости смены раскладки.
После выполнения перевода и отправки пользователем ответа
производится сравнение строк: строка с введенными пользователем
символами сравнивается с заготовленными редакторами допустимыми
ответами в БД. Возможны два исхода проверки: перевод пользователя
совпадает с допустимым переводом, тогда появляется соответствующая
подпись и происходит переход к следующей фразе. Иначе пользователь
видит свой вариант перевода с индикацией ошибок и имеет возможность
один раз внести изменения в свой перевод, либо сразу перейти к следующей
фразе(перевод текущей помечается неверным). Для уже пройденных фраз
выведены кнопки отображения допустимых вариантов перевода и кнопка
перехода к режиму комментирования фразы. Комментирование фразы
доступно пользователям с подпиской на «Задания», остальным при клике по
этой кнопке доступен лишь просмотр комментариев других пользователей к
соответствующе фразе. Важно, что при исправлении перевода с ошибкой
пользователь без подписки на «Задания» должен сохранять количество
доступных бесплатных фраз: счетчик бесплатных фраз декрементирует
только в случаях правильного перевода фразы или, если допущена ошибка,
исправления перевода.
После перевода последней фразы Транслейта пользователь видит
статистику задания: выведены все пользовательские переводы фраз по
порядку с цветовой индикацией корректности перевода(верные – зеленым,
неверные – красным). Выведен общий результат прохождения задания,
выраженный в трех состояниях поля «Ваш результат», зависящего от
количества ошибок. Ниже выведено количество фраз без ошибок и с
24
ошибками. Также появляются кнопки добавления задания в избранное:
задние появляется в соответствующем списке в личном кабинете в разделе
«Избранное», и кнопка «Пройти позже», отправляющая задание в список
напоминаний: задние также появляется в соответствующем списке в личном
кабинете в разделе «Подписки» (на почту пользователю придет письмо в
выбранную дату).
Постановка задачи
Необходимо реализовать раздел «Транслейты» для мобильного
приложения «Английский с Puzzle English», работающего под управлением
операционных систем IOS и Android. Приложение функционирует в
портретной ориентации.
Раздел приложения должен в целом скопировать функционал
соответствующего раздела на сайте, предоставлять пользователям
возможности для обучения английскому через механизм переводов русского
текста на английский язык, эргономично вписаться в общую архитектуру
приложения и обладать стандартными для сервиса вспомогательными
механизмами. Также необходимо подключить раздел к существующим
системам занятий и ограничений, работающим на сайте и в других разделах
приложения. Архитектура приложения, Техническое Задание и основные
положения этих систем описаны в соответствующих главах работы.
Вывод по первой главе.
Приведено описание и краткая история компании Паззл Инглиш и
предоставляемых ею сервисов для самостоятельного обучения английскому
языку. Сформулирован список продуктов сервиса, с разделением на веб-
сервисы и мобильные проекты с указанием их содержания, устремлений и
общей направленности, в зависимости от подходов к осуществлению
деятельности. Приведена структура конкретного веб-сервиса, содержащего
раздел Транслейты. Описаны характерные для сайта особенности,
25
рассмотрена система абонементов и ограничений, действующая на сайте.
Приведен список вспомогательных функций, призванных помогать
пользователям в изучении английскому и делающих наш сервис более
привлекательным. Описаны отличия мобильного приложения «Английский с
Puzzle English» от сайта www.puzzle-english.com и, более широко, приведено
пояснение наличия различий между сайтом и приложением с обоснованиями.
Приведены общие сведения о приложении и рассмотрена его структура.
Дано детальное описание раздела «Транслейты», описано содержание
заданий, алгоритм работы задания. Таким образом, собрана информация для
формулирования технического задания по реализации раздела. Информация
обобщена и сформулирована в виде постановления задачи. Вышеописанное
формирует представление о требованиях, накладываемых на продукт и
позволяет пользоваться полученной информацией при разработке.
26
ГЛАВА 2. Средства разработки мобильного приложения
«Английский с Puzzle English»
Недостатка литературы по C++ или мобильной разработке в целом не
наблюдается: огромное количество справочной литературы от учебников
таких фундаментальных трудов как «Объектно-ориентированное
программирование в C++» за авторством Р.Лафоре, доступно как в печатном,
так и в электронном виде и на русском языке; многие можно получить
бесплатно. Несмотря на это, как мне видится, на сегодняшний день такой
формат немного устарел или как минимум требует дополнений. Детально
рассматриваемые в таких книгах проблемы, безусловно, позволяют получить
необходимую информацию, будь то справка о каком-либо методе, методика
подхода к разработке и проч., однако зачастую имеют место ситуации, в
которых не вполне ясно, в чем именно кроется проблема и к какой именно
главе книги обращаться, чтобы разобраться и найти решение. Ответ может
быть не найден, либо найден с ощутимой потерей времени. Здесь на помощь
разработчику приходит интернет и различные форумы (к примеру,
популярнейший ресурс stackoverflow), где есть большая вероятность
получить ответ быстро, описав проблему без классификации. Часто
находятся топики, в которых обсуждается именно та проблема, с которой
столкнулся разработчик; есть возможность самому задать вопрос. Т.е.
интернет-ресурсы выгоден тем, что с высокой долей вероятности позволяет
найти ответ на вопрос по ключевым словам, когда проблема неясна, по
модели «от частности к общему», в то время как в учебниках, не определив
«общее», бывает очень трудно найти «частное». К тому же, надо отметить,
что, подготовка и выпуск какой бы то ни было учебной или справочной
литературы занимает определенное время (сбор, каталогизация,
редактирование, выпуск в продажу), что крайне пагубно сказывается на
освоении какого-либо динамично развивающегося продукта. Говоря
конкретно, можно привести в пример справочную информацию по Cocos2d, в
27
котором проводилась разработка «Транслейтов»: в отличие от
вышеописанных предметов, по кокосу находится значительно меньше
информации в интернете в виде статей и еще меньше литературы. Серьезной
проблемой может стать отсутствие знания английского языка, т.к. вся более-
менее актуальная информация изложена на английском. Переводов книг по
кокосу на русский практически не существует, а те, что существуют, выходят
со значительным опозданием (мне лично попалась одна книга на русском,
перевод которой был сделан тогда, когда актуальной версией кокоса была
третья, а книга написана по второй). Также даже электронные издания книг
по кокосу отличаются высокой стоимостью. Официальная техническая
документация на английском и представлена в достаточно скупой и сложной
для понимания форме, таким образом, при работе с Cocos2d-x студент более
всего ориентировался на метод проб и ошибок, советы со старшими
разработчиками и примеры из репозитория Puzzle English.
Ввиду описанных выше причин и важности для раскрытия предметной
темы, основным параграфом этой главы будет содержащий описание
возможностей Cocos2d-x, также подробно будут описаны инструменты
разработки, важные освещения объекта исследования.
2.1. Среда разработки (IDE)
Приложение «Английский с Puzzle English» разрабатывается при
помощи пакета инструментов XCode компании Apple. Данная среда
предоставляет возможность разработки приложений для MacOS и iOS
поддерживая использование таких языков программирования как С++, C,
Objective-C, Java, Swift и проч. Работа в XCode обеспечивает высокое
быстродействие разрабатываемых проектов за счет оптимизированных для
iOS нативных библиотек (UIKit) от создателей операционной системы.
В качестве отладчика используется GNU Debugger, предоставляющий
обширный набор возможностей для мониторинга выполнения программы и
28
контроля ее выполнения. Например, доступен изолированный вызов
функций, функция обратной отладки и проч. Очень полезен набор устройств,
которые XCode может симулировать: это позволяет проверять корректность
отображения нодов при различных разрешениях и контролировать размеры
нодов и отступы. Система брейкпоинтов позволяет последовательно
останавливать программу в нужных моментах исполнения для поиска
ошибок. Логи – важная часть отладки проекта; в XCode прямо во время
разработки можно развернуть компактные окна консоли и текущих
переменных для мониторинга логов и состояния данных.
Опция Runtime Issues оповещает о дефектах, которые автоматически
обнаруживает Xcode.
Рис. 9. Иллюстрация работы Runtime Issues в XCode.
Совместное использование описанных возможностей XCode
предоставляет мощный инструмент для разработки и дебаггинга проекта.
29
Рис. 10. Иллюстрация возможностей XCode для дебаггинга.
2.2. Язык и ООП.
С++ является компилируемым, статически типизированным языком
программирования общего назначения с высоким уровнем поддержки
объектно-ориентированного подхода (предоставлены все возможности ООП:
наследование, инкапсуляция, полиморфизм и т.д.). Использование C++
позволяет избегать недостатков, присущих процедурно-ориентированным
подходам, как то, во-первых, неограниченность доступа функций к
глобальным переменным и разделение данных и функций, во-вторых.
Рассмотрю проблемы подробнее:
1. При необходимости использования одних и тех же данных
несколькими функциями, участок памяти для хранения этих данных
следует выделять в куче, т.о. данные становятся глобальными.
Проблема заключается в том, что при работе с большим проектом
количество связей между многими функциями и глобальными
данными может быть очень высоким. Таким образом, усложняется
структура программы и, что важнее, в проект становится сложнее
30
вносить коррективы: изменяя структуру глобальных данных,
программист может оказаться в ситуации, требующей внесения
изменений и в некоторое количество функций, оперирующих этими
данными, что в свою очередь может привести к нежелательным
изменениям работы функций с другими глобальными данными.
2. Разделение данных и функций не позволяет адекватно описывать
многие вещи, т.к. свойства предметов и поведения не являются
совокупностью.
Объектно-ориентированный подход, предоставляемый С++ позволяет
избегать этих проблем путем объединения данных и действий, совершаемых
над ними в объекты. Программа же в целом организуется проектированием
классов, определяющих при создании множества схожих объектов
(экземпляров класса), какие именно данные и функции будут включены в
объект того или иного класса.
Рис. 11. Объектно-ориентированный подход.
При организации крупного проекта мыслить в категориях объектов и
классов оказывается выгоднее, чем в категориях процедур, т.к. объекты
представляю собой более привычную и понятную парадигму.
31
Наследование.
Для упрощения связи между элементами проекта и сокращения кода
используется возможность наследования: в C++ от одного класса можно
породить множество производных классов. Такой класс будет называться
базовым, а все порожденные – производными. Базовый класс обладает
свойствами, которые будут присущи порожденным, и при этом порожденные
классы могут иметь собственные свойства.
Рис. 12. Наследование классов.
Инкапсуляция.
Инкапсуляцией называется механизм ООП, позволяющий скрывать
данные от внешнего воздействия или нежелательного использования.
Инкапсулирование реализуется использованием данных (функции,
структуры) и методов внутри класса вместе с ключевыми словами-
операторами доступа: public, private, protected.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран