Паттерны проектирования и углубленное ООП на практике. Быстрый переход на профессиональный уровень. Исходные коды обновлены: апрель 2019 г. Полностью практический видеокурс, где вы научитесь профессионально программировать в стиле ООП, применять шаблоны проектирования и делать анализ производительности.
3 ОСНОВНЫХ НАПРАВЛЕНИЯ ВИДЕОКУРСА
ПРОФЕССИОНАЛЬНОЕ ООП
В этом проекте вы будете использовать ООП на полную мощность: проектирование, наследование, интерфейсы, полиморфизм, объекты - все это на профессиональном уровне.
АНАЛИЗ ПРОИЗВОДИТЕЛЬНОСТИ
Вы научитесь делать полный анализ вашего кода: какие объекты создаются, сколько памяти занимают, где находятся узкие места, как сделать анализ heap dump файла и многое другое
ПРИМЕНЕНИЕ ПАТТЕРНОВ
Для реализации задачи вам понадобится применить ряд паттернов, которые сделают код более универсальным и расширяемым. Вы поймете как нужно использовать шаблоны Java.
Чему вы научитесь
- использовать паттерны программирования на практике
- проектировать с нуля всю структуры программы - от идеи до проверки работы всей системы
- описывать схему взаимодействий объектов
- выделять зависимости и поведения объектов для их группировки
- последовательно разрабатывать программный код
- тестировать код различными типами тестов (на ошибки, на скорость работы, на результаты методов и пр.)
- создавать документацию к программе JavaDocs
- разбивать проект на маленькие подзадачи и реализовывать их отдельно
- использовать преимущества NetBeans при разработке кода
- использовать рефакторинг для правильного изменения кода
- и многое другое
Основные темы видеокурса
- Углубленное применение ООП
- Анализ и создание структуры проекта
- Применение паттернов проектирования
- Слабые связи между объектами
- Правильная структура кода
- Универсальность кода
- Заменяемые компоненты
- Создание «движка» приложения
- Абстрактный уровень
- Уровень реализации
- Главные принципы любого профессионального кода
- Сборка проекта
- Нахождение узких мест программы
- Использование профилировщика
- Анализ загруженности приложения
- Работа с базой данных 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. Важно, чтобы звуковые эффекты не "тормозили" вашу программу, т.е. работали автономно. Поэтому их нужно уметь запускать в параллельных потоках и подгружать в нужные объекты.
Все объекты игры во время движения могут издавать звуки - вы узнаете как оптимизировать скорость выполнения (т.к. объектов может быть большое количество)