# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Подготовка - Фрукты по списку |
2 теста |
|||
На этом уроке мы познакомимся с перечислением Enum. Фактически - это набор именных констант в одной упаковке. Перечисления в языке Java представляют из себя класс, который предоставляет много интересных возможностей. Преимущества использования перечислений: + Все константы собраны под одним именем. + Можно проверить наличие строчного значения в списке. + Можно в цикле перебрать все константы. + Оператор выбора switch на основе перечисления исключает ошибки. + Можно использовать как константную справочную базу данных. Самостоятельное задание: Создайте перечисление по дням недели - от MONDAY до SUNDAY. Введите с клавиатуры строку и проверьте, является ли она днём недели. Выведите название введённого дня недели на русском языке (switch-case). Выведите на экран список всех дней недели, кроме введённого. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Вспомнила дни недели Сложности: -- Комментарии: -- |
|||||
2 | Подготовка - База фруктов |
1 тест |
|||
На этом уроке мы увидим интересные возможности перечислений enum в языке Java. Оказывается каждое слово - это не просто константное числовое значение, а целый экземпляр класса, в котором можно размещать справочную информацию. Получается целая константная база данных - справочник! Рекомендуемая литература: http://interviewinit.com/2014/04/java-enumerations-особенности/ 15 вопросов на собеседование относительно Enum, с ответами: http://info.javarush.ru/translation/2015/10/13/15-вопросов-для-собеседования-разработчиков-относительно-Enum-в-Джаве-с-ответами-.html Самостоятельное задание Отчёт отправил: 1232. Фомичева Наталья Выполнено за 20 мин. [Показать отчёт] Научился: Писать фрукты на немецком и еще каком-нибудь Сложности: Запомнить перевод Комментарии: Идем дальше |
|||||
3 |
![]() |
2 теста |
|||
Мы начинаем создание Java-проекта на основе задачи про Деда Мороза, который дарил детям фрукты. При создании проекта вы сможете проникнуться духом Явы и прочуствовать во всей красе суть объектно-ориентированного подхода. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 20 мин. [Показать отчёт] Научился: Пользоваться стримридером. Сложности: Заставить себя поверить, что здесь есть что-то сложное. Во! Я line не инкапсулировала, считая, что лишний раз создавать объект в цикле не стоит. Но он ведь и так создается. Комментарии: Выделить 3 блока: ввод, обработка, вывод. Это первое с чего надо начать. И второе: называть надо не компьютерными терминами, а конкретными объектами. Фрукты, а не list, фрукт, а не line, числоФруктов, а не count. |
|||||
4 | Яблоки на снегу |
2 теста |
|||
На этом уроке мы добавим в нашу программу перечисление - enum Fruit. Таким образом мы сможем изменять список допустимых фруктов, не меняя основную программу. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Сравнивать enum с нулевым указателем. И еще что на собеседовании задают очень интересные вопросы. http://info.javarush.ru/profile/Treefeed/created/topics/ Сложности: Найти стандартное средство обхода try catch при поиске значения в перечислении... ну и ладно. Нет бы сразу в enum статичный метод добавить. Комментарии: Немного отошла от предложенного устройства программы. Может зря я так? Посмотрим... |
|||||
5 | Фрукточтец |
2 теста |
|||
На этом уроке мы создадим класс FruitReader, в который перенесём алгоритм считывания начальных данных. Таким образом основная программа значительно упростится. Создайте текстовы файл "fruits.txt". На нескольких строчках напишите названия фруктов. Не забудьте в конце файла два раза нажать Enter. Разместите файл в корень проекта. Попробуйте открыть файл, указав полный путь с именем. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Передавать сумку считывателю или поручать задачу сделать сумку ему. Сложности: Разобраться что происходит классом и с указателем на сумку, когда мы теряем указатель на считыватель и как правильно закрыть все потоки перед созданием нового считывателя. И что будет, если поток будет открыт, указатель потеряем, создадим новый поток. А если потерять указатель на поток? Комментарии: Не пойму как с VisualVM работать и как это лечить? *** Profiler engine warning: class sun.reflect.GeneratedSerializationConstructorAccessor1 that should be instrumented is not loaded by target VM... probably it has been unloaded recently |
|||||
6 | Фрукты из строки |
2 теста |
|||
На этом уроке мы напишем метод, который сконвертирует строчку в объект BufferedReader. Таким образом мы сможем задачу по заполнению коллекции фруктов из строки делегировать уже созданному методу Read(). Теперь наш класс FruitReader стал чересчур универсальным, и это не очень хорошо. Мы его разделим на несколько составных частей, каждая часть будет отвечать за свой инструментарий. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Тому, что разбивать программу нужно не только по функциональности, но и по уровню абстракции, как в модели OSI. Сложности: А вот - файл корректно закрыть, даже когда возникает исключение. Интересно как new fr ведет себя в секции ресурсов try блока, но мне вполне достаточно данной реализации. Комментарии: Появилось некоторое несоответствие в моем классе GiftsReader. А именно: то что в него передается сумка - это вполне нарицательное имя. А то, что в нее добавляются фрукты - не совсем хорошо выглядит. Нужен бы класс СумкоСоздетельЗапихатель, в который можно положить некий абстрактный объект и уже от него создать фрукточитатель. Сумка, которая содержит фрукты или фрукты, которые можно положить в сумку... У деда мороза вроде только мешок и задачу о перекладывании из мешка в различные емкости решать не будем. :-) Но список возможных видов подарков и мешков мне пригодился бы. Чай то надо будет когда-нибудь готовить. |
|||||
7 | Волшебные конструкторы |
2 теста |
|||
На этом уроке мы рассмотрим несколько способов, как можно оформить содержимое наследников класса FruitReader. Какие будут преимущества и недостатки при их использовании из основной программы. В конечном итоге мы реализуем всё через волшебные конструкторы наследников. В основной программе алгоритм вычислений вынесем в отдельную функцию. Избавимся от статика и удивимся, как удобно теперь можно изменять тип источника данных - нужно всего лишь менять вызов конструктора. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 40 мин. [Показать отчёт] Научился: Узрела магию и красоту. Посмотрим что будет дальше. Сложности: Понять как мне теперь с контейнером подарков поступить. И куда подарки добавлять, если мешок переполнится. :-) Комментарии: Уже почти готова написать программу, чтоб без четкого ТЗ, но чтоб было красиво. :-) |
|||||
8 | Фруктовые комментарии |
2 теста |
|||
На этом уроке мы займёмся документированием созданных классов и методов. Мы будем использовать javadoc-стиль для автоматизации процесса создания документации. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Писать комментарии Сложности: Писать комментарии на английском. Через неделю ничего не понятно и проще заглянуть в код. Комментарии: В качестве переводчика удобно использовать, может с непривычки начинает рябить в глазах от лишнего текста (особенно в конфигах, где пояснений больше, чем настраиваемых параметров). По мне, так должно быть наоборот: для каждого выбранного класса формироваться табличка, куда можно добавить комментарии и откуда будут браться подсказки. |
|||||
9 | Новые игрушки |
1 тест |
|||
На этом уроке мы попробуем расширить диапазон игрушек в мешке Деда Мороза. Сначала попробуем это сделать через обобщение, и окажемся в тупике. В конце урока мы найдём простое правильное решение, и выясним, почему стоит делать именно так. Совет: сначала посмотрите видео полностью, не внося изменений в код. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Ну этот енум. Кто его знает чего там этот дед мороз притащит. Сложности: Написать хоть один работающий интерфейс для енума. На это ушло больше часа, не выходит. :-) Комментарии: Это никак не статические переменные, как дни недели, например. Но ради обучения - вот. Особо ничего исправлять не пришлось. В сумке определила какой предмет из набора ожидается. |
|||||
10 | Какие ваши аргументы? |
2 теста |
|||
На этом уроке мы сделаем управление нашей программой через аргументы командной строки. В этом случае мы сможем легко изменять источники входных данных. Не нужно больше менять и компилировать исходный код. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Не лениться писать мануалы и наводить марафет. Сложности: Понять для чего столько напрягались и создавали отдельные считыватели и чем в данном случае подход со вторым строковым параметром хуже. :-) Комментарии: Теперь мой fruitsCount можно по праву назвать currentGiftCount. А наработки когда-нибудь пригодятся в новых проектах, где мы увидим всю мощь ООП. |
|||||
11 | Рефакторинг аргументов |
1 тест |
|||
На этом уроке мы перенесём проверку аргументов командной строки в отдельную функцию. Попутно исправим некоторые недочёты и ошибки. Обоснуйте своими словами, почему мы решили не создавать отдельный класс для проверки аргументов? Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Парсинг аргументов выделять в отдельную функцию. И нашла такую интересную функцию как String.startsWith. И еще маленькую ошибку нашла. Создала GiftsReaderString(s), записала что сумка принимает машинки, а потом пересоздала GiftsReader и получилось, что сумка стала фрукты опять принимать. Ну и пришлось мне еще пару часов выделить на улучшение кода. Теперь я могу доложить предметы копированием из одной сумки в другую. Потом пробежалась по коду и добавила немного логов: close() вполне себе override, все отлично. А вот когда gre сумку успел создать Сложности: Заменить join на цикл for рука не поднялась. Комментарии: Наверно потому, что маленькому контроллеру между внешним источником данных и внутренним удобнее быть рядом с точкой входа в программу. Вот, если бы мы текст вводили на пол-страницы, то делегировали бы его разбор новому классу. |
|||||
12 | Пошаговый проход |
1 тест |
|||
На этом уроке мы вынесем проверку аргументов в отдельную функцию. После этого займёмся исправлением ошибки, которая возникает при отсутствии \n в конце строк. Чтобы проще было найти ошибку, и улучшить понимание струкутры программы в целом, мы выполним пошагово всю программу, посмотрим на содержимое переменных и доберёмся до сути той ошибки. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 3 мин. [Показать отчёт] Научился: Ничему Сложности: -- Комментарии: Давно прошлась и исправила. |
|||||
13 | Массивная строка |
2 теста |
|||
На этом уроке мы создадим класс FruitReaderStringArray, в который вынесем алгоритм формирования строчки из массива. Урок длинный - очень много подробных объяснений - что мы делаем, почему мы делаем именно так. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 20 мин. [Показать отчёт] Научился: Что одну строчку функциональщины лучше выделить в класс. :-) Сложности: -- Комментарии: -- |
|||||
14 | Логические задачи |
1 тест |
|||
На этом уроке мы начнём наращивать функционал нашего проекта. Создадим класс Logic, в котором реализуем несколько методов. Каждый метод будет решать одну задачу по списку фруктов. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Выделила логику из своего контейнера подарков, сделала наследование от нее. Сложности: Понять, не много ли обязанностей у менеджера. :-) Комментарии: Теперь мой контейнер может создать сумку для логики, вернуть сумку из логики, читать из потока и передавать предмет в сумку, закрывать поток, управлять логикой сумки. Сумка и логика могут содержать подарки. Думаю стоит его переименовать в Manager и пусть до кучи занимается управлением вывода логики. :-) |
|||||
15 | Размер множества |
2 теста |
|||
На этом уроке мы продолжим работу над классом Logic. Напишем два разных способа решения одной задачи: Сколько разных фруктов в мешке у Деда Мороза? Самостоятельное задание: сделать пошаговое выполнение новых функций. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Оборачивать и прыгать с одного уровня на другой. Сложности: Чувствую под конец курса я узнаю что такое обфускация без постороннего софта. Комментарии: Вделать пошаговое выполнение не в состоянии, верю на слово. Свойство перечисления - с повторением подарков или без... Наверно будет еще что-то. |
|||||
16 | Список задач |
1 тест |
|||
На этом уроке мы составим список всех решаемых задач. У нас будет функция, которая запускает все задачи друг за другом. Также мы создадим ещё одно перечисление из всех возможных задач. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Писать кейсы вместо абстрактной функции в енуме. Сложности: Додуматься что не нравится. Комментарии: Не хватает хедера и футера строки для разных форматов. Еще один енум? |
|||||
17 | Форматы JSON и XML |
1 тест |
|||
На этом уроке мы переделаем класс Logic, чтобы он мог возвращать результаты расчётов в совершенно разных форматах - RAW, JSON, XML. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Откусывать запятую Сложности: Понять почему в строке символ \b не отрабатывает, а рисует квадратик. Комментарии: В логике должна быть логика, а подготовка данных к выводу в отдельном классе, например, FruitWriter |
|||||
18 | Профессиональный Интерфейс |
2 теста |
|||
На этом уроке мы создадим интерфейс Convertable. Он поможет нам выделить из класса Logic задачи по конвертации. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: HashMap. Есть смысл помнить о нем и применять там, где это надо. Сложности: -- Комментарии: Думаю дальше мы сформируем структуру из задача-значение и передадим её на конвертацию, где возможно будет использовать любой формат |
|||||
19 | Коллекция HashMap |
2 теста |
|||
На этом уроке мы создадим в классе Logic метод, который запишет результаты вычислений в словарь - то есть в коллекцию HashMap Отчёт отправил: 1232. Фомичева Наталья Выполнено за 20 мин. [Показать отчёт] Научился: Перебирать элементы хешмеп. Сложности: -- Комментарии: Убрать enum вообще. Сразу помещать в хешмеп все пары задача-значение из класса logic. |
|||||
20 | Конвертабельные классы |
3 теста |
|||
На этом уроке мы сделаем три новых класса, каждый из которых реализует интерфейс Convertable. В каждом классе будет всего одна функция - Convert(), которая из словаря создаёт нужную структуру данных. Отчёт отправил: 1232. Фомичева Наталья Выполнено за 30 мин. [Показать отчёт] Научился: Еще немного потренировалась работать с Хэшмепом Сложности: -- Комментарии: Иван просил без кавычек, вот... Интерфейс это такая штука, которая дает возможность общаться разным объектам через нечто общее, если это нечто общее они сумеют найти и выделить в отдельный блок. Например, глаза позволяют видеть, уши слышать, язык и голос говорить. Набор этих объектов и методов составляют интерфейс для взаимодействия существа с окружающим миром. |
|||||
21 | Параметр Формата |
1 тест |
|||
На этом уроке мы обсудим возможность управления форматом вывода результата нашей программой через передачу параметра командной строки: java Program [-format json|xml|raw] Отчёт отправил: 1232. Фомичева Наталья Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Не пропускать проверку на null Сложности: Прекратить философствовать и учиться и заняться делом. Комментарии: Мир, труд, май, пила, молоток, грабли... |
|||||
22 | Параметрический Созидатель |
3 теста |
|||
На этом уроке мы так и не реализуем функцию parseArgsConvert(). Вместо этого мы организуем более общий подход к анализу аргументов. Разделим список всех аргументов на составные части по их назначению. И подготовим функцию create(), которая будет созидать каждую часть. |
|||||
23 | Создатель |
2 теста |
|||
На этом уроке напишем функцию create. | |||||
24 | Как шагает Дед Мороз |
1 тест |
|||
На этом уроке мы пошагово выполним всю программу, увидим, как параметры командной строки разделяются на несколько списков и поочерёдно обрабатываются. |
|||||
25 | Конвертабельность |
2 теста |
|||
На этом уроке мы наконец-таки проанализируем параметры командной строки и создадим нужный экземпляр конверт. |
|||||
26 | Фабрика параметров |
1 тест |
|||
На этом уроке мы наконец-таки закончим создание основной части программы. Мы создадим класс ParamFabric, в который перенесём весь парсинг аргументов. Останется только оформить документацию - написать комментарии. |
|||||
27 | Буфера в стрингах |
2 теста |
|||
На этом уроке мы пройдёмся по всему коду программы и сделаем небольшие улучшения кода. В основном мы будем заменять String на StringBuffer в тех местах, где происходит итеративное формирование строк. |
|||||
28 | Документация Деда Мороза |
1 тест |
|||
На этом уроке мы опять пройдёмся по всему проекту и допишем документируемые комментарии. Затем создадим HTML-документацию используя утилиту JavaDoc. |
|||||
29 | Задедомороженный Архив |
1 тест |
|||
На этом уроке мы запакуем весь архив в один файл, используя утилиту jar. В таком виде удобно копировать и распространять программу - вместо огромного количества файлов - всего один архив. |
|||||
30 | Комплименты Деду Морозу |
без видео 1 тест |
|||
Поздравляю с завершением Объектно-Ориентированного-Проекта на примере решения задачи про Деда Мороза. Пожалуйста, оставь отзыв об этом видеокурсе. Что тебе понравилось, что не понравилось, что можно было бы сделать лучше, в свободной новогодней форме. |
|||||
Итого: 30 видеоуроков |
7 час. 04 мин. 49 тестов |
15 чел. | |||
Финалисты: Новопашин Владимир, Иван Воронин, Алексей В., Tekashnik, Сергей Соколов, Константин, Валерий Жданов, Станислав, Andrej Petrunev, Chip, Dmitry Sinitsin, Anatoli, Yefim, Ksandr, Tom . |