Паттерны проектирования и
углубленное ООП на практике

Быстрый переход на профессиональный уровень

Исходные коды обновлены: апрель 2019 г.


Полностью практический видеокурс, где вы научитесь профессионально программировать в стиле ООП, применять шаблоны проектирования и делать анализ производительности

 

 

 

3 ОСНОВНЫХ НАПРАВЛЕНИЯ ВИДЕОКУРСА



ПРОФЕССИОНАЛЬНОЕ ООП

В этом проекте вы будете использовать ООП на полную мощность: проектирование, наследование, интерфейсы, полиморфизм, объекты - все это на профессиональном уровне.



АНАЛИЗ ПРОИЗВОДИТЕЛЬНОСТИ

Вы научитесь делать полный анализ вашего кода: какие объекты создаются, сколько памяти занимают, где находятся узкие места, как сделать анализ heap dump файла и многое другое



ПРИМЕНЕНИЕ ПАТТЕРНОВ

Для реализации задачи вам понадобится применить ряд паттернов, которые сделают код более универсальным и расширяемым. Вы поймете как нужно использовать шаблоны Java.

ПОЛУЧИТЬ ВИДЕОКУРС >

КАК БЫСТРО СТАТЬ ПРОФЕССИОНАЛОМ?

  • Стать профессиональным программистом можно довольно быстро - нужно просто знать какие направления изучать, а какие можно оставить на потом.

    Ошибка большинства новичков в том, что они пытаются идти сразу в несколько сторон - в итоге так и стоят на месте.

    И конечно же нужна хорошая практика, где вы сможете посмотреть и повторить по шагам профессионально написанный программный код.

    Именно этого и не хватает почти во всех учебниках и интернет - ресурсах.

    Чем больше практики - тем быстрее результаты!

ПОЧЕМУ МНОГИЕ НОВИЧКИ ОСТАНАВЛИВАЮТСЯ?

  • Мы очень часто наблюдали ситуацию, когда начинающий Java программист лихо брался за дело, но уже через пару месяцев сходил с дистанции.
  • Как оказалось, проблема кроется в неправильном применении времени - многие изучают не то, что нужно и не в той последовательности.

ЛЮБИМОЕ БЛЮДО НАЧИНАЮЩЕГО ПРОГРАММИСТА

 

Все новички любят спагетти, потому что в начале у них всегда получается "спагетти - код".

Вы скорее всего знакомы с этим понятием. Мы называем это любимым блюдом всех начинающих программистов, потому что именно новички стараются писать код по принципу "главное, чтобы работало."

 

Спагетти кодом называют такой запутанный код, который уже непонятно как работает и изначально был спроектирован и написан неверно.

Программа разделена на модули неверно, громоздкие объекты уже не знают как работать и любое изменение может принести смерть всей программе.

 

Но главное - что работает!

 

МЕДЛЕННОЕ САМОУБИЙСТВО

 

Думаю, что это стандартные грабли, особенно для новичков. И если не менять свои принципы программирования - наступает скорая смерть профессиональной карьеры.

 

Как только ваша программа начинает расширяться - вы уже теряете основные нити, не помните зачем создавали те или иные объекты и все окончательно превращается в спагетти.

 

Чтобы все это исправить приходится переписывать весь проект заново. Это очень затратно по времени и ресурсам - поэтому программисты, которые умеют изначально построить правильную систему - на вес золота!

 

Более того, с похожими проблемами сталкиваются около 95% процентов всех новичков! Поэтому неудивительно, что так мало людей становятся действительно профессионалами.

Как избежать эти грабли и быстро стать профи?

 

Самый простой, но долгий вариант - набить себе все шишки и на своем опыте понять что это такое.

Можно самостоятельно пройти пусть с нуля до более менее серьезного опыта, стойко выдержать все удары и выйти победителем.

 

Но победителем выходят не все, именно поэтому так мало профессионалов в Java.

 

