66 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Практическая работа. IYFMM Converter
В данном практическом задании предлагается дописать существующий проект-заготовку Android приложения для осуществления конвертации единиц измерения длины.
Советуем сначала скачать шаблон-заготовку проекта и импортировать проект в Android Studio или IntelliJ IDEA, так как процесс импорта может занимать продолжительное время. Для импорта проекта выберите пункт «Import project (Gradle, Eclipse ADT, etc.)» в окне приветствия. Детально продумайте архитектуру приложения и старайтесь следовать принципам проектирования. Измените код существующих классов и интерфейсов, добавьте новые классы, дополните разметку, ресурсы и манифест, чтобы приложение обладало следующими особенностями:
1. Значения в полях *EditText* моментально пересчитываются при вводе пользователем некоторого числа в соответствии с единицами измерения.
2. Конвертация производится во все единицы измерения длины с номерами lower upper включительно (см. табл. 1), значения границ интервала передаются в стартовую активность при запуске приложения.
3. Все элементы разметки должны отображаться без прокрутки.
4. Гарантируется, что всегда в интервал номеров для показа на экране попадает текстовое поле с меткой метра. Максимальное значение, вводимое в поле с метрами, указано в табл. 1. Точность проверки: 1e-5.
5. Значения элементам *TextView* присваиваются согласно значениям массива строковых ресурсов (string-array) с названием `text_view_captions`.
6. При нажатии на *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. Критерии оценивания и тесты*
![](/doc/screenshot.png)
*Рис. 1. Пример итогового интерфейса (планшет)*