# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем очень интересный шаблон проектирования: MVC. Мы разберёмся, зачем же он нужен и продемонстрируем его работу на нескольких примерах. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 40 мин. [Показать отчёт] Научился: Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние. Начинка Вашего Программного продукта, имеющая свою заточку на выполнение неких задач разработанным Вами способом == это и есть Модель. По аналогии со столовой, микшером или автомобилем, Модель там кухня, печатная плата с элементами и агрегаты с трансмиссией, соответственно. Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели. Коротко - это интерфейс. Экран монитора, статус-бары, прогресс-бары, любые показометры, всё что отвечает за информирование человека о состоянии и изменениях ПО или иной сущности в его рамках доступности. Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений. Методы обработки входящей информации и адаптации её для передачи на обработку Модели. Аналогия: раздача в столовой, либо приборная панель с комплексом управления, для внесения изменений в процессы. |
|||||
2 | MVC - Counter - ViewConsole |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы начинаем создание первой программы, реализовав базовый функционал вывода информации в консоль. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 8 мин. [Показать отчёт] Научился: Создать класс ViewConsole implements Observer не удалось за неимением возможности подгрузить в создаваемый класс паттерн Наблюдатель. Ищу решения. То ли это делалось в процессе инсталляции Эклипса, то ли иным способом, но Гугл пока ответа не дал. Советы приветствуются. |
|||||
3 | MVC - Counter - ViewFrame |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы создадим ещё одно представление, используя JFrame() с необходимым интерфейсов для возможности использования ActionListener(). Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 32 мин. [Показать отчёт] Научился: по традиции оформили JFrame и потестили приём им аргументов java.util.Observable и java.util.Observer Эклипс уже помечает как устаревшие (предлагает пометить Suppress Warnings("deprecation") - Подавить предупреждения («устаревание») ), но работе программы это не мешает |
|||||
4 | MVC - Counter - ModelPlus |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы создадим Модель и продемонстрируем как она работает. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 25 мин. [Показать отчёт] Научился: задействовали библиотеки java.util.Observable; и java.util.Observer; тем самым установив оповещение консоли и экранной формы классом ModelPlus.java который умеет хранить значение счётчика и увеличивать его методом plus() |
|||||
5 | MVC - Counter - ControllerPlusFrame |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы создадим Контроллер, связывающий Модель и Представление. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 57 мин. [Показать отчёт] Научился: контроллер == связующая нить (НЕ КАНАТ) между Моделью(MODEL) и Представлением(VIEW) Контроллер связывает функционал одного Представления и одной Модели, чем проще, тем целесообразнее, не надо усложнять нить до состояния причального каната межконтинентального лайнера Вариант вывести ноль со старта программы - мой фантазийный вариант - методом, выполняющим однократно инкремент до единицы и тут же декремент до нуля однократно - тогда при запуске будет выведен ноль сразу |
|||||
6 | MVC - Counter - ControllerPlusConsole |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы создадим Контроллер для второго Представление, которое мы реализовали в самом начале для вывода в консоль. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 4 мин. [Показать отчёт] Научился: при создании разных контроллеров при одной модели, работа их в программе происходит синхронно - и счет в цикле выполняется и там и там одинаково, и кнопка по окончании работы цикла приводит к увеличению показаний счетчика и на экранной форме и в окне консоли Заметил ещё одну особенность при создании скриншотов. В былое время, работая на ноуте Вайо под управлением ОС Windows, чтобы отработал скриншот, ось ждала окончания работы цикла, и лишь потом делала скриншот, здесь же, ось мака ХайСиерра 10.13.6 позволяет делать скриншот прямо в момент выполнения цикла, не дожидаясь его окончания. Это вспомнилось, когда играл с циклом в этом уроке А синхронность работы программы объясняется тем, что поле private int counter; хранится в Модели, а она у нас одна и для представления Консоли и для представления Фрейма, и в ней прописано оповещать всех Слушателей об изменениях |
|||||
7 | MVC - Counter - ModelDuplex |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы создадим ещё одну Модель, которая будет заниматься умножением. Так же переделаем наш код, чтобы он работал с long значениями. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 41 мин. [Показать отчёт] Научился: создание контроллера: - объявить поле модели - объявить поле представления создать конструктор, принимающий аргументами вышеобъявленные поля - присвоить текущим экземплярам полей значения аргументов "thisами" - текущему экземпляру модели добавить addObserver с передачей аргументом текущего экземпляра представления - текущему экземпляру представления добавить addListener или слушателя с передачей ему аргументом текущего экземпляра метод экшнПерформд запускает у модели метод дуплекс (вышеописанное проиллюстрировано на картинке за номером нуль) Про непередачу аргумента в notifyObservers(multi); класса ModelDuplex (нижняя иллюстрация справа внизу этот класс) заметил ещё в момент написания класса и был удивлён этой ошибке, которая возвращала null после компиляции (шестая минута видеоурока) Вот ведь! Школа не прошла даром ) |
|||||
8 | MVC - Counter - ControllerDuplex |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы заканчиваем создание первой программы, для демонстрации данного шаблона проектирования. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 4 мин. [Показать отчёт] Научился: Модель описывает бизнес-логику ( к примеру спекулянтскую, она проще для понимания - покупаем рога и копыта оптом по рублю, торгуем этим же в розницу с накруткой 80 пр0центов, кричим всем про громадные пятидесятипроцентные скидки, акции, розыгрыши и прочий шум, живем на 30 процентов маржи) Представление - это то, что видит покупатель Контроллер - это наш механизм обработки рогов и копыт по извлечению маржи для ведения предпринимательской деятельности, имеющей целью извлечение прибыли, то есть работу контроллера Рога с копытами никак не связаны с покупателями, а связующее звено - это и есть контроллер, то есть контора "Рога и Копыта" Решением по первичному выведению стартового значения в фрейм и консоль было удаление конструктора в модели и замена его на метод инит, присваивающий счётчику стартовое значение и оповещающий об этом контроллер Сложности: В видеовставке немного юмора, надеюсь на предновогодние улыбки да и воскресенье на дворе ) Видеообзор: 5ykLJLmnXWk |
|||||
9 |
![]() |
1 тест |
|||
Для более глубокого понимания шаблона проектирования MVC мы напишем на языке Java полноценную прикладную программу "Телефонная книжка". Сначала создадим две формы (JFrame), потом напишем модель и в конце свяжем их через контроллер. В добрый путь!
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 39 мин. [Показать отчёт] Научился: узнал о существовании аналога https://www.draw.io в виде вебсервиса https://app.moqups.com/sign-up Сделал свой набросок в дроуИо, поскольку там не требовалась регистрация |
|||||
10 | MVC - PhoneBook - ViewCard |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы начинаем разработку телефонного справочника, для демонстрации данного шаблона проектирования. Начнём с формы "Карточка пользователя". Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 43 мин. [Показать отчёт] Научился: операторы выполняются компилятором сверху вниз и слева направо Это стоит учитывать, когда располагаете свои строки с операторами, если вывод на экран сделать раньше инициализации элементов, их просто не будет видно и пользователи Вашей программы будут дико ржать над незадачливым автором кода ) В уроке эта ситуация рассматривается на примере перемещения оператора setVisible(true); по строкам кода Видеообзор: MpmLVpNo7BI |
|||||
11 | MVC - PhoneBook - User Struct |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы реализуем передачу данных в нашу форму "Карточка пользователя". Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 1 мин. [Показать отчёт] Научился: модель и представление не должны зависеть друг от друга по концепции MVC Как передать в одном аргументе сразу три поля из карточки телефонной книжки? - Ответ прост - создай структуру или класс и помещай в него всё что объявишь. А экземпляр этого класса уже и передавай как один аргумент Если хочешь перекрыть доступ к редактированию поля textID.setEditable(false); - вот такой сетЭдитабл с фолзом применяй смело в Джаве! Observer - это слушатель, который оповещается об изменениях |
|||||
12 | MVC - PhoneBook - ViewList |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: MVC. На этом уроке мы реализуем второй вид "Просмотр/Поиск записей". Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 10 час. 45 мин. [Показать отчёт] Научился: соорудили дочернее окно для добавления записей Временно вывели его вместо родительского для теста В нём три объекта - текстовое поле, окно JList<String> для записей и кнопка закидывания в БД приготовленной в этом окне записи До встречи в следующем десятилетии, товарищи! |
|||||
13 | MVC - PhoneBook - UserList Struct |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы реализуем заполнение списка и передачу в форму списка телефонной книги. |
|||||
14 | MVC - PhoneBook - UserSQL - Methods |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы создадим базу данных на движке sqlite, использовав удобное для этого приложение: sqliteexpert.com. |
|||||
15 | MVC - PhoneBook - UserSQL - Queries |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы выясним, какие именно sql-запросы необходимы для каждого метода. |
|||||
16 | MVC - PhoneBook - UserSQL - Connect |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы реализуем класс UserSQL() на основе шаблона проектирования: ActiveRecord, для работы с базой данных. |
|||||
17 | MVC - PhoneBook - UserSQL - Singleton |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы воспользуемся ещё одним шаблоном проектирования: Singleton. |
|||||
18 | MVC - PhoneBook - UserSQL - CRUD |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы доработаем класс UserSQL. |
|||||
19 | MVC - PhoneBook - UserListSQL - Select |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы реализуем класс UserListSQL, для получения списка всех пользователей. |
|||||
20 | MVC - PhoneBook - UserSQLTest - DBase |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы приступим к тестированию нашей программы при помощи JUnit. |
|||||
21 | MVC - PhoneBook - UserSQLTest - Insert |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы начинаем писать тесты для класса UserSQL() при помощи JUnit. |
|||||
22 | MVC - PhoneBook - UserSQLTest - Select |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы пошагово изучим работу метода по добавлению записи в БД и продолжим реализацию оставшихся методов для тестирования класса UserSQL(). |
|||||
23 | MVC - PhoneBook - UserSQLTest - Slashes |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы реализуем тестирование обновления записей в БД для класса UserSQL(). |
|||||
24 | MVC - PhoneBook - Model - Ресторанная аналогия |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этoм ypoкe мы ещё рaз обсyдим рeсторанную аналогию MVC. И приступим к созданию кухни - Модели. Напишем заголовки всех методов. |
|||||
25 | MVC - PhoneBook - Model - Methods |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этoм ypoкe мы реализуем все методы для нашей модели. |
|||||
26 | MVC - PhoneBook - Controller - Model / ViewList |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этoм ypoкe мы реализуем контроллер для связи ViewList() с Model(). |
|||||
27 | MVC - PhoneBook - Controller - Scroller |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этoм ypoкe мы продолжаем создание контроллера для связи ViewList() с Model(). |
|||||
28 | MVC - PhoneBook - Controller - Class for Click |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы создадим ещё один контроллер для формы с отображением карточки пользователя. На этой форме две кнопки, поэтому для создания слушателей мы создадим отдельные внутренние классы. |
|||||
29 | MVC - PhoneBook - Controller - Buttons |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы запрограммируем кнопочки. По нажатии кнопки "Добавить" - показать карточку. По нажатии кнопки "Сохранить" - сохранить данные, а также скрыть карточку и обновить список имён на главной форме. |
|||||
30 | MVC - PhoneBook - Controller - Select / Update |
|
|||
Мы продолжаем создание телефонной книжки в рамках знакомства с шаблоном проектирования: MVC. На этом уроке мы сделаем открытие карточки по щелчку на записи. Также реализуем сохранение изменений и удаление записей. Создание телефонной книжки практически завершено! |
|||||
31 | MVC - PhoneBook - Search - Message |
|
|||
Мы начинаем создание поиска по телефонной книжке. Начнём с переноса текстовых сообщения в отдельное поле. Для этого потребуется создать панель, чтобы всё поместилось. Также добавим побольше разных записей, чтобы было среди чего искать. |
|||||
32 | MVC - PhoneBook - Search - Select LIKE |
|
|||
На этом уроке мы обсудим два способа, как сделать поиск. Мы напишем запрос для фильтрации записей в нашей телефонной книжке. |
|||||
33 | MVC - PhoneBook - Search - Listener |
|
|||
На этом уроке мы создадим слушателя, который будет реагировать на изменение текста в строке поиска. |
|||||
34 | MVC - PhoneBook - Search - Finish |
|
|||
На этом уроке мы .... ЗАКОНЧИМ создание телефонной книжки! Мы допишем функцию поиска по базе и протестируем её. |
|||||
35 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Ты молодец! Поздравляю с завершением создания телефонной книжки! Запиши видеообзор созданной программы и напиши отзыв об этом видеокурсе. |
|||||
36 | VIP - MVC - PhoneBook - Tripple Click |
|
|||
На этом дополнительном вип-уроке мы сделаем открытие карточек более привычным и удобным - по двойному щелчку и по нажатию клавишы Enter. |
|||||
37 | VIP - MVC - PhoneBook - JModal |
|
|||
На этом коротком вип-уроке мы сделаем форму карточки модальным окном. Это означает, что нельзя будет переключиться в основное окно, пока карточка открыта. |
|||||
38 | VIP - MVC - PhoneBook - Error Checking |
|
|||
На этом уроке мы вынесем обработку ошибок на более высокий уровень. Добавим в Представление функционал отображения ошибок из базы данных. |
|||||
39 | VIP - MVC - PhoneBook - UML |
|
|||
Схему проекта проще всего составить, когда программа уже написана. А ещё проще это сделать, когда под рукой есть хороший инструмент. На этом уроке мы создадим UML схему нашего проекта с использованием программы Code 2 UML sourceforge.net/projects/code2uml САМОСТОЯТЕЛЬНОЕ ЗАДАНИЕ 1. Пройти курс по созданию UI на JavaFX. 2. Создать новые представления ViewCardFX, ViewListFX на JavaFX. 3. Написать контроллеры для связи новых представлений с моделью. Прочуствовать всю мощь MVC - как была изменён вид программы без изменения модели. |
|||||
Итого: 39 видеоуроков |
6 час. 53 мин. 5 тестов |
13 чел. | |||
Финалисты: Алексей В., Сергей Соколов, Елена, Новопашин Владимир, Фомичева Наталья, Tekashnik, Александр, Александр Заскотченко, Иван Воронин, Сергей Тирпиц, Yefim, Anatoli, Tom . |