Android. Уровень 1 Разработка под мобильные устройства

Программа курса

ЗАНЯТИЕ 1. Введение в платформу Android
  •  Знакомство. Программа курса
  •  Общие сведения о платформе Android, историческая справка
  •  Архитектура платформы Android
  •  Этапы создания приложений, от идеи до GooglePlay
  •  Установка и настройка необходимых инструментов
  •  Основные компоненты Android SDK
  •  Обзор среды разработки (Eclipse и AndroidStudio)
  •  Пример простого приложения «Hello, Android!»

ЗАНЯТИЕ 2. Структура Android приложения
  •  Основные компоненты Android приложения
  •  Модель безопасности и разрешения
  •  Структура Android проекта
  •  Жизненный цикл Activity и методы обратного вызова
  •  Использование LogCat
  •  Ресурсы в Android приложении (cтроки, размеры, цвета, массивы)
  •  Альтернативные ресурсы и квалификаторы
  •  Локализация приложения
ЗАНЯТИЕ 3. Разработка пользовательского интерфейса (UI)
  •  Особенности проектирования UI для мобильных платформ
  •  Различия в проектировании UI для телефонов и планшетов
  •  Основные характеристики экранов
  •  Принципы построения UI в Android
  •  Макеты и компоненты контейнеры
  •  Обзор стандартных элементов UI в Android
  •  Создание разных версий дизайна для различных конфигураций устройства
ЗАНЯТИЕ 4. Меню и диалоги в Android
  •  Меню в приложении Android
  •  ActionBar, меню опций и контекстное меню элементов
  •  Создание вложенных меню
  •  Принципы построения диалоговых окон в Android
  •  Класс DialogBuilder
  •  Диалоги AlertDialog, TimePickerDialog и DatePickerDialog
  •  Создание собственного диалогового окна
ЗАНЯТИЕ 5. Коллекции в Android
  •  Введение в концепцию MVC (Model-View-Controller)
  •  Коллекции в Android и класс AdapterView
  •  Использование компонента ListView
  •  Различные источники данных для списков
  •  Работа с элементами списка
  •  Класс BaseAdapter, создание собственного адаптера
  •  Работа с компонентом GridView
  •  Работа с компонентом Spinner
ЗАНЯТИЕ 6. Activity и класс Intent
  •  Механизм намерений в Android
  •  Добавление нового Activity в приложение
  •  Явный вызов Activity и класс Intent
  •  Передача параметров через объект Intent
  •  Получение результата работы Activity
  •  Неявный вызов Activity
  •  Работа со стандартными приложениями (Телефон, SMS, Почта, Браузер)
  •  Переопределение класса приложения
ЗАНЯТИЕ 7. Хранение данных в Android
  •  Обзор возможностей хранения данных в Android
  •  Сохранение промежуточного состояния Activity
  •  Класс SharedPreferences и настройки приложения
  •  Работа с внутренней (защищенной) памятью
  •  Получения состояния карты памяти
  •  Работа с файлами на карте памяти
  •  Разработка класса для работы с текстовыми файлами
  •  Активы приложения и Raw ресурсы
ЗАНЯТИЕ 8. Фрагменты и работа с web
  •  Понятие фрагментов и их жизненный цикл
  •  Архитектура фрагментов в Android
  •  Классы Fragment и FragmentManager
  •  Взаимодействие фрагментов с Activity
  •  Использование фрагментов
  •  Работа с протоколом HTTP в Android
  •  Пример приложения web-клиента
  •  Подведение итогов

Программа 3-ого месяца

Урок 1. Базовые понятия

  • Обзор курса
  • Введение в платформу Java
  • Настройка среды
  • Простейшая программа Hello world в блокноте
  • Запуск и выполнение
  • Среды разработки(IDE)
  • Знакомство со средой разработки Eclipse, Idea
  • Hello world в среде Eclipse, Idea


