# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем знакомство с очень популярным и востребованным шаблоном проектирования - Наблюдатель / Observer. По-другому он называется Подчинённые / Dependents. Этот шаблон активно используется в событийно-ориентированных языках программирования. На следующих уроках мы создадим несколько программ, на примере которых лучше уясним суть этого шаблона проектирования. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 55 мин. [Показать отчёт] Научился: схема Наблюдателя: - объект рассылает сообщения - количество Получателей может варьироваться - связь между Отправителем(Отправителями) и Получателем(Получателями) слабая Суперкласс Observer - способен принимать входящие сообщения (обрабатывать события) Дочерние классы реализуют деяния, связанные с событием, о котором информируется суперкласс Класс Observable (или Subject) отвечает за регистрацию обработчиков событий, удаление и оповещение оных Класс информатора (в примере - Porter) создает список оповещаемых, добавляет/удаляет в него элементы списка, инициирует оповещение слушателей в цикле перебирая всех Шаблон наблюдатель полезен в роли стартового пистолета на соревнованиях Вместо вахтёра в спорте стартёр — человек, который даёт старт соревнованию Видеообзор: 5i0EvifYGOs |
|||||
2 | Observer - School Bell - Student |
1 тест |
|||
Мы начинаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы реализуем интерфейс Observer(), класс OStudent() и реализуем базовый функционал будущей программы. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 58 мин. [Показать отчёт] Научился: 1:35 - цитата" Рассказывают, что Эклипс работает медленно даже на быстрых компьютерах". Оказывается не в железе дело )) Не поставил галку "Добавить абстрактные методы" от интерфейса. Посмотрим, выплывет ли это расхождение Создали интерфейс, дочерний класс студента и точку входа в программу |
|||||
3 | Observer - School Bell - Sound Bell |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы реализуем класс OBell(), который будет имитировать школьный звонок. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 13 мин. [Показать отчёт] Научился: Если при создании класса OBell в интерфейсы указывается дефолтный Observer (не ObserverSchool/src) - то добавляются импорты и аргументы в методе update Чтобы звонок бренчал ваяем метод sound со строковым аргументом имени воспроизводимого файла Метод sound состоит из следующих инструкций: - создание экземпляра с аргументом имени файла - получение звукового потока из экземпляра выше - создание клипа - открытие звукового потока - запуск звукового потока в рамках трайкеча |
|||||
4 | Observer - School Bell - Porter |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы приступаем к реализации интерфейса Observable() и его класс Porter() implements Observable. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 43 мин. [Показать отчёт] Научился: оповещение Наблюдателей осуществляется оптом, не в розницу Наблюдатели хранятся в ArrayList<>(); Реагируют на событие лишь те наблюдатели, что добавлены Удаленный объект звонок как это ни удивительно, не звонит, но трое вечерних студентов рады и без звукового сопровождения (вторая иллюстрация) |
|||||
5 | Observer - School Bell - java.util.Observer |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы переделаем нашу программу с использованием системной библиотеки для реализации Observer/Observable(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 44 мин. [Показать отчёт] Научился: Observer представлен в системных библиотеках Java В интерфейсе Observer реализован метод update с аргументами (звонок, кто звонит) Object Sender - кто звонит (от какого объекта прилетело событие) EventArgs - как звонит (доп. инфа об обработке события) Обработка события "щелч0к ПКМ" реализованный через делегат == методу update Add unimplemented methods - добавить нереализованные методы После удаления самолепного Observer -а) импортировали системный java.util.Observer во все классы, которые его имплементируют (используют/расширяют) -б) дописали в сигнатуру метода update аргументы Observable o и Object args Если аргументов нет - указали null На этом уроке мы избавились от самодельной реализации и применили то же самое, сделанное разработчиками ЯП Java Причина для этого - использование проверенного ресурса вместо самопального кода |
|||||
6 | Observer - School Bell - java.util.Observable |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы воспользуемся системным классом Observable(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 4 мин. [Показать отчёт] Научился: Observable интерфейс в системных библиотеках переведён(расширен/преобразован) в класс, поскольку методы универсальны и не требуют множества одинаковых реализаций(имплементаций): =================================== void addObserver(Observer o) protected void clearChanged() int countObserver() void deleteObserver(Observer o) void deleteObservers() boolean hasChanged() void notifyObservers() void notifyObservers(Object arg) protected void setChanged() =================================== Удалили самопальный интерфейс Observable, включавший в себя три метода add, delete и notify ВАЖНО! Не забыть implements (реализует) заменить на extends (расширяет) После подключения библиотечного java.util.Observable все методы, кроме doBreak() стали излишними и полетели со свистом в треш |
|||||
7 | Observer - School Bell - Study and Break |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы завершаем создание программы "Школьный звонок". Осталось рассмотреть дополнительную возможность передачи параметров. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 3 час. 4 мин. [Показать отчёт] Научился: добавили аргументы в метод update класса Obell Для дифференциации звонков добавили перечисление BellMode Перечисляй через запятую, в конце - точка с запятой Применили свичкейс для аргумента из класса BellMode Нашел в сети новый звук, прикрутил и его в Obell.java через свичкейс Урок демонстрирует возможность допилить метод до работающего с аргументами, указываемыми в сигнатуре и обращающимся к разным звуковым файлам в разных контекстах происходящего - на урок один звонок, с урока другой |
|||||
8 | Observer - Sensor - Visaginas |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы создадим программу информирования о погоде. Для этого мы создадим класс Sensor(), который будет узнавать текущую температуру и информировать об этом тех, кому это нужно и при необходимых значениях температуры. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 0 мин. [Показать отчёт] Научился: в новом проекте начали с создания класса Sensor наследуемого от системной библиотеки java.util.Observable Метод информирования Наблюдателей содержит инструкции: - установить наличие изменений - оповестить Наблюдателей (с аргументом из метода возвращаемого методом этого же класса getTemperature) |
|||||
9 | Observer - Sensor - Person |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На прошлом уроке мы создали класс Sensor(), который рассылает информацию о температуре всем, кому это необходимо. На этом уроке мы создадим классы Console() и Person() как получателей информации о температуре. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 47 мин. [Показать отчёт] Научился: создали классы получателя оповещений с интерфейсом java.util.Observer Из аргументов получаем температуру с приведением значения к типу Integer |
|||||
10 | Observer - Sensor - Cat File |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы создадим класс Cat(), который будет создавать файл "cat.txt" при 18 градусах и удалять его при 0 градусов. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 47 мин. [Показать отчёт] Научился: новый класс Кот создаёт файл ТОЛЬКО если температура == 18 градусам Для этого создаётся экземпляр класса File Затем для этого экземпляра применяется метод createNewFile() Точно расставив фигурные скобки избавился от ошибок в коде и получил кота делающего файл и заскребающего его при определенных температурах |
|||||
11 | Observer - Sensor - Banner |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы вспомним картинку, с которой начиналась наша серия уроков. Чтобы реализовать что-то похожее, мы воспользуемся классом FacadeMotivator(), которые реализовали во время прохождения Шаблона Проектирования: "Facade". |
|||||
12 | ФИНАЛЬНЫЙ УРОК |
без видео 3 теста |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. |
|||||
13 | VIP - Observer - Sensor - Alert |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Observer". На этом уроке мы добавим звуковую сигнализацию к нашему температурному табло. |
|||||
Итого: 13 видеоуроков |
1 час. 51 мин. 8 тестов |
7 чел. | |||
Финалисты: Сергей Соколов, Иван Воронин, Новопашин Владимир, Tekashnik, Александр, Anatoli, Tom . |