# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Подготовка - Фрукты по списку |
2 теста |
|||
На этом уроке мы познакомимся с перечислением Enum. Фактически - это набор именных констант в одной упаковке. Перечисления в языке Java представляют из себя класс, который предоставляет много интересных возможностей. Преимущества использования перечислений: + Все константы собраны под одним именем. + Можно проверить наличие строчного значения в списке. + Можно в цикле перебрать все константы. + Оператор выбора switch на основе перечисления исключает ошибки. + Можно использовать как константную справочную базу данных. Самостоятельное задание: Создайте перечисление по дням недели - от MONDAY до SUNDAY. Введите с клавиатуры строку и проверьте, является ли она днём недели. Выведите название введённого дня недели на русском языке (switch-case). Выведите на экран список всех дней недели, кроме введённого. Отчёт отправил: 791. Валерий Жданов Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Прокачал навыки по енуму, узнал как работать со значениями Сложности: Ничего Комментарии: Не разбив скорлупы, ядро ореха не попробуешь... |
|||||
2 | Подготовка - База фруктов |
1 тест |
|||
На этом уроке мы увидим интересные возможности перечислений enum в языке Java. Оказывается каждое слово - это не просто константное числовое значение, а целый экземпляр класса, в котором можно размещать справочную информацию. Получается целая константная база данных - справочник! Рекомендуемая литература: http://interviewinit.com/2014/04/java-enumerations-особенности/ 15 вопросов на собеседование относительно Enum, с ответами: http://info.javarush.ru/translation/2015/10/13/15-вопросов-для-собеседования-разработчиков-относительно-Enum-в-Джаве-с-ответами-.html Самостоятельное задание Отчёт отправил: 791. Валерий Жданов Выполнено за 55 мин. [Показать отчёт] Научился: Навыкам работы с enum, while(true), continue, а также расширил теоретические знания по enum Сложности: Найти ошибку - пропустил строчку Комментарии: Очень удобная вещь - enum, урок дался мне тяжеловато, но после него громадная мотивация идти дальше. Много узнал теоретических основ |
|||||
3 |
![]() |
2 теста |
|||
Мы начинаем создание Java-проекта на основе задачи про Деда Мороза, который дарил детям фрукты. При создании проекта вы сможете проникнуться духом Явы и прочуствовать во всей красе суть объектно-ориентированного подхода. Отчёт отправил: 791. Валерий Жданов Выполнено за 24 мин. [Показать отчёт] Научился: Создавать ArrayList в java, работать с типами InputStreamReader, BufferedReader Сложности: Наверное разобраться с объявлением InputStreamReader, BufferedReader - достаточно нетипичное. Комментарии: По рефакторингу: думаю вынести то что в цикле while - в отдельную функцию, возможно вынесение isr в константу. по программе: Название фруктов вводил на русском - чтобы не париться с англоязычным правописанием. Но на счетчик это не повлияло. catch не стал менять, оставил как предложил eclipse, пусть при проблемах выведет трассировку e.printStackTrace(); только добавил строку line="". |
|||||
4 | Яблоки на снегу |
2 теста |
|||
На этом уроке мы добавим в нашу программу перечисление - enum Fruit. Таким образом мы сможем изменять список допустимых фруктов, не меняя основную программу. Отчёт отправил: 791. Валерий Жданов Выполнено за 10 мин. [Показать отчёт] Научился: Работать с перечислением в java, вспомнил аналогичные реализации в c# Сложности: Ничего сложного Комментарии: Все элегантно и просто, очень понравилось. можно здесь полностью статистику вести, по видам, по повторам... |
|||||
5 | Фрукточтец |
2 теста |
|||
На этом уроке мы создадим класс FruitReader, в который перенесём алгоритм считывания начальных данных. Таким образом основная программа значительно упростится. Создайте текстовы файл "fruits.txt". На нескольких строчках напишите названия фруктов. Не забудьте в конце файла два раза нажать Enter. Разместите файл в корень проекта. Попробуйте открыть файл, указав полный путь с именем. Отчёт отправил: 791. Валерий Жданов Выполнено за 15 мин. [Показать отчёт] Научился: Узнал новое и прокачал навыки по темам: - перегруженные методы - буферы и потоки - обработка ошибок и исключений через throws Сложности: throws Комментарии: Отличный урок, отличный класс, что поменять... да немного в одном из методов while(true) напрягает... может и зря я так на этот цикл взъелся... |
|||||
6 | Фрукты из строки |
2 теста |
|||
На этом уроке мы напишем метод, который сконвертирует строчку в объект BufferedReader. Таким образом мы сможем задачу по заполнению коллекции фруктов из строки делегировать уже созданному методу Read(). Теперь наш класс FruitReader стал чересчур универсальным, и это не очень хорошо. Мы его разделим на несколько составных частей, каждая часть будет отвечать за свой инструментарий. Отчёт отправил: 791. Валерий Жданов Выполнено за 15 мин. [Показать отчёт] Научился: Понял, как создаются классы extends и что в них будет. Я это и раньше представлял, а теперь ощутил на практике Сложности: ничего Комментарии: Потом еще можно будет к интерфейсу свести - в нем заготовки свойств и методов, а в классах - реализации |
|||||
7 | Волшебные конструкторы |
2 теста |
|||
На этом уроке мы рассмотрим несколько способов, как можно оформить содержимое наследников класса FruitReader. Какие будут преимущества и недостатки при их использовании из основной программы. В конечном итоге мы реализуем всё через волшебные конструкторы наследников. В основной программе алгоритм вычислений вынесем в отдельную функцию. Избавимся от статика и удивимся, как удобно теперь можно изменять тип источника данных - нужно всего лишь менять вызов конструктора. Отчёт отправил: 791. Валерий Жданов Выполнено за 35 мин. [Показать отчёт] Научился: Наполнять наследуемые классы алгоритмами Рефакторить классы и оптимизировать код Работа с классом Program Сложности: Ничего Комментарии: Оптимальная программа получилась. Всё отлично работает, и можно запускать из Program тот класс, который нам нравится, они будут отрабатывать идентично. Доработка - пожалуй надо сделать так, чтобы из консоли мы могли задавать параметр, и в зависимости от этого параметра main вызывала нужный нам класс(чтобы main постоянно не переписывать) |
|||||
8 | Фруктовые комментарии |
2 теста |
|||
На этом уроке мы займёмся документированием созданных классов и методов. Мы будем использовать javadoc-стиль для автоматизации процесса создания документации. Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Документировать свой проект Сложности: Ничего Комментарии: Отлично сгенерировалось и без перевода UTF8 (а с перекодированием - не генерировалось ((( . Жаль ) |
|||||
9 | Новые игрушки |
1 тест |
|||
На этом уроке мы попробуем расширить диапазон игрушек в мешке Деда Мороза. Сначала попробуем это сделать через обобщение, и окажемся в тупике. В конце урока мы найдём простое правильное решение, и выясним, почему стоит делать именно так. Совет: сначала посмотрите видео полностью, не внося изменений в код. Отчёт отправил: 791. Валерий Жданов Выполнено за 20 мин. [Показать отчёт] Научился: Попробовал несколько неудачных решений для расширения списка Сложности: Ничего Комментарии: Ничего нового не придумал. Отрицательный результат - тоже результат. В качестве идей "мозгового штурма" пришли две: 1) переименовать Fruits в Gifts (подарки) и потом уже расширять список, ни о чем не парясь 2) вместо перечисления завести базу данных подарков (на SQLite) и также с ней работать |
|||||
10 | Какие ваши аргументы? |
2 теста |
|||
На этом уроке мы сделаем управление нашей программой через аргументы командной строки. В этом случае мы сможем легко изменять источники входных данных. Не нужно больше менять и компилировать исходный код. Отчёт отправил: 791. Валерий Жданов Выполнено за 20 мин. [Показать отчёт] Научился: Прокачал навыки работы с аргументами командной строки Сложности: Ничего Комментарии: Ну вот, только два урока назад я предложил использовать аргументы для управления - и пожалуйста!! все выполняется! спасибо Игромистру! |
|||||
11 | Рефакторинг аргументов |
1 тест |
|||
На этом уроке мы перенесём проверку аргументов командной строки в отдельную функцию. Попутно исправим некоторые недочёты и ошибки. Обоснуйте своими словами, почему мы решили не создавать отдельный класс для проверки аргументов? Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Рефакторить main Сложности: Найти ошибку (а также не запутаться в if... else) Комментарии: Была проблема - не указал в одном месте args.length. Исправил - всё стало отлично |
|||||
12 | Пошаговый проход |
1 тест |
|||
На этом уроке мы вынесем проверку аргументов в отдельную функцию. После этого займёмся исправлением ошибки, которая возникает при отсутствии \n в конце строк. Чтобы проще было найти ошибку, и улучшить понимание струкутры программы в целом, мы выполним пошагово всю программу, посмотрим на содержимое переменных и доберёмся до сути той ошибки. Отчёт отправил: 791. Валерий Жданов Выполнено за 20 мин. [Показать отчёт] Научился: Работать в eclipse с отладчиком Сложности: Привести все окна в нормальный вид - eclipse при запуске дебага раскидал все так, что я даже испугался Комментарии: Получилась хорошая практика работы с брекпойнтами в еще одной IDE |
|||||
13 | Массивная строка |
2 теста |
|||
На этом уроке мы создадим класс FruitReaderStringArray, в который вынесем алгоритм формирования строчки из массива. Урок длинный - очень много подробных объяснений - что мы делаем, почему мы делаем именно так. Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Создавать свою сериализацию Сложности: Ничего Комментарии: Отличное решение и отличная переделка в массив |
|||||
14 | Логические задачи |
1 тест |
|||
На этом уроке мы начнём наращивать функционал нашего проекта. Создадим класс Logic, в котором реализуем несколько методов. Каждый метод будет решать одну задачу по списку фруктов. Отчёт отправил: 791. Валерий Жданов Выполнено за 34 мин. [Показать отчёт] Научился: Прокачал навыки по созданию классов Сложности: Ничего Комментарии: Всё получилось. Вопрос - а что будет, если количество фруктов-подарков будет одинаково (ну допустим по одному каждый)? Ответ: программа выведет первый фрукт (поскольку его сразу запишет в переменную max и fruitmax. Реплика: воистину, кто первый, того и тапки))) p.s. но в реальных проектах я обязательно это поправлю))) |
|||||
15 | Размер множества |
2 теста |
|||
На этом уроке мы продолжим работу над классом Logic. Напишем два разных способа решения одной задачи: Сколько разных фруктов в мешке у Деда Мороза? Самостоятельное задание: сделать пошаговое выполнение новых функций. Отчёт отправил: 791. Валерий Жданов Выполнено за 30 мин. [Показать отчёт] Научился: Работать с HashSet Сложности: Расчеты сложности (не совсем понял, почему 100->1000 в одном случае, и 100-> 200 в другом) Комментарии: Всё работает, правда хотелось бы про HashSet поподробнее узнать. Ну возможно это в продолжении этого курса или в отдельных видео будет |
|||||
16 | Список задач |
1 тест |
|||
На этом уроке мы составим список всех решаемых задач. У нас будет функция, которая запускает все задачи друг за другом. Также мы создадим ещё одно перечисление из всех возможных задач. Отчёт отправил: 791. Валерий Жданов Выполнено за 31 мин. [Показать отчёт] Научился: Работать с множеством-перечислением Сложности: Ничего Комментарии: Отличное изменение. |
|||||
17 | Форматы JSON и XML |
1 тест |
|||
На этом уроке мы переделаем класс Logic, чтобы он мог возвращать результаты расчётов в совершенно разных форматах - RAW, JSON, XML. Отчёт отправил: 791. Валерий Жданов Выполнено за 20 мин. [Показать отчёт] Научился: Создавать XML и JSON результаты Сложности: Ничего Комментарии: В Logic вроде всё неплохо, единственное - XML - начало и имя тега я бы вынес в передаваемые параметры. Веди это мы можем не только для Tasks применять |
|||||
18 | Профессиональный Интерфейс |
2 теста |
|||
На этом уроке мы создадим интерфейс Convertable. Он поможет нам выделить из класса Logic задачи по конвертации. Отчёт отправил: 791. Валерий Жданов Выполнено за 16 мин. [Показать отчёт] Научился: Включать в проект интерфейс Сложности: Абстрагироваться от воспоминаний юности (тогда я пытался писать роман, и в нем отрицательный персонаж имел прозвище Интерфейс) Комментарии: Интеграция интерфейса и HashMap в проект прошла успешно |
|||||
19 | Коллекция HashMap |
2 теста |
|||
На этом уроке мы создадим в классе Logic метод, который запишет результаты вычислений в словарь - то есть в коллекцию HashMap Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: работать с HaspMap - коллекцией Сложности: Успевать за мыслью Игромистра Комментарии: Отличный урок, достаточно сложно было понять общую мысль, но в результате получилось всё легче и удобнее |
|||||
20 | Конвертабельные классы |
3 теста |
|||
На этом уроке мы сделаем три новых класса, каждый из которых реализует интерфейс Convertable. В каждом классе будет всего одна функция - Convert(), которая из словаря создаёт нужную структуру данных. Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Практике работы с классами под Интерфейсом Сложности: Ничего Комментарии: Интерфейс - это "надпрограмма", рабочий проект основных узлов и элементов программы. Под ней классы начинают работать так, как нам надо. Очень интересный и живой урок. Во втором скриншоте я показал, как сделать класс implements <Interface> средствами Eclipse (может понадобится). Система сразу же создала заглушку public String Convert(HashMap<String, String> map) |
|||||
21 | Параметр Формата |
1 тест |
|||
На этом уроке мы обсудим возможность управления форматом вывода результата нашей программой через передачу параметра командной строки: java Program [-format json|xml|raw] Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Прокачал старые навыки, получил практическое применение знаний, полученных на прошлом уроке, а также вспомнил про args, и освоил еще одну ветвь управления консольной java-программой через систему аргументов Сложности: Ничего Комментарии: Что в коде не нравится - всё же обработчики args не совсем универсальны, много дописывать все время приходится. Хотелось бы какой-нибудь универсальный класс для работы с ними, в который только добавлять и добавлять обработчики и получать результат на выходе (своеобразный API) |
|||||
22 | Параметрический Созидатель |
3 теста |
|||
На этом уроке мы так и не реализуем функцию parseArgsConvert(). Вместо этого мы организуем более общий подход к анализу аргументов. Разделим список всех аргументов на составные части по их назначению. И подготовим функцию create(), которая будет созидать каждую часть. Отчёт отправил: 791. Валерий Жданов Выполнено за 20 мин. [Показать отчёт] Научился: Навыков новых нет, но всласть порефакторил и вспомнил ArrayList<String> Сложности: Всё легко Комментарии: Отличный урок, задали форму, теперь дальше будем наполнять содержанием |
|||||
23 | Создатель |
2 теста |
|||
На этом уроке напишем функцию create.
Отчёт отправил: 791. Валерий Жданов Выполнено за 21 мин. [Показать отчёт] Научился: Новизны нет, но сюжет динамичный, процесс создания функций затягивает круче ВарКрафта! Сложности: Запутался в пошаговой отладке Комментарии: Отличный урок, но ошибку пока не нашел |
|||||
24 | Как шагает Дед Мороз |
1 тест |
|||
На этом уроке мы пошагово выполним всю программу, увидим, как параметры командной строки разделяются на несколько списков и поочерёдно обрабатываются. Отчёт отправил: 791. Валерий Жданов Выполнено за 20 мин. [Показать отчёт] Научился: Проработал пошаговую отладку в eclipse Сложности: Ничего Комментарии: Необходимый навык для разработчика. Всё видно, как отрабатывает программа. очень радовала такая возможность в Visual Studio, теперь радует и здесь. Шаги Деда Мороза удались! |
|||||
25 | Конвертабельность |
2 теста |
|||
На этом уроке мы наконец-таки проанализируем параметры командной строки и создадим нужный экземпляр конверт. Отчёт отправил: 791. Валерий Жданов Выполнено за 15 мин. [Показать отчёт] Научился: Порефакторил, прокачал знания по оформлению кода Сложности: Ничего Комментарии: Отлично вывелось в консоли всё |
|||||
26 | Фабрика параметров |
1 тест |
|||
На этом уроке мы наконец-таки закончим создание основной части программы. Мы создадим класс ParamFabric, в который перенесём весь парсинг аргументов. Останется только оформить документацию - написать комментарии. Отчёт отправил: 791. Валерий Жданов Выполнено за 30 мин. [Показать отчёт] Научился: Разобрался, как появился шаблон проектирования Fabric. Сложности: Отловить свои ошибки (пошагово ловил) Комментарии: Отличный урок, спасибо. Новый класс начал фабричить, а программа - функционировать еще лучше. |
|||||
27 | Буфера в стрингах |
2 теста |
|||
На этом уроке мы пройдёмся по всему коду программы и сделаем небольшие улучшения кода. В основном мы будем заменять String на StringBuffer в тех местах, где происходит итеративное формирование строк. Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Прокачал старые навыки Сложности: Ничего Комментарии: Отличный урок, отлично порефакторили |
|||||
28 | Документация Деда Мороза |
1 тест |
|||
На этом уроке мы опять пройдёмся по всему проекту и допишем документируемые комментарии. Затем создадим HTML-документацию используя утилиту JavaDoc. Отчёт отправил: 791. Валерий Жданов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: прокачал навыки документирования Сложности: Не запутаться в параметрах кодировки Комментарии: Всё отлично получилось, документация - дело очень нужное |
|||||
29 | Задедомороженный Архив |
1 тест |
|||
На этом уроке мы запакуем весь архив в один файл, используя утилиту jar. В таком виде удобно копировать и распространять программу - вместо огромного количества файлов - всего один архив. Отчёт отправил: 791. Валерий Жданов Выполнено за 40 мин. [Показать отчёт] Научился: Созданию jar-файла Сложности: Ничего Комментарии: Спасибо огромное за урок. я создавал jar-файлы в предыдущих уроках этого курса средствами eclipse, но консолью тоже очень удобно и очень нужно. Что еще доработать в этой программе... да я даже не знаю... в принципе в обучении ООП на java мы (кто как и я дошел до этого урока и выполнил его) уже готовы остановить этот проект и использовать его как базу, как стартовую площадку для новых проектов, которые реализуют наши идеи такими мощными средствами. А средства, рассмотренные в этих уроках действительно мощные |
|||||
30 | Комплименты Деду Морозу |
без видео 1 тест |
|||
Поздравляю с завершением Объектно-Ориентированного-Проекта на примере решения задачи про Деда Мороза. Пожалуйста, оставь отзыв об этом видеокурсе. Что тебе понравилось, что не понравилось, что можно было бы сделать лучше, в свободной новогодней форме. Отчёт отправил: 791. Валерий Жданов Выполнено за 55 мин. [Показать отчёт] Научился: Прокачал навыки благодарить Деда Мороза и Игромистра) Сложности: ничего Комментарии: Курс ООФрукты... после таких навороченных вещей, как Сокобан, Морской Флот, Шахматная и Саперная саги, стартапа по Java этот курс поначалу показался мне сначала чем-то ... ну так скажем легким... ну достает Дед Мороз фрукты, ну считается их количество, максимумы тем или иным образом находятся, ну еще enum рассмотрели... вроде бы как такое мы часто проделывали на консольных заданиях и олимпиадах. Даже ООП поначалу рассматривалось как что-то пройденное (повторение -мать учения). Но с углублением в курс, рассмотрением все более и более интересных структур началось создание алгоритмов на совершенно иных принципах, нежели я знал и привык делать раньше (использовались списки, HashMap и т.д.), создавались классы и структуры анализа параметров, конвертирование в различные форматы. Кроме того отрабатывались навыки документирования кода, рефакторинга, создание jar-файлов. Всё это лично для меня стало новой вехой, новой эрой работы на java. Огромное спасибо Игромистру за этот курс и за мотивацию создания новых программ и комплексов с использованием изученных здесь навыков ООП. В скриншоте от меня - благодарность Игромистру средствами программы DedMoroz 99 раз - 33 в формате JSON, 33 - в формате XML и 33 просто RAW |
|||||
Итого: 30 видеоуроков |
7 час. 04 мин. 49 тестов |
15 чел. | |||
Финалисты: Новопашин Владимир, Иван Воронин, Алексей В., Tekashnik, Сергей Соколов, Константин, Валерий Жданов, Станислав, Andrej Petrunev, Chip, Dmitry Sinitsin, Anatoli, Yefim, Ksandr, Tom . |