Урок 2. Типы данных

  • Примитивные типы данных
  • Объявления переменных и их инициализация
  • Константы
  • Стек,куча и где хранятся данные в Java
  • Преобразования типов в Java
  • Основные операторы в языке Java: арифметические, логические, битовые, строковые
  • Работа с символами и строками
  • Вывод результатов работы программы на консоль

Урок 3. Управление потоком выполнения и циклы

  • Основы процедурного программирования
  • Ветвления
  • Циклы
  • Проектирование методов
  • Конструкторы
  • Хорошие и плохие названия
  • Параметры методов
  • Перегрузка методов
  • Рекурсия

Урок 4. Введение в ООП

  • Классы и объекты
  • Абстракция
  • Инкапсуляция
  • Наследование
  • Полиморфизм
  • Модификаторы доступа

Урок 5. Продвинутое ООП

  • Принципы проектирования и основы языка UML
  • Диаграммы классов
  • Абстрактные классы
  • Интерфейсы клонирования
  • Множественное наследование в Java
  • Программирование в соответствии с интерфейсом, а не реализацией

Урок 6. Collеction Framework

  • Виды контейнеров в Java: List, Map,Set
  • Основные реализации контейнеров
  • Основные приемы использования контейнеров
  • Проход по элементам коллекции, шаблон проектирования Iterator
  • Сравнение элементов коллекции
  • Сортировка элементов коллекции

Урок 7. Исключения

  • Концепция обработки исключений
  • Сравнение традиционного механизма обработки ошибок с механизмом
  • обработки исключений
  • Блок try-catch-finally
  • Типы исключений
  • Стандартные исключения в Java и их роль
  • Выброс исключения из метода

Урок 8. Написание простейшего текстового редактора

  • Основы работы с библиотекой Swing
  • Основы работы с файловой системой в Java
  • Написание игры "Морской бой" с нуля - в течении 7и уроков
  • Написание программы "Сетевой чат"
  • Написание программы "simple Web-server"

Для кого

Курс предназначен для новичков в программировании, которые хотели бы освоить современный язык программирования, являющийся на данный момент наиболее популярным языком программирования в мире. Знания основ программирования является желательным. Особенностью курса, что помимо теории(методички, видео-уроки) ученики разрабатывают с нуля под руководством своего учителя полноценную игру на java. Таким образом по окончании курса ученик получает практический навык разработки собственной программы.

Чему вы научитесь

  • Начать мыслить в терминах Объектно-Ориентированного Программирования
  • Компилировать и запускать Java-приложения
  • Уметь отлаживать Java-программы
  • Познакомитесь со средами разработки Eclipse, Idea
  • Разработаете приложение-игру "Морской бой"
  • С нуля написание программы "Сетевой чат"
  • Написание программы "simple Web-server"
  • На 8ом уроке проработаете технические вопросы с собеседований на должность младшего java-разработчика
  • Проработаете логические задачки, которые задают на собеседованиях в IT компаниях
Пример игры "Морской-бой", которую вы можете протестировать на Google Play
Исходные коды вы можете найти на github.com


ЗАНЯТИЕ 1

  • Введение в курс. Согласование режима работы.
  • Введение в платформу Android.
    1. Краткий обзор мобильных платформ и устройств, на которых они функционируют, распространенных на текущий момент. Что отживает, что актуально.
    2. Android. Распространенность на рынке. Устройства, которые поддерживают его.
    3. Заработок с Android:
       Востребованность Android-разработчиков в России, Новосибирске. Предприятия, разрабатывающие под Android. Зарплаты.
       Частная разработка приложений. Заработок в Android Маркет.
  • Архитектура ОС Android.
    1. Структурная схема уровней.
    2. Виртуальная Java-машина Dalvik.
    3. Версии API, их различие
  • Особенности разработки под Android.
    1. Как различные версии API влияют на процесс разработки, необходимость оптимизации под максимальное количество версий API.
    2. Зоопарк устройств, процессоров и разрешений, ориентаций экрана, объемов памяти.
  • Начинаем разработку.
    1. Создаем новый проект «Hello, World!!». Краткий обзор структуры проекта. Знакомство с файлом AndroidManifest.xml. Создаем виртуальное устройство и запускаем этот проект на нем. У кого есть реальное устройство - подключаем и запускаем.
    2. Исходный код контроллера главного окна приложения. Жизненный цикл окна - Activity. Изучение коллбеков на события, которые проиходят на протяжении жизни окна. Создаем onCreate(), onPause(), onStop(), onResume() - логгируем о событии. Потом вместо лога выводим сообщения Toast.
    3. Верстаем в main.xml форму ввода данных о человеке - ФИО, пол, возраст с использованием разных визуальных компонент. Кнопка "Очистить", кнопка "Сохранить" проверяет заполненность необходимых полей, сохраняет информацию в файл. Кнопка "Загрузить" загружает информацию из файла.
    4. Самостоятельное задание.

