Практическая работа. IYFMM Converter
В данном практическом задании предлагается дописать существующий проект-заготовку Android приложения для осуществления конвертации единиц измерения длины.
Советуем сначала скачать шаблон-заготовку проекта и импортировать проект в Android Studio или IntelliJ IDEA, так как процесс импорта может занимать продолжительное время. Для импорта проекта выберите пункт «Import project (Gradle, Eclipse ADT, etc.)» в окне приветствия. Детально продумайте архитектуру приложения и старайтесь следовать принципам проектирования. Измените код существующих классов и интерфейсов, добавьте новые классы, дополните разметку, ресурсы и манифест, чтобы приложение обладало следующими особенностями:
- Значения в полях EditText моментально пересчитываются при вводе пользователем некоторого числа в соответствии с единицами измерения.
- Конвертация производится во все единицы измерения длины с номерами lower – upper включительно (см. табл. 1), значения границ интервала передаются в стартовую активность при запуске приложения.
- Все элементы разметки должны отображаться без прокрутки.
- Гарантируется, что всегда в интервал номеров для показа на экране попадает текстовое поле с меткой метра. Максимальное значение, вводимое в поле с метрами, указано в табл. 1. Точность проверки: 1e-5.
- Значения элементам TextView присваиваются согласно значениям массива строковых ресурсов (string-array) с названием text_view_captions.
- При нажатии на TextView текущее значение соответствующего поля EditText копируется в буфер обмена.
Приложение будет запускаться в системе тестирования с дополнительными данными, которые будут отправлены в основную активность приложения; они содержат наименьший и наибольший номера необходимых текстовых полей. TextView и EditText c другими идентификаторами и тегами не должны отображаться на экране. Прокрутка не предусмотрена; не устанавливайте большие значения верхних и нижних полей у элементов разметки. Приложение будет запущено в портретной ориентации, если в манифесте не указано иное.
Рекомендуется использовать Android Studio Bumblebee 2021.1.1. В проекте gradle version 7.4, gradle plugin version 7.1.2.
Сдать в систему тестирования необходимо zip архив, в корневом каталоге которого располагается дополненный проект Android Studio/IntelliJ IDEA. После загрузки zip архива приложение будет запущено в системе автоматического тестирования для проверки на соответствие техническому заданию.
Допускается использовать язык Java и/или Kotlin. При сборке проекта вcе изменения в файле build.gradle будут проигнорированы – будут использованы зависимости только из шаблона-заготовки; не изменяйте пакет приложения.
Тестирование одной посылки может длиться до 5 минут, после завершения тестирования будет доступна информация об общем числе тестов и числе пройденных тестов. Количество посылок в систему не ограничено. Штраф за повторные попытки не начисляется.
| № | TextView text (default) | TextView text (en) | EditText tag | Максимальное значение | 
|---|---|---|---|---|
| 0 | Дюйм | Inches | et_inch | 10^{15} | 
| 1 | Ярд | Yards | et_yard | 10^{14} | 
| 2 | Фут | Feet | et_foot | 10^{14} | 
| 3 | Миля | Miles | et_mile | 10^{10} | 
| 4 | Иоттаметр | Yottametres | et_yottametre | 10^{3} | 
| 5 | Зеттаметр | Zettametres | et_zettametre | 10^{4} | 
| 6 | Эксаметр | Exametres | et_exametre | 10^{5} | 
| 7 | Петаметр | Petametres | et_petametre | 10^{6} | 
| 8 | Тераметр | Terametres | et_terametre | 10^{7} | 
| 9 | Гигаметр | Gigametres | et_gigametre | 10^{8} | 
| 10 | Мегаметр | Megametres | et_megametre | 10^{9} | 
| 11 | Километр | Kilometres | et_kilometre | 10^{10} | 
| 12 | Гектометр | Hectometres | et_hectometre | 10^{11} | 
| 13 | Декаметр | Decametres | et_decametre | 10^{12} | 
| 14 | Метр | Metres | et_metre | 10^{13} | 
| 15 | Дециметр | Decimetres | et_decimetre | 10^{14} | 
| 16 | Сантиметр | Centimetres | et_centimetre | 10^{15} | 
| 17 | Миллиметр | Millimetres | et_millimetre | 10^{16} | 
| 18 | Микрометр | Micrometres | et_micrometre | 10^{17} | 
| 19 | Нанометр | Nanometres | et_nanometre | 10^{18} | 
| 20 | Пикометр | Picometres | et_picometre | 10^{19} | 
| 21 | Фемтометр | Femtometres | et_femtometre | 10^{20} | 
| 22 | Аттометр | Attometres | et_attometre | 10^{21} | 
| 23 | Зептометр | Zeptometres | et_zeptometre | 10^{22} | 
| 24 | Иоктометр | Yoctometres | et_yoctometre | 10^{23} | 
Таблица 1. Элементы пользовательского интерфейса
| № | Тест | Балл | Проверка | 
|---|---|---|---|
| 1 | languageTest | 1 | Строковые ресурсы на двух языках | 
| 2 | checkClipboard | 1 | Буфер обмена | 
| 3 | checkSmallValues | 1 | Конвертация метров | 
| 4 | checkLargeValues | 2 | Граничные случаи | 
| 5 | checkCrossValues | 3 | Внесистемные единицы измерения длины | 
Таблица 2. Критерии оценивания и тесты
Рис. 1. Пример итогового интерфейса (планшет)