Понятно, что это полезный, но очень долгий и больный путь. Я сам прошел его и знаю насколько он проблемный.

Сегодня, когда технологии меняются очень быстро мы не имеем много времени для постепенного развития!

   

 

Чтобы быстро стать профессионалом -
нужно с самого начала заложить правильный фундамент

КАК НОВИЧКУ НУЖНО НАЧИНАТЬ ПРОГРАММИРОВАТЬ?

 

Ответ лежит на поверхности. И вы его скорее всего уже знаете.

Чтобы стать профессиональным программистом, нужно в первую очередь выполнить 2 важных пункта:

создавать код в стиле ООП
использовать шаблоны проектирования

И все! Этого будет достаточно для любого начинающего Java программиста.

Можно еще конечно добавить пункт по анализу вашего кода, т.е.

уметь находить и исправлять "узкие" места в вашем коде

 

Вы можете создать одну и ту же программу многочисленными способами. И только несколько из них будут написаны настоящим профессиональным кодом.

 

 

 

Сравните 2 реализации одной и той же программы

Ваша программа может быть похожа на кривой и не собранный кубик-рубик: вроде работает, но постоянно что-то ломается и трудно собрать все в единую картину.
Другой вариант: ваша программа собрана идеально, все объекты правильно подходят друг к другу - это похоже на собранный кубик-рубик - ничего лишнего.

БЕЗ применения шаблонов и ООП

С применением шаблонов и ООП

Что такое "правильное применение ООП"?

 

Многие думают, что для ООП достаточно знать, что такое интерфейсы и абстрактные классы.

Хотя это не так.

 

Если вы хорошо владеете всеми терминами ООП, но не можете их применить на практике - то вы стоите на одном уровне с теми, кто вообще ничего не знает.

 

Потому что знать и применять - это разные вещи.

Важно не только глубоко понимать теорию, но и правильно применять ее на практике в нужных местах.

 

Теперь вы уже знаете, как нужно создавать любую Java программу, будь это веб - программирование, либо Android приложения - принципы везде одни и те же.

 

 

Вы можете получить профессиональные знания уже сейчас!

 

Получить видеокурс

Получите готовый видеокурс с полным
разбором всех перечисленных тем

 

Стать профессиональным программистом можно довольно быстро - нужно просто знать какие направления изучать, а какие можно оставить на потом. Ошибка большинства новичков в том, что они пытаются идти сразу в несколько сторон - в итоге так и стоят на месте.

 

И конечно же нужна хорошая практика, где вы сможете посмотреть и повторить по шагам профессионально написанный программный код. Именно этого и не хватает почти во всех учебниках и интернет - ресурсах.

 

Чем больше практики - тем быстрее результаты!

 

 

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

- использовать паттерны программирования на практике

- проектировать с нуля всю структуры программы - от идеи до проверки работы всей системы

- описывать схему взаимодействий объектов

- выделять зависимости и поведения объектов для их группировки

- последовательно разрабатывать программный код

- тестировать код различными типами тестов (на ошибки, на скорость работы, на результаты методов и пр.)

- создавать документацию к программе JavaDocs

- разбивать проект на маленькие подзадачи и реализовывать их отдельно

- использовать преимущества NetBeans при разработке кода

- использовать рефакторинг для правильного изменения кода

- и многое другое

 

Я за руку проведу вас от начала и до конца через все процессы
проектирования и разработки программы на Java

 

Получить видеокурс

 

ВЫ НАУЧИТЕСЬ РАЗРАБАТЫВАТЬ КОД, КАК НА ЭТОЙ КАРТИНКЕ

 

 

 

