# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
Мы начинаем работу с Шаблоном проектирования Strategy (стратегия), который выбирает наилучший способ достижения результата. Это значительно упрощает процесс создания программ. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 14 мин. [Показать отчёт] Научился: решил взять курс с похожим шаблоном проектирования на шаблон Состояние Стратегия похожа, но менее гибкА в отличие от Состояния Первая иллюстрация в помощь - картина Васнецова (нашего вятскАга живописца) Как выберешь дорогу, так и чеши Вариант обработки данных выбирается на основе класса контекста, после чего выполняется без шараханий в стороны - вот принцип Стратегии |
|||||
2 | Strategy - Operation - Context |
|
|||
На этом уроке мы начинаем создание программы при помощи шаблона проектирования Strategy (Стратегия). Для начала мы опишем интерфейс нашей программы, так как с этого начинается описание общего знаменателя всех "Стратегий", которые будут применяться. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 14 мин. [Показать отчёт] Научился: соорудили «рыбу»: Context.java - «светофор» Strategy.java - что умеет программа после того, как светофор разрешит движение OperationPlus.java, OperationMinus.java, OperationMulti.java - классы непосредственных действий Шаблон Стратегия годен когда возникает распутье - надо выполнить задачу, НО есть не один способ это сделать Похоже на ветвление if-else или на switch-case В зависимости от целесообразности выбираем нужный вариант действий К примеру, выбор логистики в зависимости от направления или времени года с целью поиска наиболее дешевого пути или наиболее краткого по времени Вариантов масса |
|||||
3 | Strategy - Operation - Program |
1 тест |
|||
На этом уроке мы опишем основной класс программы, который продемонстрирует работу нашего шаблона проектирования Strategy (Стратегия). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 32 мин. [Показать отчёт] Научился: в результате определения стратегии вычисления в программе отрабатывает один из вызываемых классов Подозреваю, что ветвление ифэлз и кейссвич работают на аналогичной платформе кода Нравится многооконность интерфейса Эклипса - видно всё сразу и оттого понятнее, что происходит в программе Пример работы Стратегии - любое ветвление, будь то хоть выбор меню в столовой - выбрал борщ - получай борщ ) |
|||||
4 | Strategy - Join - ArrayList |
|
|||
На этом уроке мы начнём создание программы для слияния строк из ArrayList(). Так как обычная конкатенация строк происходит быстрее с маленьким количеством одновременно склеиваемых строк, то мы воспользуемся шаблоном проектирования Strategy (Стратегия) для выбора наибыстрейшего способа склеивания. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 19 мин. [Показать отчёт] Научился: home + home + TAB+ARROW-DOWN - хоткей для резкого размножения строки Спасибо за хинт ) Заготовку соорудил - результат на иллюстрациях |
|||||
5 | Strategy - Join - Context |
1 тест |
|||
На этом уроке мы реализуем класс Context(), который будет выбирать наилучшую стратегию для выполнения склеивания строк. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 15 мин. [Показать отчёт] Научился: как я и предполагал, Стратегия похожа в реализации на ветвление ифЭлз - это и сделали на уроке В случае размера ArrayListа меньше пяти - выбираем один метод, иначе - метод другой с буферизацией Класс компактен, легкочитаем, незнакомые программисты не произносят вотафаки - значит писан чистый код |
|||||
6 | Strategy - Join - String/Buffer |
|
|||
На этом уроке мы создадим интерфейс Strategy(), в котором будет всего один метод join(). Так же реализуем классы стратегий StrategyString и StrategyBuffer(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 23 мин. [Показать отчёт] Научился: StringBuffer работает с объектами оптом, стринговый += конкатенирует объекты в розницу Когда объектов мало - разница незаметна, при больших массивах данных буферизиованная обработка предпочтительнее |
|||||
7 | Strategy - Join - Log/Timer |
1 тест |
|||
На этом уроке мы продемонстрируем как можно в одном классе использовать несколько шаблонов. Для этого мы перенесём синглтоны Log() и Timer() из прошлых уроков. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 47 мин. [Показать отчёт] Научился: на больших объемах добавления в массив ArrayList с помощью buffer.append целесообразно выполнять отдельные аппенды для отдельных элементов При нагромождении конкатенированных аргументов в один оператор buffer.append работоспособность кода сохраняется, но редуцируется его производительность, что наглядно было показано при помощи таймера, замерявшего скорость с конкатенированием аргументов и с разнесением их же по отдельным операторам buffer.append При соблюдении правила унарности аргумента производительность кода вырастала Резюме: проще аргумент buffer.append == быстрее программа добавления элементов в ArrayList |
|||||
8 | Strategy - Person - Schema |
|
|||
На этом уроке мы начинаем создание программы в котором шаблон проектирования Strategy (Стратегия) мы применим дважды. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 42 мин. [Показать отчёт] Научился: карточка клиента будет выбирать в каком формате быть сохранённой - текстовик ( по умолчанию или принудительно), иксемел или джейсон Вторая стратегия будет развилкой для определения пути вывода карточки клиента - на печать или сохранение в файл Установил себе забытый на время саблайм - поставил подсветку синтаксиса джава - результат в иллюстрации к отчету |
|||||
9 | Strategy - Person - Program |
1 тест |
|||
На этом уроке мы реализуем нашу программу по ТЗ, которое мы создали на прошлом уроке. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 19 мин. [Показать отчёт] Научился: наведя указатель мыши на подчеркнутый красным участок кода можно получить подсказку о сути ошибки и способах устранения оной Не все варианты решения на сто процентов целесообразны - машина неспособна предугадать все варианты хода мысли программиста, потому пользоваться помошью Эклипс надо аккуратно Если ошибка продолжает подчеркиваться - пробуем выполнить сохранение в изменяемом классе - один из вариантов, она исчезнет после сохранения вносимых изменений |
|||||
10 | Strategy - Person - Format - Context |
|
|||
На этом уроке мы реализуем класс ContextFormat(). Его задача в выборе необходимого формата вывода данных. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 36 мин. [Показать отчёт] Научился: выбор стратегии реализован на ветвлении иф-элз Ошибки в видео подчеркиваются только после запуска программы, еще вариант - выполнить сохранение в каждом классе отдельно - проверил, так у меня работает |
|||||
11 | Strategy - Person - Format - Strategy |
|
|||
На этом уроке мы реализуем метод format() в классах FormatTXT(), FormatXML() и FormatJSON(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 6 мин. [Показать отчёт] Научился: метод lastIndexOf («txt») разыскивает то, что расположено в круглых скобках у того экземпляра, к которому применяем этот метод В моём примере в круглых скобках расположено слово тээкстэ в кавычках Искать будет слово БЕЗ КАВЫЧЕК Искать будет ПОСЛЕДНЕЕ совпадение, то есть вернёт индекс крайнего слева направо или ничего не вернет, если нет совпадения Сложности: В финале урока пришлось подебажить ). Выводился результат лишь в текстовом формате - ошибки искал дебагом, не нашел, кроме того, что в дуформате не идёт дальше тхт, в другие ифы не хочет идти. Вспомнил, что в предыдущем уроке вместо апострофов использовал кавычки, заменил. Не помогло. Затем лишь вспомнил, что для парсинга требуется наличие точки, а я лепил сразу просто имя формата. Взлетело. |
|||||
12 | Strategy - Person - Save - Context |
1 тест |
|||
На этом уроке мы реализуем класс ContextSave(). В котором опишем выбор сохранения данных, вывод: на экран SavePrint() или в файл SaveFile(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 23 мин. [Показать отчёт] Научился: снова накосячил, в классе контекстСейв набрал оператор условия неверно и искал, чего ж это не выводятся данные персональныя... if (filename == null || filename.equals ("")) набрал сначала неверно вот так -> if (filename == null || filename == "") Исправив на иквалз всё взетело |
|||||
13 | Strategy - Person - Save - Strategy |
|
|||
На этом уроке мы завершаем написание нашей программы с двойной демонстрации шаблона стратегия (Strategy). Для этого мы реализуем оставшийся класс SaveFile(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 19 мин. [Показать отчёт] Научился: при записи файла на диск НЕ ЗАБЫВАЙТЕ закрывать программно записываемый файл оператором writer.close(); Иначе размер нулевой, как и эффект записи Второй вариант - помещать создание райтера в аргумент трай кеча в круглые скобки - в этом случае оператор закрытия неактуален |
|||||
14 | ФИНАЛЬНЫЙ УРОК |
без видео 5 тестов |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 57 мин. [Показать отчёт] Научился: Стратегия смотрит на контекст и выбирает нужный класс из шеренги подобных - так рождается алгоритм работы программы по этому шаблону На курсе уже написаны три программы, от самой простой, математической, до интерактивной ожидающей решения пользователя по маске именования файла «восемь-три». На экваторе курса делали склеивание эррэйЛиста через буфер и без него, было занятно. Курс несложный, если внимательно смотреть за происходящим, то более чем понятный. Возникавшие ошибки были сопряжены с невнимательностью и слабым знанием предметной области, благо предыдущие уроки были доступны - находил свои ошибки без длительных поисков. Хотя пару раз попотеть в листании пришлось ) ЗЫ На верхней иллюстрации богатырь смотрит на камень На камне написано то, что на нижней иллюстрации ))) Сложности: Взяться и сделать ) Видеообзор: siY-jsem60g |
|||||
15 | VIP - Strategy - Person - UML |
1 тест |
|||
На этом уроке мы рассмотрим программу для генерации диаграмм кода на основе исходников готовой программы. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 30 мин. [Показать отчёт] Научился: class visualizer скачивается без проблем, даже поколдовав с системными настройками безопасности удаётся запустить из архива clsvis.jar Приложение запускается и выводится диаграмма по умолчанию с легендой и расшифровками Доступны менюхи для создания нового проекта и для открытия имеющихся Файловая система компьютера тоже доступна и по каталогам скачем смело Для запуска файлов с нашим проектом с байт-кодом, те что имеют расширение точка класс, надо выбрать в выпадающем меню вариант открываемых файлов all files Открытие сопровождается сообщением об ошибке (вторая иллюстрация) Мак прекрасен своим долгоиграющим аккумулятором, но эти заморочки отличия от работы в маздае местами утомляют |
|||||
16 | VIP - Strategy - Person - Enum |
|
|||
На этом уроке мы порефакторим нашу программу, а именно класс ContextFormat(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 21 мин. [Показать отчёт] Научился: использование энумератора сродни указанию маски для обработки данных - после рефакторинга с его использованием, метод выбора вводимого пользователем ограничен элементами, перечисленными через запятую в классе Тайп - ничего иного не будет пропущено через эту мясорyбку ) |
|||||
Итого: 16 видеоуроков |
1 час. 43 мин. 12 тестов |
12 чел. | |||
Финалисты: Иван Воронин, Сергей Соколов, Станислав, Povilas Abramovicius, Новопашин Владимир, Tekashnik, Фомичева Наталья, Виктор, Александр, Dmitry Sinitsin, Anatoli, Tom . |