Основные темы видеокурса                   - Углубленное применение ООП
- Анализ и создание структуры проекта
- Применение паттернов проектирования
- Слабые связи между объектами
- Правильная структура кода
- Универсальность кода
- Заменяемые компоненты
- Создание «движка» приложения
- Абстрактный уровень
- Уровень реализации
- Главные принципы любого профессионального кода
- Сборка проекта
- Нахождение узких мест программы
- Использование профилировщика
- Анализ загруженности приложения
- Работа с базой данных SQLite
- Создание кастомных SWING компонентов
- и многое другое...
КАКИЕ ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ ВЫ ПРОЙДЕТЕ?       - Одиночка (Singleton)
- Фасад (Facade)
- Фабричный метод (Factory Method)
- Наблюдатель (Observer)
- Абстрактная фабрика (Abstract Factory)
- Стратегия (Strategy)
- Адаптер (Adapter)
- Состояние (State)
Вы будете использовать различные паттерны проектирования. Причем не все сразу, а по-очереди - для более удобного усвоения материала.            
       - Последовательное изучение каждого паттерна (не все сразу)
- Составление таблицы паттернов
- Применение каждого паттерна на текущей задаче
- Сравнение исходных кодов с паттерном и без него
Сначала вы начнете использовать порождающие паттерны, после этого будем переходить к структурным и поведенческим.      
 Важное примечание: вы сможете сравнить реализацию без применения паттернов и с применением, чтобы увидеть разницу.      
 После этого вы уже никогда больше не будете программировать как прежде - только с применением ООП и шаблонов проектирования!      
 Как обычно - вы будете создавать код по принципу 'от простого к сложному'.       
Какой проект вы разработаете?       Вы будете разрабатывать аналог игры 'Золотоискатель'.      
 Основная цель игры - собрать золото, укрыться от монстров и выйти из лабиринта (более подробные требования будут даны на самом тренинге)       
КРАТКИЙ СПИСОК ТЕМ, КОТОРЫЕ БУДУТ В УРОКАХ                   - Разбор пошагового алгоритма написания программы
- Описание задачи и целей программы
- Упрощенные этапы проектирования
- Принципы GRASP
- Проектирование функционала
- Проектирование схемы программы
- Проектирование объектов
- Разбиение объектов на составляющие
- Проставление связей между объектами
- Создание 'движка' программы
- Применение принципов ООП для объектов
- Добавление возможности расширения объектов программы
- Последовательная разработка: внедрение объектов
- Создание менеджеров управления объектами
- Добавление валидаторов для проверки ввода значений
- Принципы создания объектов
- Создание 'запчастей' программы
- Увеличение читабельности
- Разработка внешнего вида программы (графический интерфейс)
- Разработка структуры таблицы базы данных
- Хранение всей статистики программы
- Логическое распределение классов по пакетам
- Правильное именование пакетов
- Рефакторинг кода
- Обсуждение идей по развитию программы
- Тестирование функционала программы на JUnit
- Автоматизация по созданию тестов в NetBeans
- Проверка кода на покрытие тестами (Coverage)
- Создание и применение собственных типов исключений (Exception)
- Создание звукового сопровождения
- Разбор применяемых паттернов проектирования
- Поиск 'узких' мест программы
- Использование профилировщика
- Анализ скорости программы
- Анализ создаваемых объектов
ОПТИМИЗАЦИЯ КОДА Вы научитесь не только профессионально писать программный код, но и отслеживать все его 'узкие места'. Эти навыки пригодятся вам в любом проекте - как сделать так, чтобы программа работала без сбоев и с минимальным потреблением памяти.       
Вы сможете решать такие вопросы как:                   - Нехватка памяти
- Анализ файла heap dump
- Лишние объекты
- Оптимизация объектов
- Скорость работы методов
- Нагрузка программы
КАК ПРАВИЛЬНО РАБОТАТЬ С ФАЙЛАМИ HEAP DUMP Heap Dump - это специальный файл, который создается вручную или виртуальной машиной для анализа ситуации.      
 Очень часто с этим файлом вам придется работать в веб-разработке, когда сервер приложений будет ломаться и вам нужно будет понять, из-за чего это произошло.      
 Эти знания пригодятся вам на всю жизнь.      
 Вам больше не нужно будет гадать - вы научитесь анализировать и разбирать проблемные ситуации.       
ДРУГИЕ ТЕМЫ                   - Сериализация
- Рефакторинг кода
- База данных SQLite
- Проектирование программы
- Работа со звуком
- Графический интерфейс
Вы поймете как можно сохранять и восстанавливать любую информацию в Java без потери в производительности.      
 Сериализация - очень важный навык для любого программиста. Эти знания пригодятся вам в любых проектах, где нужно будет сохранять и передавать данные      
 В проекте будет использоваться база данных SQLite. В ней будут храниться все результаты игр, сохраненные пользователи с данными и пр.      
 Доступ к данным осуществляется через JDBC API и SQL запросы. Для выполнения запросов вам понадобится драйвер последней версии.      
 Все игры будут храниться в двоичном виде для возможности быстрого восстановления.      
 Вы также научитесь работать со звуком в Java. Важно, чтобы звуковые эффекты не 'тормозили' вашу программу, т.е. работали автономно. Поэтому их нужно уметь запускать в параллельных потоках и подгружать в нужные объекты.      
 Все объекты игры во время движения могут издавать звуки - вы узнаете как оптимизировать скорость выполнения (т.к. объектов может быть большое количество)