Основные темы видеокурса

  • Углубленное применение ООП
    Анализ и создание структуры проекта
    Применение паттернов проектирования
    Слабые связи между объектами
    Правильная структура кода
    Универсальность кода
    Заменяемые компоненты
    Создание «движка» приложения
    Абстрактный уровень
  • Уровень реализации
    Главные принципы любого профессионального кода
    Сборка проекта
    Нахождение узких мест программы
    Использование профилировщика
    Анализ загруженности приложения
    Работа с базой данных SQLite
    Создание кастомных SWING компонентов
    и многое другое...
Какие паттерны проектирования вы пройдете?
Одиночка (Singleton)
Фасад (Facade)
Фабричный метод (Factory Method)
Наблюдатель (Observer)
Абстрактная фабрика (Abstract Factory)
Стратегия (Strategy)
Адаптер (Adapter)
Состояние (State)

 

 

Вы будете использовать различные паттерны проектирования. Причем не все сразу, а по-очереди - для более удобного усвоения материала.

 

  • - Последовательное изучение каждого паттерна (не все сразу)
  • - Составление таблицы паттернов
  • - Применение каждого паттерна на текущей задаче
  • - Сравнение исходных кодов с паттерном и без него

 

Сначала вы начнете использовать порождающие паттерны, после этого будем переходить к структурным и поведенческим.

Важное примечание: вы сможете сравнить реализацию без применения паттернов и с применением, чтобы увидеть разницу.

После этого вы уже никогда больше не будете программировать как прежде - только с применением ООП и шаблонов проектирования!

Как обычно - вы будете создавать код по принципу "от простого к сложному".

 

 

 

Какой проект вы разработаете?

 

Вы будете разрабатывать аналог игры "Золотоискатель".

Основная цель игры - собрать золото, укрыться от монстров и выйти из лабиринта (более подробные требования будут даны на самом тренинге)
 
Вот некоторые скриншоты проекта (у вас возможно будет собственная, непохожая реализация):

Посмотрите видеопрезентацию:

(убедитесь, что у вас настроен флеш и включен звук)

 

 


Около 2-х лет назад я разрабатывал эту программу по просьбе знакомого для написания дипломной работы в университете York.

После проверки профессоров данный исходный код получил 1 место среди всех студентов университета с пометкой "лучшая реализация ООП".  Таким образом исходный код прошел проверку комиссии из лучших преподавателей. 

 

Получить видеокурс

 

 

 

 

КРАТКИЙ СПИСОК ТЕМ, КОТОРЫЕ БУДУТ В УРОКАХ

 

 

  • - Разбор пошагового алгоритма написания программы

    - Описание задачи и целей программы

    - Упрощенные этапы проектирования

    - Принципы GRASP

    - Проектирование функционала

    - Проектирование схемы программы

    - Проектирование объектов

    - Разбиение объектов на составляющие

    - Проставление связей между объектами

    - Создание "движка" программы

    - Применение принципов ООП для объектов

    - Добавление возможности расширения объектов программы

    - Последовательная разработка: внедрение объектов

    - Создание менеджеров управления объектами

    - Добавление валидаторов для проверки ввода значений

    - Принципы создания объектов

    • - Создание "запчастей" программы

      - Увеличение читабельности

  • - Разработка внешнего вида программы (графический интерфейс)

    - Разработка структуры таблицы базы данных

    - Хранение всей статистики программы

    - Логическое распределение классов по пакетам

    - Правильное именование пакетов

    - Рефакторинг кода

    - Обсуждение идей по развитию программы

    - Тестирование функционала программы на JUnit

    - Автоматизация по созданию тестов в NetBeans

    - Проверка кода на покрытие тестами (Coverage)

    - Создание и применение собственных типов исключений (Exception)

    - Создание звукового сопровождения

    - Разбор применяемых паттернов проектирования

    - Поиск "узких" мест программы

    - Использование профилировщика

    - Анализ скорости программы

    - Анализ создаваемых объектов

 

 

ОПТИМИЗАЦИЯ КОДА

 

