# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Подготовка - Фрукты по списку |
2 теста |
|||
На этом уроке мы познакомимся с перечислением Enum. Фактически - это набор именных констант в одной упаковке. Перечисления в языке Java представляют из себя класс, который предоставляет много интересных возможностей. Преимущества использования перечислений: + Все константы собраны под одним именем. + Можно проверить наличие строчного значения в списке. + Можно в цикле перебрать все константы. + Оператор выбора switch на основе перечисления исключает ошибки. + Можно использовать как константную справочную базу данных. Самостоятельное задание: Создайте перечисление по дням недели - от MONDAY до SUNDAY. Введите с клавиатуры строку и проверьте, является ли она днём недели. Выведите название введённого дня недели на русском языке (switch-case). Выведите на экран список всех дней недели, кроме введённого. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 7 час. 0 мин. [Показать отчёт] Научился: 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 Самостоятельное задание Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 13 мин. [Показать отчёт] Научился: элементы в перечислении эквивалентны экземплярам класса с присвоенными по порядку целочисленными значениями Все элементы в перечислении enum являются public static final int |
|||||
3 |
![]() |
2 теста |
|||
Мы начинаем создание Java-проекта на основе задачи про Деда Мороза, который дарил детям фрукты. При создании проекта вы сможете проникнуться духом Явы и прочуствовать во всей красе суть объектно-ориентированного подхода. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 28 мин. [Показать отчёт] Научился: само собой напрашивается выделение в отдельную функцию или метод строки про инициализацию буфферизированного ридера Вывод результата тоже в отдельный блок просится |
|||||
4 | Яблоки на снегу |
2 теста |
|||
На этом уроке мы добавим в нашу программу перечисление - enum Fruit. Таким образом мы сможем изменять список допустимых фруктов, не меняя основную программу. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 34 мин. [Показать отчёт] Научился: При переносе строк начинай новую строку с логического оператора и смещай перенос на две табуляции Мораль урока - функция (метод) должна решать одну простую задачу и не надо валить весь функционал в одну кучу Арбуз == watermelon Сложности: Имея список фруктов можно составить прейскурант к примеру |
|||||
5 | Фрукточтец |
2 теста |
|||
На этом уроке мы создадим класс FruitReader, в который перенесём алгоритм считывания начальных данных. Таким образом основная программа значительно упростится. Создайте текстовы файл "fruits.txt". На нескольких строчках напишите названия фруктов. Не забудьте в конце файла два раза нажать Enter. Разместите файл в корень проекта. Попробуйте открыть файл, указав полный путь с именем. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 38 мин. [Показать отчёт] Научился: для считывания ввода с клавиатуры и из файла используются перегруженные методы принимающие на входе разные варианты источника данных, НО возвращающие одинаковый тип информации |
|||||
6 | Фрукты из строки |
2 теста |
|||
На этом уроке мы напишем метод, который сконвертирует строчку в объект BufferedReader. Таким образом мы сможем задачу по заполнению коллекции фруктов из строки делегировать уже созданному методу Read(). Теперь наш класс FruitReader стал чересчур универсальным, и это не очень хорошо. Мы его разделим на несколько составных частей, каждая часть будет отвечать за свой инструментарий. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 32 мин. [Показать отчёт] Научился: перегруженные методы имеют одинаковые названия и ОБЯЗАТЕЛЬНО ОТЛИЧАЮТСЯ типами или количеством принимаемых параметров в сигнатуре метода |
|||||
7 | Волшебные конструкторы |
2 теста |
|||
На этом уроке мы рассмотрим несколько способов, как можно оформить содержимое наследников класса FruitReader. Какие будут преимущества и недостатки при их использовании из основной программы. В конечном итоге мы реализуем всё через волшебные конструкторы наследников. В основной программе алгоритм вычислений вынесем в отдельную функцию. Избавимся от статика и удивимся, как удобно теперь можно изменять тип источника данных - нужно всего лишь менять вызов конструктора. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 33 мин. [Показать отчёт] Научился: ключевое слово final в сигнатуре метода не позволяет наследникам вносить изменения в алгоритм работы кода этого метода |
|||||
8 | Фруктовые комментарии |
2 теста |
|||
На этом уроке мы займёмся документированием созданных классов и методов. Мы будем использовать javadoc-стиль для автоматизации процесса создания документации. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 5 час. 2 мин. [Показать отчёт] Научился: комментарии пиши над описываемым объектом (строкой выше) начинай с /** и заканчивай */ |
|||||
9 | Новые игрушки |
1 тест |
|||
На этом уроке мы попробуем расширить диапазон игрушек в мешке Деда Мороза. Сначала попробуем это сделать через обобщение, и окажемся в тупике. В конце урока мы найдём простое правильное решение, и выясним, почему стоит делать именно так. Совет: сначала посмотрите видео полностью, не внося изменений в код. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 20 мин. [Показать отчёт] Научился: поскольку класс enum является сборником констант, не предполагаемых для корректировки в процессе работы программы, его дублирование и переключение между дубликатами нецелесообразно Верным решением при необходимости изменений, является помещение всех констант в едином перечислении enum |
|||||
10 | Какие ваши аргументы? |
2 теста |
|||
На этом уроке мы сделаем управление нашей программой через аргументы командной строки. В этом случае мы сможем легко изменять источники входных данных. Не нужно больше менять и компилировать исходный код. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 10 час. 41 мин. [Показать отчёт] Научился: аргументы из сигнатуры метода не для красоты пишутся - они могут быть использованы при выборе ввода данных для обработки программой |
|||||
11 | Рефакторинг аргументов |
1 тест |
|||
На этом уроке мы перенесём проверку аргументов командной строки в отдельную функцию. Попутно исправим некоторые недочёты и ошибки. Обоснуйте своими словами, почему мы решили не создавать отдельный класс для проверки аргументов? Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 44 мин. [Показать отчёт] Научился: Проверка аргументов не относится к основной задаче программы и является лишь реализацией ветвления варианта ввода данных Отдельного класса эта часть кода недостойна Если бы речь шла о вариантах подсчета фруктов (основной функционал программы) - можно было бы организовать дополнительно класс |
|||||
12 | Пошаговый проход |
1 тест |
|||
На этом уроке мы вынесем проверку аргументов в отдельную функцию. После этого займёмся исправлением ошибки, которая возникает при отсутствии \n в конце строк. Чтобы проще было найти ошибку, и улучшить понимание струкутры программы в целом, мы выполним пошагово всю программу, посмотрим на содержимое переменных и доберёмся до сути той ошибки. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 3 час. 4 мин. [Показать отчёт] Научился: если при считывании из буферизированного читателя добавить проверку на исключение при значении null или пусто - то при одном аргументе (одно яблоко к примеру) программа не ломается |
|||||
13 | Массивная строка |
2 теста |
|||
На этом уроке мы создадим класс FruitReaderStringArray, в который вынесем алгоритм формирования строчки из массива. Урок длинный - очень много подробных объяснений - что мы делаем, почему мы делаем именно так. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 58 мин. [Показать отчёт] Научился: если прога матерится на отсутствие экземпляра - первое твое решение - пиши в сигнатуру СТАТИК - он не требует экземпляра, а уже дальше чеши репку и думай над оптимизацией |
|||||
14 | Логические задачи |
1 тест |
|||
На этом уроке мы начнём наращивать функционал нашего проекта. Создадим класс Logic, в котором реализуем несколько методов. Каждый метод будет решать одну задачу по списку фруктов. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 39 мин. [Показать отчёт] Научился: циклом фор-ич перебирается список и в переменную макс забивается количество, а в переменную фрутМакс - имя наиболее часто встречаемого фрукта. Если не путаться в синтаксисе - ничего сложного ) |
|||||
15 | Размер множества |
2 теста |
|||
На этом уроке мы продолжим работу над классом Logic. Напишем два разных способа решения одной задачи: Сколько разных фруктов в мешке у Деда Мороза? Самостоятельное задание: сделать пошаговое выполнение новых функций. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 5 час. 22 мин. [Показать отчёт] Научился: hashSet хорош тем, что при повторе добавления идентичного элемента - это добавление игнорируется. Помню из прошлых курсов. Тут пригодилось. Различающиеся элементы хешсет принимает для добавления, если такой уже есть - второго в хешсете не появится. Железное правило. |
|||||
16 | Список задач |
1 тест |
|||
На этом уроке мы составим список всех решаемых задач. У нас будет функция, которая запускает все задачи друг за другом. Также мы создадим ещё одно перечисление из всех возможных задач. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 33 мин. [Показать отчёт] Научился: перенесли функционал по подсчетам в класс Logic |
|||||
17 | Форматы JSON и XML |
1 тест |
|||
На этом уроке мы переделаем класс Logic, чтобы он мог возвращать результаты расчётов в совершенно разных форматах - RAW, JSON, XML. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 4 мин. [Показать отчёт] Научился: парсить XML, RAW, JSON успешно. Из рефакторинга идея отделить каждому парсеру по классу, чтобы заниматься допиливанием каждого формата в отдельном его классе |
|||||
18 | Профессиональный Интерфейс |
2 теста |
|||
На этом уроке мы создадим интерфейс Convertable. Он поможет нам выделить из класса Logic задачи по конвертации. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 23 мин. [Показать отчёт] Научился: интерфейс - класс перечисления возможностей БЕЗ их реализации внутри этого класса Множественное наследование в Java доступно лишь через интерфейс Называя интерфейс называй его с окончанием able Все методы в классе интерфейса ПУБЛИЧНЫЕ Дальше в конвЕртабл переедут методы перевода результата в иксемел, джейсон и роу, как я догадываюсь ) |
|||||
19 | Коллекция HashMap |
2 теста |
|||
На этом уроке мы создадим в классе Logic метод, который запишет результаты вычислений в словарь - то есть в коллекцию HashMap Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 31 мин. [Показать отчёт] Научился: интерфейс - класс без реализации функционала преследующий своей целью описание возможностей Создали хешмап - вывод идет в случайном порядке |
|||||
20 | Конвертабельные классы |
3 теста |
|||
На этом уроке мы сделаем три новых класса, каждый из которых реализует интерфейс Convertable. В каждом классе будет всего одна функция - Convert(), которая из словаря создаёт нужную структуру данных. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 47 мин. [Показать отчёт] Научился: раскидали функционал конвертабл по классам, удалив методы в лоджике Наследование из лоджика также удалили, ибо оно там не нужно - наследование переехало по новосозданным классам Неудобство в сохранении на данный момент правки выбора формата вывода прямо в коде - предполагаю, что это будет выделено в возможность получения аргументом из командной строки |
|||||
21 | Параметр Формата |
1 тест |
|||
На этом уроке мы обсудим возможность управления форматом вывода результата нашей программой через передачу параметра командной строки: java Program [-format json|xml|raw] Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 5 час. 6 мин. [Показать отчёт] Научился: добавили второй аргумент при запуске программы для выбора формата вывода результата работы программы Теперь формат будет выбираться не залезая в код программы с ее перекомпиляцией, а простым указанием второго аргумента при запуске программки ) NOTA BENE! В квадратных скобках указывай НЕОБЯЗАТЕЛЬНЫЙ аргумент |
|||||
22 | Параметрический Созидатель |
3 теста |
|||
На этом уроке мы так и не реализуем функцию parseArgsConvert(). Вместо этого мы организуем более общий подход к анализу аргументов. Разделим список всех аргументов на составные части по их назначению. И подготовим функцию create(), которая будет созидать каждую часть. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 5 мин. [Показать отчёт] Научился: создали заготовку для парсера вариантов ввода из командной строки |
|||||
23 | Создатель |
2 теста |
|||
На этом уроке напишем функцию create.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 40 мин. [Показать отчёт] Научился: если есть проблема с созданием (несозданием) экземпляра переменой - для начала просто допиши у нее модификатор static |
|||||
24 | Как шагает Дед Мороз |
1 тест |
|||
На этом уроке мы пошагово выполним всю программу, увидим, как параметры командной строки разделяются на несколько списков и поочерёдно обрабатываются. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 35 мин. [Показать отчёт] Научился: при сравнении на эквивалентность со строковым аргументом НЕ ПРИМЕНЯЙ == Правильно использовать метод .equals Сложности: Не сразу понял, отчего минус help у меня обрабатывается минус отдельно, хелп отдельно Оказалось, я между ними пробел учинил, чего делать категорически не стоило )) |
|||||
25 | Конвертабельность |
2 теста |
|||
На этом уроке мы наконец-таки проанализируем параметры командной строки и создадим нужный экземпляр конверт. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 25 мин. [Показать отчёт] Научился: если количество параметров ровно два и второй из них эквивалентен типу вывода - создаем экземпляр соответствующего конвертера Сложности: набирать отчет с лежащим на ноуте котиком |
|||||
26 | Фабрика параметров |
1 тест |
|||
На этом уроке мы наконец-таки закончим создание основной части программы. Мы создадим класс ParamFabric, в который перенесём весь парсинг аргументов. Останется только оформить документацию - написать комментарии. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 33 мин. [Показать отчёт] Научился: создание параметров вывели в отдельный класс и все взлетело без проблем, что радует опробовали рефакторинг - множественное переименование - тоже работает на ура |
|||||
27 | Буфера в стрингах |
2 теста |
|||
На этом уроке мы пройдёмся по всему коду программы и сделаем небольшие улучшения кода. В основном мы будем заменять String на StringBuffer в тех местах, где происходит итеративное формирование строк. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 2 мин. [Показать отчёт] Научился: String каждый раз создает новый объект. Во избежание потерь времени и ресурсов используй StringBuffer |
|||||
28 | Документация Деда Мороза |
1 тест |
|||
На этом уроке мы опять пройдёмся по всему проекту и допишем документируемые комментарии. Затем создадим HTML-документацию используя утилиту JavaDoc. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 55 мин. [Показать отчёт] Научился: Дописали комментарии, результаты выводятся в браузер |
|||||
29 | Задедомороженный Архив |
1 тест |
|||
На этом уроке мы запакуем весь архив в один файл, используя утилиту jar. В таком виде удобно копировать и распространять программу - вместо огромного количества файлов - всего один архив. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 6 час. 22 мин. [Показать отчёт] Научился: исправили возвращаемый методом getConvert аргумент - null без исправления оставался бы nullом всегда Создали jar-архив программы, являющий собой единый файл, способный к запуску на любой машине, где установлена JVM Создать архив не в консоли можно через меню Eclipse: File - Export - Java - Jar |
|||||
30 | Комплименты Деду Морозу |
без видео 1 тест |
|||
Поздравляю с завершением Объектно-Ориентированного-Проекта на примере решения задачи про Деда Мороза. Пожалуйста, оставь отзыв об этом видеокурсе. Что тебе понравилось, что не понравилось, что можно было бы сделать лучше, в свободной новогодней форме. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 19 мин. [Показать отчёт] Научился: Еще одна ступенька к вершине горы Фудзи. Как она далека... Как далеко и подножие этой громадины. Я уже отчетливо вижу одиноких путников, делающих первые шаги вверх, я с неменьшим интересом наблюдаю и верхние уступы н склоне, где видны друзья из Пензы, Севастополя и Подмосковья. Курс знакомит с организацией полноценного проекта по калькуляции подарков какого-то деда, у кого Мороза, у кого Санты Клауса, к кого Йолло Пукки, всех не перечесть. В процессе прохождения уроков код создается, правится, рефакторится и сопровождается созданием документации. После внесения изменений программа запускается и тестируется под нагрузкой возможных входных данных. Вся разработка ведется в IDE Eclipse от монстров Майкрософта, часть работ выполняется в командной строке. При достаточном внимании и наличии времени и желания сей курс осилит даже девочка с рисепшена ) Дорогу осиливает идущий. Всем курсантам - терпения и внимания к деталям. Зачастую проблема кроется в вышеуказанном или в отличающейся версии софта - они там тоже не почивают на лаврах, пишут разное и, что работает под одной версией, то может стать колом под другой. Не раз обжигался, считаю нужным упомянуть. Автору курса спасибо за труд! Видеообзор: MNTYUsHxq9g |
|||||
Итого: 30 видеоуроков |
7 час. 04 мин. 49 тестов |
15 чел. | |||
Финалисты: Новопашин Владимир, Иван Воронин, Алексей В., Tekashnik, Сергей Соколов, Константин, Валерий Жданов, Станислав, Andrej Petrunev, Chip, Dmitry Sinitsin, Anatoli, Yefim, Ksandr, Tom . |