# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
На этом уроке мы познакомимся с очередным шаблоном: "Шаблонным метод" (Template Method). Шаблонный метод (шаблон проектирования) Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 20 мин. [Показать отчёт] Научился: абстрактный класс хранит в себе неизменяемый алгоритм действий, применяемый в массовом порядке Клиент обращается к абстрактному классу, а тот в свою очередь делегирует выполнение определённого алгоритма конкретным классам, обращающимся к абстрактному за инструкциями. Ежегодно у меня в рамках профессиональных обязанностей приходится обновлять корневые сертификаты всех пунктов моего региона. Их 600. И это 600 однотипных прохождений одного и того же. Залогиниться, десяток одинаковых, с малыми вариациями, кликов ПКМ, указание файла откуда взять обновку, проверка успешности обновления и выход. И так 600 раз. Если этого не делать - танцы с бубном, здравствуйте! Если это делать - немного тупеешь на время однообразного тыкания. Со временем скорость маслания мышью растёт, но идея автоматизации процесса всё равно витает в воздухе. Любопытно, поможет ли этот курс найти решение для подобной рутины. |
|||||
2 | Template Method - Girl - Abstract |
2 теста |
|||
На этом уроке мы подробнее разберём Шаблонный метод (Template Method), используя пример знакомства с девушкой/парнем. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 31 мин. [Показать отчёт] Научился: абстрактный класс содержит: +неизменяемый метод, одинаково применимый ко всем наследникам +переопределяемые методы, учитывающие особенности реализации конкретных наследников Саблайм не подсвечивал синтаксис. Нашел где включить(иллюстрация номер 1) |
|||||
3 | Template Method - Girl - Macho Boy |
|
|||
На этом уроке мы реализуем Шаблонный метод (Template Method), в том варианте, который подготовили на прошлом уроке. В качестве эксперимента мы будет именовать все классы, методы и переменные на русском языке. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 50 мин. [Показать отчёт] Научился: создали абстрактный класс с кириллическим именем Проблемы при создании класса не произошло, однако проверить кодировку не повредит: Window - Preferences - General - Workspace - Text file encoding У меня стояло Default (Cp1251) и не ругнулось на кириллицу в сигнатуре Поправил на Other - UTF-8, после применения имя класса исказилось, ошибки в коде. Удалил класс, пересоздал заново успешно |
|||||
4 | Template Method - Girl - Program |
2 теста |
|||
На этом уроке мы завершим создание программы для демонстрации Шаблонный метод (Template Method). Для этого мы создадим класс Program() и реализуем в нём основной метод main(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 40 мин. [Показать отчёт] Научился: клиент создаёт экземпляр абстрактного класса Единственный доступный метод - познакомиться, остальные закрыты Далее по шаблону отрабатывает каждый экземпляр со своими вариациями |
|||||
5 | Template Method - Web Parser |
|
|||
Мы начинаем серию уроков по созданию парсера нужной информации, при помощи Шаблонного метода, с интернет страниц. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 56 мин. [Показать отчёт] Научился: F12 или CTRL+SHIFT+I - код страницы а) открыть сайт б) открыть код сайта в) найти строку г) найти информацию д) вернуть искомое значение |
|||||
6 | Template Method - Web Parser - Abstract |
|
|||
На этом уроке мы создадим абстрактный метод нашего парсера при помощи Шаблонного метода. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 52 мин. [Показать отчёт] Научился: абстрактный метод getURL возвращает строковое поле в переменную url загрузка сайта реализована приватным методом loadPage Поиск информации - абстрактный метод возвращающий булево значение |
|||||
7 | Template Method - Web Parser - Time |
2 теста |
|||
На этом уроке мы создадим парсер времени с сайта точного времени при помощи Шаблонного метода. Для этого мы создадим класс WebTime(), который унаследует методы WebParser() и реализуем парсинг времени. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 34 мин. [Показать отчёт] Научился: создали поиск текущего времени по маске в коде страницы сайта %H%:%i%:%s Выделение подстроки с 19 по 27 индекс - высчитано прямо из кода сайта сначала неточно, не была указана стартовая позиция, хранящаяся в переменной pos (первая иллюстрация) После указания стартового индекса считывание из метода loadPage проходит успешно |
|||||
8 | Template Method - Web Parser - Loader |
|
|||
На этом уроке мы реализуем функцию loadPage(), которая будет загружать страничку по заданному адресу. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 9 мин. [Показать отчёт] Научился: для обработки содержимого веб-страницы использовали экземпляр StringBuffer InputStreamReader читает весь код страницы BufferedReader читает построчно Чтение кода в бесконечном цикле выполняется до строки равной null append == добавлять,присоединять,прилагать, конкатенировать, привешивать, прибавлять, добавлять в конец При адаптации класса WebTime.java для иных сайтов, кроме time100.ru можно выдергивать требуемую информацию из-под капота сайта, а он и не узнает )) |
|||||
9 | Template Method - Web Parser - Currency |
|
|||
На этом уроке мы реализуем класс WebCurrency(), так же наследуемый абстрактный класс WebParser(), который будет считывать с сайта стоимость валюты. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 10 мин. [Показать отчёт] Научился: принцип парсинга с сайта: ищешь уникальную запись привязываешься к ней как к якорю от этого индекса отсчитываешь через сколько начать парсить отсчитываешь на каком индексе закончить выдергивание информации Метод getURL возвращает полный адрес целевой страницы, откуда будем стягивать инфу Метод findInfo ищет якорь, стартовый индекс от якоря, финальный индекс от якоря и в переменную записывает найденное В валютном парсере реализовали поиск выделением подстроки от якоря до плюс 200 индексов с разделением как в иксельке по знакам "кавычка", не забыв её экранировать Метод, в сигнатуре которого ты указал булевый тип возвращаемых данных, не забывай завершать ритёрном тру или фолза, иначе ашыпка С первого запуска код вернул NO DATA! (иллюстрация номер 1) Попробовал парсить ЦБ России - успех (вторая иллюстрация) Сложности: Не нашел поиска в коде веб-страницы, открываемый через F12 Изучаю проблему |
|||||
10 | ФИНАЛЬНЫЙ УРОК |
без видео 7 тестов |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 50 мин. [Показать отчёт] Научился: Если есть скелет, рыба или общее представление о том, как должна работать программа, то Шаблонный метод - это наш выбор. Создаётся суперкласс, в котором описывается абстракция поведения кода, а конкретику мы описываем в классах наследниках. Поскольку при создании классов-наследников IDE уже автоматически заготавливает методы, которые требуют реализации, процесс создания программы упрощается, разбиваясь на два этапа: создание общего описания КАК ДОЛЖНА РАБОТАТЬ программа, и реализация мелких подробностей в наследниках. Курс знакомит неподготовленного курсанта с шаблоном, давая первые представления, доступные к пониманию с чистого листа. Развитие темы - преррогатива учащегося. Особо порадовал раздел по созданию парсинга реального сайта в интернете. Прежде лишь краем уха слышал о такой фиче, теперь знаю, что парсить надо выцепляя адрес сайта, найдя в коде сайта уникальный якорь, отсчитывать от него требуемый диапазон для последующего анализа, загонять этот диапазон в массив, разбивая по имеющимся в коде сайта знакам препинания и с последующим возвратом в переменную искомого значения, как элемента массива. Несложно. Курс смело рекомендую начинающим пытливым умам. Всем удачи и приятных праздников! Сложности: Заниматься в двух метрах от праздничного стола с мандаринами и шампанским. Видеообзор: XG9v-RAMfts |
|||||
Итого: 10 видеоуроков |
1 час. 01 мин. 13 тестов |
13 чел. | |||
Финалисты: Иван Воронин, Сергей Соколов, Станислав, Povilas Abramovicius, Новопашин Владимир, Виктор, Tekashnik, ser2018, Dmitry Sinitsin, Александр, Yefim, Anatoli, Tom . |