# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Подготовка - Фрукты по списку |
2 теста |
|||
На этом уроке мы познакомимся с перечислением Enum. Фактически - это набор именных констант в одной упаковке. Перечисления в языке Java представляют из себя класс, который предоставляет много интересных возможностей. Преимущества использования перечислений: + Все константы собраны под одним именем. + Можно проверить наличие строчного значения в списке. + Можно в цикле перебрать все константы. + Оператор выбора switch на основе перечисления исключает ошибки. + Можно использовать как константную справочную базу данных. Самостоятельное задание: Создайте перечисление по дням недели - от MONDAY до SUNDAY. Введите с клавиатуры строку и проверьте, является ли она днём недели. Выведите название введённого дня недели на русском языке (switch-case). Выведите на экран список всех дней недели, кроме введённого. Отчёт отправил: 20122. Andrei Выполнено за 43 мин. [Показать отчёт] Научился: Работе с Enum |
|||||
2 | Подготовка - База фруктов |
1 тест |
|||
На этом уроке мы увидим интересные возможности перечислений enum в языке Java. Оказывается каждое слово - это не просто константное числовое значение, а целый экземпляр класса, в котором можно размещать справочную информацию. Получается целая константная база данных - справочник! Рекомендуемая литература: http://interviewinit.com/2014/04/java-enumerations-особенности/ 15 вопросов на собеседование относительно Enum, с ответами: http://info.javarush.ru/translation/2015/10/13/15-вопросов-для-собеседования-разработчиков-относительно-Enum-в-Джаве-с-ответами-.html Самостоятельное задание Отчёт отправил: 20122. Andrei Выполнено за 10 час. 57 мин. [Показать отчёт] Научился: Что Enum это по сути класс в Java |
|||||
3 |
![]() |
2 теста |
|||
Мы начинаем создание Java-проекта на основе задачи про Деда Мороза, который дарил детям фрукты. При создании проекта вы сможете проникнуться духом Явы и прочуствовать во всей красе суть объектно-ориентированного подхода. Отчёт отправил: 20122. Andrei Выполнено за 28 мин. [Показать отчёт] Научился: Вводу данных через BufferReader. Работе с коллекцией. Чет никаких идей по рефакторингу пока нет. Может вынести добаление фруктов в отдельную функию. Ну и добавить класс фруктов, а не пихать стринги в коллекцию. А так больше идей пока не приходит в голову. |
|||||
4 | Яблоки на снегу |
2 теста |
|||
На этом уроке мы добавим в нашу программу перечисление - enum Fruit. Таким образом мы сможем изменять список допустимых фруктов, не меняя основную программу. Отчёт отправил: 20122. Andrei Выполнено за 22 мин. [Показать отчёт] Научился: Добавлять Enum в ArrayList |
|||||
5 | Фрукточтец |
2 теста |
|||
На этом уроке мы создадим класс FruitReader, в который перенесём алгоритм считывания начальных данных. Таким образом основная программа значительно упростится. Создайте текстовы файл "fruits.txt". На нескольких строчках напишите названия фруктов. Не забудьте в конце файла два раза нажать Enter. Разместите файл в корень проекта. Попробуйте открыть файл, указав полный путь с именем. Отчёт отправил: 20122. Andrei Выполнено за 24 мин. [Показать отчёт] Научился: Как выносить функционал в отдельный класс и как использовать метод с BufferedReader для считывания с клавиатуры и из файла. В этом классе не вижу никаких проблем. Может только если конструктора не хватает. Но наверное там есть какие еще проблемы которых я пока не вижу. |
|||||
6 | Фрукты из строки |
2 теста |
|||
На этом уроке мы напишем метод, который сконвертирует строчку в объект BufferedReader. Таким образом мы сможем задачу по заполнению коллекции фруктов из строки делегировать уже созданному методу Read(). Теперь наш класс FruitReader стал чересчур универсальным, и это не очень хорошо. Мы его разделим на несколько составных частей, каждая часть будет отвечать за свой инструментарий. Отчёт отправил: 20122. Andrei Выполнено за 38 мин. [Показать отчёт] Научился: Разделил класс не через наследование, а решил попробывать через композицию. Об этом много говорят в сети, что типа лучше делать через композицию. Ни разу не делал. Получилось |
|||||
7 | Волшебные конструкторы |
2 теста |
|||
На этом уроке мы рассмотрим несколько способов, как можно оформить содержимое наследников класса FruitReader. Какие будут преимущества и недостатки при их использовании из основной программы. В конечном итоге мы реализуем всё через волшебные конструкторы наследников. В основной программе алгоритм вычислений вынесем в отдельную функцию. Избавимся от статика и удивимся, как удобно теперь можно изменять тип источника данных - нужно всего лишь менять вызов конструктора. Отчёт отправил: 20122. Andrei Выполнено за 50 мин. [Показать отчёт] Научился: То что было в уроке понятно. Решил продолжить улучшение композиции и переместил FruitReader в новый класс FruitBuffered. А во FruitReader сделал аналог паттерна Фасад который обьединяет все эти классы в конструкторе и заведует этим оркестром. На мой взгляд получилось интересно, никакого наследования только композиция и удобно использовать из класса Program |
|||||
8 | Фруктовые комментарии |
2 теста |
|||
На этом уроке мы займёмся документированием созданных классов и методов. Мы будем использовать javadoc-стиль для автоматизации процесса создания документации. Отчёт отправил: 20122. Andrei Выполнено за 7 час. 20 мин. [Показать отчёт] Научился: пользоваться javadoc |
|||||
9 | Новые игрушки |
1 тест |
|||
На этом уроке мы попробуем расширить диапазон игрушек в мешке Деда Мороза. Сначала попробуем это сделать через обобщение, и окажемся в тупике. В конце урока мы найдём простое правильное решение, и выясним, почему стоит делать именно так. Совет: сначала посмотрите видео полностью, не внося изменений в код. Отчёт отправил: 20122. Andrei Выполнено за 4 час. 42 мин. [Показать отчёт] Научился: Понял что при использовании enum нельзя добавлять элементы динамически. Свой вариант реализации есть только один, это совсем отказаться от enum. Использовать класс игрушек, возможно даже паттерн фабрика если игрушек будет много разных. |
|||||
10 | Какие ваши аргументы? |
2 теста |
|||
На этом уроке мы сделаем управление нашей программой через аргументы командной строки. В этом случае мы сможем легко изменять источники входных данных. Не нужно больше менять и компилировать исходный код. Отчёт отправил: 20122. Andrei Выполнено за 12 час. 28 мин. [Показать отчёт] Научился: Как обрабатывать аргументы. Кстати при использовании фасада появилась еще одна плюшка. Нет необходимости обрабатывать if(fr == null) {//error} |
|||||
11 | Рефакторинг аргументов |
1 тест |
|||
На этом уроке мы перенесём проверку аргументов командной строки в отдельную функцию. Попутно исправим некоторые недочёты и ошибки. Обоснуйте своими словами, почему мы решили не создавать отдельный класс для проверки аргументов? Отчёт отправил: 20122. Andrei Выполнено за 33 мин. [Показать отчёт] Научился: Не представляю как могут сработать несколько if'ов. Если в первом (args[0].equals("-scan") == true), то как он в тоже самое время может быть в другом if-стейтмент (args[0].equals("-file") == true)? По-этому оставил просто if без else. В случае использования фасада достаточно было 2 клика, что бы вынести проверку аргументов в отдельный метод. Не надо было c fr мучаться. Все было уже инкапсулировано. Удобно. |
|||||
12 | Пошаговый проход |
1 тест |
|||
На этом уроке мы вынесем проверку аргументов в отдельную функцию. После этого займёмся исправлением ошибки, которая возникает при отсутствии \n в конце строк. Чтобы проще было найти ошибку, и улучшить понимание струкутры программы в целом, мы выполним пошагово всю программу, посмотрим на содержимое переменных и доберёмся до сути той ошибки. Отчёт отправил: 20122. Andrei Выполнено за 1 час. 47 мин. [Показать отчёт] Научился: Как делать debug |
|||||
13 | Массивная строка |
2 теста |
|||
На этом уроке мы создадим класс FruitReaderStringArray, в который вынесем алгоритм формирования строчки из массива. Урок длинный - очень много подробных объяснений - что мы делаем, почему мы делаем именно так. Отчёт отправил: 20122. Andrei Выполнено за 30 мин. [Показать отчёт] Научился: Ужас. Теперь видно во всей красе почему предлагают избегать наследования. Отличный урок! На основе фасада и композиции этот класс FruitReaderStringArray прикручивается за 5 сек. к программе. И все так же хорошо инкапсулированно. И никакой головной боли. |
|||||
14 | Логические задачи |
1 тест |
|||
На этом уроке мы начнём наращивать функционал нашего проекта. Создадим класс Logic, в котором реализуем несколько методов. Каждый метод будет решать одну задачу по списку фруктов. Отчёт отправил: 20122. Andrei Выполнено за 4 час. 31 мин. [Показать отчёт] Научился: Как делать логику |
|||||
15 | Размер множества |
2 теста |
|||
На этом уроке мы продолжим работу над классом Logic. Напишем два разных способа решения одной задачи: Сколько разных фруктов в мешке у Деда Мороза? Самостоятельное задание: сделать пошаговое выполнение новых функций. Отчёт отправил: 20122. Andrei Выполнено за 20 мин. [Показать отчёт] Научился: Подсчету всех видов фруктов |
|||||
16 | Список задач |
1 тест |
|||
На этом уроке мы составим список всех решаемых задач. У нас будет функция, которая запускает все задачи друг за другом. Также мы создадим ещё одно перечисление из всех возможных задач. Отчёт отправил: 20122. Andrei Выполнено за 3 час. 21 мин. [Показать отчёт] Научился: Добавлению задач и их обработке |
|||||
17 | Форматы JSON и XML |
1 тест |
|||
На этом уроке мы переделаем класс Logic, чтобы он мог возвращать результаты расчётов в совершенно разных форматах - RAW, JSON, XML. Отчёт отправил: 20122. Andrei Выполнено за 13 час. 2 мин. [Показать отчёт] Научился: Реализовывать вывод JSON и XML. На вопрос что не нравиться в классе Logic, тяжело ответить, пока не вижу что конкретно плохо. |
|||||
18 | Профессиональный Интерфейс |
2 теста |
|||
На этом уроке мы создадим интерфейс Convertable. Он поможет нам выделить из класса Logic задачи по конвертации. Отчёт отправил: 20122. Andrei Выполнено за 16 мин. [Показать отчёт] Научился: Созданию и реализации интерфейса Convertable |
|||||
19 | Коллекция HashMap |
2 теста |
|||
На этом уроке мы создадим в классе Logic метод, который запишет результаты вычислений в словарь - то есть в коллекцию HashMap Отчёт отправил: 20122. Andrei Выполнено за 11 мин. [Показать отчёт] Научился: Формированию словаря и написанию метода конвертации. |
|||||
20 | Конвертабельные классы |
3 теста |
|||
На этом уроке мы сделаем три новых класса, каждый из которых реализует интерфейс Convertable. В каждом классе будет всего одна функция - Convert(), которая из словаря создаёт нужную структуру данных. Отчёт отправил: 20122. Andrei Выполнено за 21 мин. [Показать отчёт] Научился: Реализации интерфейса Convertable. |
|||||
21 | Параметр Формата |
1 тест |
|||
На этом уроке мы обсудим возможность управления форматом вывода результата нашей программой через передачу параметра командной строки: java Program [-format json|xml|raw] Отчёт отправил: 20122. Andrei Выполнено за 57 мин. [Показать отчёт] Научился: Понял как парсить аргументы более сложным вариантом. Реализовал парсинг аргументов независимо от порядка их написания, т.е. можно написать -format xml -data FRUIT1 FRUIT2 .. или наоборот -data FRUIT 1 FRUIT2 FRUIT3 -format xml . И то и то отработает корректно. |
|||||
22 | Параметрический Созидатель |
3 теста |
|||
На этом уроке мы так и не реализуем функцию parseArgsConvert(). Вместо этого мы организуем более общий подход к анализу аргументов. Разделим список всех аргументов на составные части по их назначению. И подготовим функцию create(), которая будет созидать каждую часть. Отчёт отправил: 20122. Andrei Выполнено за 2 час. 40 мин. [Показать отчёт] Научился: Научился интересному способу парсить аргументы. |
|||||
23 | Создатель |
2 теста |
|||
На этом уроке напишем функцию create.
Отчёт отправил: 20122. Andrei Выполнено за 16 мин. [Показать отчёт] Научился: Как можно написать функцию create. Пока что реализовал это по своему. |
|||||
24 | Как шагает Дед Мороз |
1 тест |
|||
На этом уроке мы пошагово выполним всю программу, увидим, как параметры командной строки разделяются на несколько списков и поочерёдно обрабатываются. Отчёт отправил: 20122. Andrei Выполнено за 12 мин. [Показать отчёт] Научился: Пошаговому выполнению программы |
|||||
25 | Конвертабельность |
2 теста |
|||
На этом уроке мы наконец-таки проанализируем параметры командной строки и создадим нужный экземпляр конверт. Отчёт отправил: 20122. Andrei Выполнено за 9 мин. [Показать отчёт] Научился: Понял как сделано в уроке. Проверил работу программы. |
|||||
26 | Фабрика параметров |
1 тест |
|||
На этом уроке мы наконец-таки закончим создание основной части программы. Мы создадим класс ParamFabric, в который перенесём весь парсинг аргументов. Останется только оформить документацию - написать комментарии. Отчёт отправил: 20122. Andrei Выполнено за 15 мин. [Показать отчёт] Научился: Вынес функционал в отдельный класс фабрику |
|||||
27 | Буфера в стрингах |
2 теста |
|||
На этом уроке мы пройдёмся по всему коду программы и сделаем небольшие улучшения кода. В основном мы будем заменять String на StringBuffer в тех местах, где происходит итеративное формирование строк. Отчёт отправил: 20122. Andrei Выполнено за 9 час. 10 мин. [Показать отчёт] Научился: Делать рефакторинг имен и использовать StringBuilder |
|||||
28 | Документация Деда Мороза |
1 тест |
|||
На этом уроке мы опять пройдёмся по всему проекту и допишем документируемые комментарии. Затем создадим HTML-документацию используя утилиту JavaDoc. Отчёт отправил: 20122. Andrei Выполнено за 27 мин. [Показать отчёт] Научился: составлять документацию |
|||||
29 | Задедомороженный Архив |
1 тест |
|||
На этом уроке мы запакуем весь архив в один файл, используя утилиту jar. В таком виде удобно копировать и распространять программу - вместо огромного количества файлов - всего один архив. Отчёт отправил: 20122. Andrei Выполнено за 20 мин. [Показать отчёт] Научился: Созданию jar архива |
|||||
30 | Комплименты Деду Морозу |
без видео 1 тест |
|||
Поздравляю с завершением Объектно-Ориентированного-Проекта на примере решения задачи про Деда Мороза. Пожалуйста, оставь отзыв об этом видеокурсе. Что тебе понравилось, что не понравилось, что можно было бы сделать лучше, в свободной новогодней форме. |
|||||
Итого: 30 видеоуроков |
7 час. 04 мин. 49 тестов |
15 чел. | |||
Финалисты: Новопашин Владимир, Иван Воронин, Алексей В., Tekashnik, Сергей Соколов, Константин, Валерий Жданов, Станислав, Andrej Petrunev, Chip, Dmitry Sinitsin, Anatoli, Yefim, Ksandr, Tom . |