ЗАНЯТИЕ 2-3

  • Верстка экранов.
    1. Характеристики экрана: размеры, пиксельная плотность, разрешение, ориентация. Внутренние единицы измерения: px, dip, dp. Обобщенные категории размеров экрана: small, normal, large, xlarge. Обобщенные категории разрешений: ldpi, mdpi, hdpi, xhdpi.
    2. Виды контейнеров: LinearLayout, RelativeLayout, TableLayout.
    3. Элементарные компоненты: Button, TextEdit, TextView, т.д.
    4. Компонент ImageView. Ресурсы Drawable. Назначение ресурса на состояние Drawable. Картинка - кнопка.
    5. Работа с визуальными компонентами в коде: класс View - его методы, общие для всех вьюшек, подклассы Button, TextView, т.д. Класс ViewGroup. Метод findViewById(), класс LayoutInflater.
    6. Получение ресурсов: getResources(), работа с Drawable, Color, String (+работа cо строками формата).
    7. Верстка экрана редактирования данных о человеке по данному дизайну.

ЗАНЯТИЕ 4

  • Диалоги. Создание диалогов, виды диалогов, создаем все диалоги из приложения ApiDemos App/Dialogs (7 видов).
  • Меню. Создание всех меню из App/Menu.

ЗАНЯТИЕ 5

  • Работа со списками. Компонент ListView. Класс адаптера ListAdapter. Создаем список контактов людей. Компонент «Галлерея».

ЗАНЯТИЕ 6

  • Файл AndroidManifest.xml: структура, назначение компонентов. Работа с большим количеством экранов.
  • Класс Intent один их основных рабочих лошадок Android. Запуск камеры, запуск видео, медиаплейера и т.д. при помощи Intent. Запуск другого Activity из текущего. Запуск Activity как диалога.
  • Важные моменты, которые надо учитывать при разработке:
    1. Activity пересоздается при повороте: как сохранить данные.
    2. Расширяем класс Application.

ЗАНЯТИЕ 7-8

  • Работа с Интернет.
  • Многопоточность в Android.
  • Готовим продукт к публикации на Android Market.

Для кого

Для комфортного и плодотворного прохождения курса нужно владеть базовыми навыками программирования на Java. Android SDK - это, фактически, большая библиотека классов, при ее использовании  Вы столкнетесь со всеми базовыми мехнизмами и методоми объектно-ориентированного программирования.

Чему вы научитесь

В этом курсе Вы познакомитесь с особенностями верстки и разработки приложений на мобильной платформе Android. Вы научитесь проектировать сложные многопоточные приложения, а также узнаете об особенностях публикации на Android Market и способах заработка на собственных приложениях.


Программа 1-ого месяца

*Необходимо наличие компьютера или ноутбука Apple

Урок 1. Введение

  • Краткая история развития языков программирования
  • Краткая история компании Apple и почему следует изучать программирование под iPhone/iPad
  • Введение в Objective C
  • Перечисление ключевых отличий от языков Java и C++
  • Знакомство со средой XCode4. Как скачать, установить и запустить
  • Знакомство с основными окнами среды.
  • Понятие файла заголовка и файла тела программы. main – главная функция в приложении
  • Консольное приложение Hello World

