стою, легковагої реляційною базою даних, використовуваної на всіх популярних мобільних платформах (iOS, Windows Phone). Крім офіційної документації [4], яка описує шаблон проектування для роботи з БД, корисним є офіційна документація БД [13]. SQLite володіє певними особливостями, ознайомлення з якими необхідно навіть за наявності досвіду роботи з іншими реляційними БД. SQLite містить усього лише чотири типи даних і не підтримує збережені процедури. Вдобавок до цих обмежень, додається і те, що входять до Android SDK засоби для роботи БД не сприяють створенню навіть найпростішої структури БД з залежностями між таблицями, всіляко підштовхуючи до зберігання даних в декількох великих, незв'язаних таблицях.
Однією з ключових особливостей дипломного проекту, є робота з візуальною інформацією, тобто використання камери. Незважаючи на вичерпний опис процесу роботи з камерою як в офіційній документації, так і в літературі, камера залишається вельми специфічним пристроєм. В основному це пов'язано з великою різноманітністю використовуваних фотомодулів, так чи інакше впливає на стандартний процес взаємодії. На жаль, не існує єдиного джерела, що описує все, або хоча основні, підводні камені в роботі з камерою, проте в якості корисного ресурсу, багато в чому допомагає розробці, в тому числі і в питаннях взаємодії з камерою, варто навести [14].
Слід зазначити, що відмінною рисою Android-розробки, з погляду огляду літератури, є велике число інтернет-ресурсів. Це зумовлено, по-перше, популярністю платформи, а, по-друге, особливостями мобільного розробки. Незважаючи на наявність офіційної документації та кількох основних книг по розробці, на практиці існує велике число нюансів, які зазвичай не розглядаються в офіційних джерелах. Як приклад таких нюансів можна навести рішення для обходу помилок у Android SDK або ж специфічних для пристроїв певних виробників особливостей платформи.
2. Системне проектування
Типове Android-додаток має модульну структуру, часто з вельми слабозв'язаного компонентами, що спілкуються посредствам пересилання повідомлень. У даному дипломному проекті можна виділити чотири основні компоненти, три з яких асоційовані з основними активують додатки, а четвертий відповідає за фонову обробку даних. Поряд з основними модулями, які логічно виділяються виходячи з вхідних вимог до додатка, нескладно визначити набір додаткових модулів. До них можна віднести модуль налаштувань, присутній в більшості Android-додатків, а також користувальницький інтерфейс для взаємодії з ним. На перший погляд, виділення двох модулів може здатися зайвим, однак виходячи із специфіки взаємодії з настройками, воно досить логічно. Додаток також використовує БД для кешування частини даних з сервера, тому логічно буде окремий модуль для роботи з БД. Додаток володіє невеликою кількістю фонових операцій, тому, принаймні на даному етапі, немає необхідності у виділенні окремих сервісів для роботи з БД та веб-сервером. Як було сказано вище, Android дозволяє використовувати окремі компоненти-завантажувачі для асинхронного отримання масивів даних. Дані завантажувачі мають автономний життєвий цикл і є зовнішніми компонентами по відношенню до модуля взаємодії з БД, тому їх розумно виділити в окремий модуль. Додаток володіє невеликою кількістю фонових операцій, тому, принаймні, на даному етапі, немає необхідності у виділенні окремих сервісів для роботи з БД та веб-сервером. Тому, щоб підкреслити функції фонового сервісу, як контексту виконання операцій, веб-клієнт також слід винести в окремий модуль. Таким чином, остаточна структура дипломного проекту представлена ??на кресленні ГУІР.400201.086 C1.
Розглянемо по докладніше кожен з модулів. Модуль авторизації, як і інші два модулі, асоційовані з активують, складається з двох частин, однією з яких є подання, а інший клас-контролер, успадкований від класу Activity. Незважаючи на це, не слід виділяти ці частини в два різних модулі, як це можна було б зробити у разі веб-додатки. Уявлення, по своїй суті, є набором декларативних XML-файлів, що описують розмітку. Незважаючи на те, що ці файли підвантажуються динамічно класом-контролером, між ними все ще існує неявна, одностороння, але досить суттєвий зв'язок. У той час як уявлення нічого не знає про клас-контролері, та й взагалі про структуру класів в цілому (винятками в деякому роді є користувальницькі елементи управління), клас-контролер повинен оперувати строго визначеними елементами вистави. Спроба отримати елемент, відсутній в розмітці, неминуче призведе до виключення під час виконання. Крім цього, слід враховувати, що для отримання об'єктів, асоційованих з елементами управління використовується метод find View ById, який приймає на вхід унікальний числовий ідентифікатор, визначений у розмітці, і повертає базовий тип View. Таким чином, кожен об'єкт, отриманий за допомогою даного ме...