Быстрый переход на профессиональный уровень
Исходные коды обновлены: апрель 2019 г.
В этом проекте вы будете использовать ООП на полную мощность: проектирование, наследование, интерфейсы, полиморфизм, объекты - все это на профессиональном уровне.
Вы научитесь делать полный анализ вашего кода: какие объекты создаются, сколько памяти занимают, где находятся узкие места, как сделать анализ heap dump файла и многое другое
Для реализации задачи вам понадобится применить ряд паттернов, которые сделают код более универсальным и расширяемым. Вы поймете как нужно использовать шаблоны Java.
Стать профессиональным программистом можно довольно быстро - нужно просто знать какие направления изучать, а какие можно оставить на потом.
Ошибка большинства новичков в том, что они пытаются идти сразу в несколько сторон - в итоге так и стоят на месте.
И конечно же нужна хорошая практика, где вы сможете посмотреть и повторить по шагам профессионально написанный программный код.
Именно этого и не хватает почти во всех учебниках и интернет - ресурсах.
Чем больше практики - тем быстрее результаты!
Все новички любят спагетти, потому что в начале у них всегда получается "спагетти - код".
Вы скорее всего знакомы с этим понятием. Мы называем это любимым блюдом всех начинающих программистов, потому что именно новички стараются писать код по принципу "главное, чтобы работало."
Спагетти кодом называют такой запутанный код, который уже непонятно как работает и изначально был спроектирован и написан неверно.
Программа разделена на модули неверно, громоздкие объекты уже не знают как работать и любое изменение может принести смерть всей программе.
Но главное - что работает!
Думаю, что это стандартные грабли, особенно для новичков. И если не менять свои принципы программирования - наступает скорая смерть профессиональной карьеры.
Как только ваша программа начинает расширяться - вы уже теряете основные нити, не помните зачем создавали те или иные объекты и все окончательно превращается в спагетти.
Чтобы все это исправить приходится переписывать весь проект заново. Это очень затратно по времени и ресурсам - поэтому программисты, которые умеют изначально построить правильную систему - на вес золота!
Более того, с похожими проблемами сталкиваются около 95% процентов всех новичков! Поэтому неудивительно, что так мало людей становятся действительно профессионалами.
Самый простой, но долгий вариант - набить себе все шишки и на своем опыте понять что это такое. Можно самостоятельно пройти пусть с нуля до более менее серьезного опыта, стойко выдержать все удары и выйти победителем.
Но победителем выходят не все, именно поэтому так мало профессионалов в Java.
Понятно, что это полезный, но очень долгий и больный путь. Я сам прошел его и знаю насколько он проблемный. Сегодня, когда технологии меняются очень быстро мы не имеем много времени для постепенного развития! |
|
Ответ лежит на поверхности. И вы его скорее всего уже знаете.
Чтобы стать профессиональным программистом, нужно в первую очередь выполнить 2 важных пункта:
создавать код в стиле ООП | |
использовать шаблоны проектирования |
И все! Этого будет достаточно для любого начинающего Java программиста.
Можно еще конечно добавить пункт по анализу вашего кода, т.е.
уметь находить и исправлять "узкие" места в вашем коде |
Вы можете создать одну и ту же программу многочисленными способами. И только несколько из них будут написаны настоящим профессиональным кодом.
Ваша программа может быть похожа на кривой и не собранный кубик-рубик: вроде работает, но постоянно что-то ломается и трудно собрать все в единую картину. |
Другой вариант: ваша программа собрана идеально, все объекты правильно подходят друг к другу - это похоже на собранный кубик-рубик - ничего лишнего. |
БЕЗ применения шаблонов и ООП |
С применением шаблонов и ООП |
Многие думают, что для ООП достаточно знать, что такое интерфейсы и абстрактные классы.
Хотя это не так.
Если вы хорошо владеете всеми терминами ООП, но не можете их применить на практике - то вы стоите на одном уровне с теми, кто вообще ничего не знает.
Потому что знать и применять - это разные вещи.
Важно не только глубоко понимать теорию, но и правильно применять ее на практике в нужных местах.
Теперь вы уже знаете, как нужно создавать любую Java программу, будь это веб - программирование, либо Android приложения - принципы везде одни и те же.
Стать профессиональным программистом можно довольно быстро - нужно просто знать какие направления изучать, а какие можно оставить на потом. Ошибка большинства новичков в том, что они пытаются идти сразу в несколько сторон - в итоге так и стоят на месте.
И конечно же нужна хорошая практика, где вы сможете посмотреть и повторить по шагам профессионально написанный программный код. Именно этого и не хватает почти во всех учебниках и интернет - ресурсах.
Чем больше практики - тем быстрее результаты!
- использовать паттерны программирования на практике
- проектировать с нуля всю структуры программы - от идеи до проверки работы всей системы
- описывать схему взаимодействий объектов
- выделять зависимости и поведения объектов для их группировки
- последовательно разрабатывать программный код
- тестировать код различными типами тестов (на ошибки, на скорость работы, на результаты методов и пр.)
- создавать документацию к программе JavaDocs
- разбивать проект на маленькие подзадачи и реализовывать их отдельно
- использовать преимущества NetBeans при разработке кода
- использовать рефакторинг для правильного изменения кода
- и многое другое
|
|
Одиночка (Singleton)
|
Фасад (Facade) |
||
Фабричный метод (Factory Method) |
Наблюдатель (Observer) |
||
Абстрактная фабрика (Abstract Factory) |
Стратегия (Strategy) |
||
Адаптер (Adapter) |
Состояние (State) |
Вы будете использовать различные паттерны проектирования. Причем не все сразу, а по-очереди - для более удобного усвоения материала.
Сначала вы начнете использовать порождающие паттерны, после этого будем переходить к структурным и поведенческим.
Важное примечание: вы сможете сравнить реализацию без применения паттернов и с применением, чтобы увидеть разницу.
После этого вы уже никогда больше не будете программировать как прежде - только с применением ООП и шаблонов проектирования!
Как обычно - вы будете создавать код по принципу "от простого к сложному".
Вы будете разрабатывать аналог игры "Золотоискатель".
Основная цель игры - собрать золото, укрыться от монстров и выйти из
лабиринта (более подробные требования будут даны на самом тренинге)
Вот некоторые скриншоты проекта
(у вас возможно будет собственная, непохожая реализация):
Посмотрите видеопрезентацию:
(убедитесь, что у вас настроен флеш и включен звук)
Около 2-х лет назад я
разрабатывал эту программу по просьбе знакомого для написания дипломной
работы в университете York.
После проверки профессоров данный исходный код получил 1 место среди всех студентов университета с пометкой "лучшая реализация ООП". Таким образом исходный код прошел проверку комиссии из лучших преподавателей.
|
|
Вы научитесь не только профессионально писать программный код, но и отслеживать все его "узкие места". Эти навыки пригодятся вам в любом проекте - как сделать так, чтобы программа работала без сбоев и с минимальным потреблением памяти.
Вы сможете решать такие вопросы как:
Нехватка памяти
|
Анализ файла 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 и многие другие. |
Какие нужны начальные знания?
|
Запустится ли курс на MacOS/Linux?
|
Каким способом можно оплатить курс?
|
Сколько времени нужно на изучение курса?
|
Как оплатить в другой валюте? (доллары, евро, гривны, тенге и пр.)
|
Можно купить один комплект, а позже доплатить за другой?
|
Куда можно будет задавать вопросы?
|
В какой IDE будем работать?
|
Буду ли я получать обновления по курсу (бонусные уроки)?
|
Можно ли купить курс и начать его изучение позже?
|
В курсе уже есть исходные коды?
|
Можно открывать проекты в другой IDE?
|
Исходные коды обновлены: апрель 2019 г.
(посмотреть интерактивную ДЕМО версию курса)
Картой VISA, MasterCard (онлайн оплата)
Платежная система Webmoney (онлайн оплата)
Платежная система Яндекс.Деньги (онлайн оплата)
Платежная система QIWI (онлайн оплата или через любой терминал)
Платежная система Paypal (онлайн оплата)
"Сбербанк Онлайн" или "Тинькофф Кредитные системы"(онлайн оплата)
Приват24(онлайн оплата)
Казком или с любой карты Казахстана(онлайн оплата или наличными через банкомат, банк)
Денежные переводы через системы: (наличными через банк)
Салоны связи (наличными)
Любой банкомат "Сбербанка" (наличными)
Безнал. расчёт для физ. и юр. лиц (наличными через банк)
P.S. Не нашли подходящий способ оплаты? Напишите нам