Урок 2. Типы данных

  • Типы данных в C и Objective C
  • Объявление переменных и их инициализация
  • Константы и ключевое слово #define
  • Объявление typedef
  • Основные операторы: арифметические, логические, битовые, строковые
  • Объяснение общей этимологии булевых и числовых типов данных
  • Работа с символами и строками
  • NSString и ее креаторы (без объяснения принципов ООП)
  • Способы форматирования строковых данных
  • Функция NSLog

Урок 3. Управление процессом выполнения программы

  • Основы процедурного программирования
  • Ветвления и основные логические операторы, правила составления логических выражений
  • Циклы и их разновидности
  • Объявление функции
  • Ветвления (в коде)
  • Хорошие и плохие названия
  • Рекурсия
  • Включение других исполняемых файлов с помощью утилиты
  • #include
  • Составление консольной программы использующей все пройденные конструкции языка

Урок 4. Введение в управление памятью и ООП

  • Понятие структуры и способы обращения к данным в ней
  • Введение в управление памятью
  • Объяснение Runtime среды и ее отличие от классических компиляторов
  • Ключевые слова alloc, release, retain
  • Классы и объекты
  • Конструктор объекта
  • Понятие пустой ссылки на объект и особенности работы с ним в Objective C

Урок 5. Продвинутое ООП

  • Инкапсуляция
  • Наследование
  • Полиморфизм
  • Методы класса и методы экземпляра
  • Понятие свойств объекта и ключевые слова @property и @synthesize
  • Понятие соглашений конструктора и деструктора
  • Объяснение способа освобождения данных внутри объекта и функции dealloc
  • Понятие категории и протокола
  • Сокрытие функции и модификаторов доступа внутри категории

Урок 6. Продвинутое ООП и управление памятью

  • Соглашения языка о наименованиях функции и класса
  • Расширенное объяснение механизма подсчета ссылок
  • Классические коллекции
  • Оболочки в Objective C
  • Навигация внутри коллекций
  • Краткое объяснение формата XML и его роль в Objective C
  • Работа с файлами
  • Понятие сериализации. Сохранение и чтение данных массива в файл
  • Шаблоны программирования

Урок 7. Знакомство со средой COCOA

  • Среда Cocoa
  • Шаблона Delegate и Singleton как основной шаблон среды Cocoa
  • Основные классы среды и их диаграмма
  • Подробнее и строках и классе NSString
  • Пояснение работы с сообщениями
  • Понятие селектора
  • Понятие KVO (подход к программированию ключ/значение)
  • Рассылка широковещательных уведомлений с помощью NSNotificationCenter
  • Observer и KVO
  • Введение в оконные приложения
  • Основные типы пользовательского интерфейса

Урок 8. Закрепление пройденного

  • Редактор интерфейса
  • Что такое nib файл
  • Эмулятор iPhone/iPad
  • Основные классы пользовательского интерфейса iPhone
  • Понятие об MVC
  • Таблицы как каркас для построения интерфейса и класс UITableView
  • Контроль навигации UINavigatorControl
  • Написание простого приложения хранения рецептов под iPhone
  • Отладка и поиск утечек памяти
  • Информация для самостоятельного обучения
  • Заключение

Для кого курс

Начальных знаний в программировании (в том числе в программировании для устройств Apple) не требуется. Необходимо наличие компьютера или ноутбука Apple.

Чему вы научитесь

Курс включает в себя все базовые понятия. По окончании курса выпускник сможет разрабатывать простые приложения для iPhone или iPad и будет иметь надежный фундамент для дальнейшего развития. Профессиональная литература по программированию приложений и интерфейса станет доступна для понимания, так как все базовые понятия языка и стандартные фреймворки будут рассмотрены в курсе.
Ориентировочная позиция: помощник разработчика, младший разработчик (junior)
Ориентировочная зарплата: 50 000 -70 000 рублей.


Программа 2-ого месяца