Вы научитесь не только профессионально писать программный код, но и отслеживать все его "узкие места". Эти навыки пригодятся вам в любом проекте - как сделать так, чтобы программа работала без сбоев и с минимальным потреблением памяти.

 

Вы сможете решать такие вопросы как:

 

Нехватка памяти
Анализ файла heap dump
Лишние объекты
Оптимизация объектов
Скорость работы методов
Нагрузка программы

 

 

Вот некоторые скриншоты, которые вы научитесь использовать для оптимизации кода:

 

 

 

Кто виноват, что один метод вызывается постоянно

 

 

 

Какие объекты "съедают" память

 

 

 

Сколько памяти "кушает" ваша программа и почему

 

 

Дерево зависимостей

 

 

 

 

Как правильно работать с файлами Heap Dump

Heap Dump - это специальный файл, который создается вручную или виртуальной машиной для анализа ситуации.

 

Очень часто с этим файлом вам придется работать в веб-разработке, когда сервер приложений будет ломаться и вам нужно будет понять, из-за чего это произошло.

Эти знания пригодятся вам на всю жизнь.

 

Вам больше не нужно будет гадать - вы научитесь анализировать и разбирать проблемные ситуации.

 

 

 

Другие темы

 

Сериализация
Рефакторинг кода
База данных SQLite
Проектирование программы
Работа со звуком
Графический интерфейс

 

Вы поймете как можно сохранять и восстанавливать любую информацию в Java без потери в производительности.

Сериализация - очень важный навык для любого программиста. Эти знания пригодятся вам в любых проектах, где нужно будет сохранять и передавать данные

 

В проекте будет использоваться база данных SQLite. В ней будут храниться все результаты игр, сохраненные пользователи с данными и пр.

Доступ к данным осуществляется через JDBC API и SQL запросы. Для выполнения запросов вам понадобится драйвер последней версии.

Все игры будут храниться в двоичном виде для возможности быстрого восстановления.

 

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

 

Все объекты игры во время движения могут издавать звуки - вы узнаете как оптимизировать скорость выполнения (т.к. объектов может быть большое количество)

 

 

 

Меню курса

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

(посмотреть интерактивную ДЕМО версию курса)



Изначально уроки записаны с использованием IDE NetBeans. Но вы можете открывать их в любой IDE, т.к. это стандартный JavaSE. Нет привязки к фреймворкам или другим ресурсам. К тому же, в NetBeans самый удобный визуальный редактор для Swing.

Проекты также можно открывать в IntelliJ IDEA. Можно использовать Community Edition (бесплатная версия). Отличия в от NetBeans - здесь менее удобный редактор Swing.

 

СКРИНШОТЫ ВИДЕОКУРСА

 

 

 

 

 

 

 

 

 

Отзывы учеников на курсы

Поддержка по вашим вопросам

 

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

Об авторе

 

Тимур Батыршинов: 33 года, Java разработчик, опыт более 14 лет, основатель javabegin.ru

Главный тренер. За 7 лет обучил более 46000 человек (онлайн и оффлайн)

Автор более 50 курсов по разным направлениям Java: основы, веб, Android, Spring и многие другие.

 

Вопросы читателей

Какие нужны начальные знания?

Для изучения данного курса у вас должны быть хорошие знания всех основ Java, а именно: синтаксис, коллекции, ООП, Swing, БД, JDBC, SQL.

Без этих знаний нет смысла изучать курс, т.к. многое будет непонятно.

Эти темы вы можете пройти в курсах:

"Профессиональное применение ООП в Java"

"Разработка MP3 плеера на Swing"

"Базы данных в Java"

Запустится ли курс на MacOS/Linux?

Да, вы сможете работать с любой ОС: Windows, MacOS, Linux и пр.

Принципы работы одинаковые: для навигации по урокам вы будете использовать HTML меню, которое работает во всех браузерах.

Каким способом можно оплатить курс?

Поддерживаются все способы оплаты: картами, электронными кошельками, через банк наличными и многие другие.

Подробнее можно посмотреть ниже на этой странице.

Сколько времени нужно на изучение курса?

Примерно 3-4 недели, т.к. проект сложный. В день уходит в среднем уходит около 2 часов.

Самое главное - выполнять практические задания самостоятельно, по крайней мере стараться.

 

Как оплатить в другой валюте? (доллары, евро, гривны, тенге и пр.)

Если оплачиваете онлайн платежом (картой или электронного кошелька) или через банк - то конвертация происходит автоматически по курсу вашего банка.

Если оплачиваете наличными (через банкомат или терминал) - нужно выполнить конвертацию самостоятельно. Подробная инструкция находится в способах оплаты.

 

Можно купить один комплект, а позже доплатить за другой?

Можно, но разница будет выше, чем если сразу покупать нужный комплект.

Примерно на 30-40% процентов.

Для того, чтобы доплатить за нужный комплект - напишите в саппорт.

Куда можно будет задавать вопросы?

У вас будет возможность задавать вопросы в специальную закрытую группу (смотрите по комплектам), где будут отвечать как другие читатели, так и автор курса.

 

В какой IDE будем работать?

В данном курсе вы будете работать в NetBeans или IntelliJ IDEA (проекты будут открываться в обоих IDE). Используйте любой удобный вариант.

 

Буду ли я получать обновления по курсу (бонусные уроки)?

Да. Периодически выходят различные дополнения, связанные с решением недочетов или ошибок, обновляется исходный код. Вся информация будет приходить вам на email.

 

Можно ли купить курс и начать его изучение позже?

Да, особенно если покупаете по акции со скидкой - многие так делают. Изучение курса можете начинать в любое время. Вопросы сможете задавать также в любое время.

 

В курсе уже есть исходные коды?

Все исходные коды есть, по каждому уроку можно будет открывать в IntelliJ IDEA. Но я рекомендую все равно набирать весь код вручную, чтобы лучше запомнить его.

 

Можно открывать проекты в другой IDE?

Можно, для этого нужно выполнять "Import вместе с иходными файлами" для соответствующей IDE. Как это правильно делать - смотрите в документации по вашей IDE.

 

 

Все вопросы также можете задавать в онлайн чате в правом нижнем углу страницы.

 

СТОИМОСТЬ ВИДЕОКУРСА

Исходные коды обновлены: апрель 2019 г.

(посмотреть интерактивную ДЕМО версию курса)

МИНИМУМ

  • Видеоуроки
  • Исходники
  • Файлы PDF

СТАНДАРТ

РАСШИРЕННЫЙ

  • Видеоуроки
  • Исходники
  • Файлы PDF
  • Закрытый форум
  • Проверка исходных кодов

ВСЕ ВКЛЮЧЕНО

  • Видеоуроки
  • Исходники
  • Файлы PDF
  • Закрытый форум
  • Проверка исходных кодов
  • 2 скайп сессии по 1 часу

 

 

Доступные способы оплаты

Картой VISA, MasterCard (онлайн оплата)

Платежная система Webmoney (онлайн оплата)

Платежная система Яндекс.Деньги (онлайн оплата)

Платежная система QIWI (онлайн оплата или через любой терминал)

Платежная система Paypal (онлайн оплата)

"Сбербанк Онлайн" или "Тинькофф Кредитные системы"(онлайн оплата)

Приват24(онлайн оплата)

Казком или с любой карты Казахстана(онлайн оплата или наличными через банкомат, банк)

Денежные переводы через системы: (наличными через банк)

Салоны связи (наличными)

Любой банкомат "Сбербанка" (наличными)

Безнал. расчёт для физ. и юр. лиц (наличными через банк)

 

P.S. Не нашли подходящий способ оплаты? Напишите нам

Партнерская программа    Служба поддержки

JavaBegin  БАТЫРШИНОВ ТИМУР, ИИН 851110300087