*Необходимо наличие компьютера или ноутбука Apple

Урок 1. Основы разработки приложения под OS X и iOS

  • Краткая история развития языков программирования
  • Разделение этапов
  • Командная разработка
    • Разделение команды и обязанностей
  • Developer Account
    • Что такое
    • Как пользоваться
  • Системы контроля версий (СКВ)
    • Что это такое?
    • Популярные СКВ
    • Популярные СКВ Какую систему мы будем использовать?
    • Основные команды СКВ
    • Первый проект с использованием СКВ

Урок 2. Проектирование дизайна

  • Создание дизайна приложения
    • Основные редакторы
    • Выбор редактора
    • Рисуем наше будущее приложение
    • Групповое проектирование интерфейса
    • Создание дизайна иконок
    • Золотой стандарт проектирования дизайна от Apple
  • Введение в шаблоны XCode
  • Выбор шаблона XCode под наш дизайн
    • Сопоставление дизайна и приложения
    • Запуск приложения с авторским дизайном

Урок 3. Использование фреймворков, часть 1

  • Работа с адресной книгой
    • Чтение и добавление контакта
  • Работа с календарем
    • Чтение и добавление событий
  • Системные компоненты
    • WiFi
    • Bluetooth
    • Gelolocation

Урок 4. Использование фреймворков, часть 2

  • Разработка медиаприложения
    • Работа с видео
    • Работа со звуком
    • Использование QuickTime
  • Разработка браузера
    • Использование технологии WebKit

Урок 5. Продвинутая графика

  • Основы фреймворка Quartz
  • Введение в переходы
    • Что такое переход
    • Виды переходов
    • От чего зависит плавность перехода
    • Кривые Безье
    • Построение перехода на основе кривых Безье
  • Разработка визуальных эффектов
    • Основы разработки эффектов для изображений
    • Пиксели и их свойства
    • Алгоритмы эффектов
  • Разработка галереи

Урок 6. Разработка игры. OpenGL

  • Введение в OpenGL
    • Проект для OS X и iOS с OpenGL
    • Что такое 2d?
    • Что такое 3d?
    • Матрица преобразований 2d и 3d
    • Основные примитивы OpenGL
    • Что такое сцена?
    • Добавление примитивов на сцену
    • Перспектива
    • Зона видимости

Урок 7. Разработка игры. Анимация, игровая физика

  • Что такое анимация?
  • Виды анимации и fps
  • Введение в игровую физику
    • Векторы в 2d и 3d
    • Математические библиотеки
    • Акселерометр и гироскоп

Урок 8. Разработка игры. Cocos2d и искусственный интеллект

  • Введение в Cocos2d
    • Что такое Cocos2d?
    • Что такое спрайты?
    • Анимация, физика в Cocos2d
    • Создание первого проекта с Cocos2d
  • Введение в искусственный интеллект
    • Что такое ИИ?
    • Введение в понятия нечетких множеств
    • Проведение систематизирующего анализа (построение ИИ)
    • Простейшая реализации ИИ

Для кого

Курс «Objective C. Уровень 2» предназначен для iOS и OS X разработчиков, желающих освоить методики разработки интегральных систем и игр, с использованием систем контроля версий, 2d и 3d графики и современных фреймворков. Для полноценного освоения материала слушателям желательно иметь навыки разработки консольных приложений с использованием Objective C  или языка Си.

Чему вы научитесь

  • создавать красивые приложения под iOS и OS X
  • пользоваться золотыми правилами разработки интерфейсов от Apple
  • пользоваться системой контроля версий
  • использовать возможность системных компонент: Геопозиционирование, Bluetooth, WiFi и многое другое
  • узнаете о Core Audio, модуляции и профессиональной обработки звуковых колебаний
  • работать с видео и аудио файлами
  • использовать технологию webkit
  • постигните процесс анимации из двухмерного пространства к трехмерному
  • освоите методики проектирования игр и искусственного интеллекта (AI)



http://www.proglive.ru/