Всем привет и ☕! Таймкоды ниже. 00:05 - ООП. Конструкторы, переменные экземпляра 04:40 - ООП. Именованные конструкторы 15:01 - ООП. Список инициализаторов 19:15 - ООП. Перенаправление конструкторов 21:10 - ООП. Константный конструктор 23:30 - ООП. Factory конструкторы 27:07 - ООП. Методы экземпляра, getters и setters 31:25 - ООП. Абстрактные методы и абстрактные классы 34:00 - ООП. Неявные интерфейсы 38:47 - ООП. Extension методы, переопределение операторов 45:20 - ООП. Переменные и методы класса 47:10 - Перечисления 51:45 - Mixins (примеси) 57:15 - Generics, обобщённые типы 1:12:21 - Асинхронное программирование, async/await 1:24:25 - Потоки, небольшой пример
@akaassa733 жыл бұрын
Чтобы подцепить таймкоды в плеере, нужно сделать первый 00:00 :)
@fedornikolenko73164 жыл бұрын
Посмотрел первый урок, думал ну круто, буду ждать следующий, думал выйдет через недельку или две, но не на следующий день:) Отдельное спасибо за это :)
@Roman_jv4 жыл бұрын
Просто положу это комментарий здесь - АВТОР КРАСАВЧИК!!!!
@KobaltMetal4 жыл бұрын
чуваааак, низкий те поклон, свичнулся с нативок на флаттер и твои уроки помогли въехать в тему за считанные дни. Жду когда подробно пояснишь за стримы и RxDart)))
@shohzodzet3 жыл бұрын
Огромное спасибо, что разобрал такие сложные (для новичков) темы !
@paolkrogolov1425 Жыл бұрын
Добрый вечер, очень интересно и познавательно! Лайк+ подписка!
@leonids59304 жыл бұрын
Отличное видео, очень понятное объяснение. Спасибо!
@romandg8844 жыл бұрын
Добрый вечер! Очень нравятся твои уроки! Хотелось бы чтобы ты возобновил их, все будут тебе очень благодарны! Продолжай пожалуйста. Расскажи подробнее про RxDart, и про Stream как ты и хотел. Большое спасибо, за твой труд. Будем, ждать продолжения! )))
@peiiiajikuh3 жыл бұрын
В 1:02:40 можно добавить дженерики и к классу MyCache, чтобы писать код было ещё удобнее: abstract class Cache { T getByKey(String key); void setByKey(String key, T value); } class MyCache extends Cache { Map cache = {}; T getByKey(String key) { return cache[key]; } void setByKey(String key, T value) { cache[key] = value; } } void main() { var cache = MyCache(); cache.setByKey('key', 098987); print(cache.getByKey('key')); }
@OlexanderRudenko4 жыл бұрын
Большое спасибо!
@sergeyvoronov88624 жыл бұрын
Когда впервые смотрел код приложений на flutter было тяжело понять что вообще обозначают его конструкции, сейчас стало гораздо понятнее. Спасибо пойду смотреть следующие уроки.
@melonplayground59753 жыл бұрын
урок класс, всё подробно рассказано, только подмечу одно 19.07; 12+20 = 32*10 = 320 / 2 = 160 равносильно тому что просто умножим 32 * 5 = 160)
@ЗахарРудченко4 жыл бұрын
@codeandart main, скажите, пожалуйста, будет ли продолжение?
@vlad_s3 жыл бұрын
А не перепутаны определения абстрактного класса и интерфейса ?
@morrigan_ghost3 жыл бұрын
уххх как же хорошо ... спасибо
@РинатГазизуллин-й6р Жыл бұрын
Часть 3. будет или может уже есть?
@alexpresley80024 жыл бұрын
это финальный урок, или еще будут ? Спасибо !!!
@antonykruhliashov65952 жыл бұрын
Спасибо за уроки! Не всегда все нюансы проясняются при чтении на другом языке документации.
@alexplay97194 жыл бұрын
Было просто супер разобрать более подробно различные архитектуры с практическими примерами, одна архитектура == одно видео. И хочу спросить что за анимированные обои на рабочем столе?
@codeandartmain4 жыл бұрын
Программка в стиме Wallpaper Engine
@alexplay97194 жыл бұрын
Да, то что это WE я догадался, а как сами обои найти, там их тыщи )))
@ArtemFun4 жыл бұрын
Подскажите пожалуйста, раз уж была начата тема РПГ в начале. Я создал класс паладина, прописал ему имя, атаку, защиту, показатель максимального здоровья и текущее здоровье. Потом сделал класс Монстра, с похожими полями. Ну, или, создал наследника класса, дарк паладина. Что мне теперь нужно делать, чтоб изобразить некую драку между ними в цикле. Как должен реализовываться механизм взаимодействия между классами. Прошу прощения за вопрос за пределами дарта и флаттера, просто я только начал ООП недавно, но хорошо знаком с функциональным программированием. Мне очень надо пару таких кирпичиков, за которые можно зацепиться в ООП и попрактиковаться на легком и интересном проекте. Очень трудно учить программирование (тем более ООП), на этих мелких участках кода. Когда ничего не понятно, для чего, почему, какое реальное применение данной конструкции... ООП же специально создавалось для сложных проектов. Так почему ООП учиться на таких простых примерах, где ООП нафиг не нужен! Извините наболело. Автору видео респект, он наоборот попытался выйти за рамки этого неприятного недоразумения. Наверное хорошие программисты интуитивно пытаются написать код проще, но это не способствует обучению, если такая цель была поставлена. Еще раз извиняюсь, это ни в коем случае не претензия, просто имо рациональное предложение. (для следующего видео )) Например, что мешало реализовать два класса, в этом примере. Паладина с одним видом конструктора, а монстра с другим. и оставить два этих примера в коде. Ну и дальше там тоже можно было парой лишних строчек интегрировать остальной материал в код. Было бы же офигенно круто!
@codeandartmain4 жыл бұрын
По этому видео, не нужно ООП учить, а то правда можно сильно запутаться, еще раз повторюсь, это краткий обзор дарта (для тех кто в теме) Но ошибки свои понял, спасибо)
@cglike4 жыл бұрын
Видео отличное, особенно на скорости 1.5х Ты забыл упомянуть что ограничивая миксин классом можно в самом миксине юзать методы класса.
@Dragonboh13 жыл бұрын
Ошибочка, ви в описании перепутали интерфейс с абстрактним класом. Интерфейс всегда принуждает переоприделить , а вот абстрактний улас может иметь свою реализацию методов которие неабстрактние. Толку с реализации интерфейса, если надо всегда ее переоприделить?
@maksimdeve15383 жыл бұрын
Судя по тому примеру, что он привел - он не понимает для чего нужны абстрактные классы и интерфейсы
@51114 жыл бұрын
Таймлайн 10:50, ты говоришь "оценивается КОМПИЛЯТОРОМ", dart же интерпретируемый язык. Видео топ, лайк + подписка.
@lumen44194 жыл бұрын
Все зависит от контекста исполнения.
@user-ms5pc2vj8u4 жыл бұрын
Отличный урок спасибо!
@ArtemFun4 жыл бұрын
Спасибо. Перехожу с пхп функционального кодинга. На Флаттер и Дарт. Есть много вопросов по ООП, так-как почти не использовал его вообще. Очень крутая идея объяснять ООП на таком живом игровом примере, а не на осточертелых кошках и машинах. Возникли вопросы на 2:26 - String toString, это Дарт, сам знает, что на принт нужно теперь показывать это строку?
@codeandartmain4 жыл бұрын
Да) переопределяем метод toString для текстового отображения)
@codeandartmain4 жыл бұрын
Если не использовали ООП, лучше подробней про это почитать где-нибудь. Т. к. В этом ролике очень быстро пробегаемся по тому как выглядит ООП в Dart.
@ArtemFun4 жыл бұрын
@@codeandartmain спасибо, я как раз этим занимался пару деньков, читал смотрел ролики про ООП общие, напитывался ООП парадигмой )). Сейчас сел писать, чтоб к коду привыкнуть. Параллельно еще по другому уроку иду и все наработки в одну программу пишу. Да везде не договаривают, всем не угодишь, кто-то лучше знает, кто-то хуже, один так делает, другой по другому, у кого-то сладкий код, у кого-то горький )) Но сама идея писать обучающую программу по ООП в стиле РПГ это гениально. В итоге, полноценная небольшая игра может получится. Так что, сейчас для узучение Флаттер и Дарт, для меня этот ролик, просто супер подарок! Огромное спасибо. Подписка и лайки однозначно ))
@ArtemFun4 жыл бұрын
@@codeandartmain прошу прощения, а можно про toString еще чуток. То-есть стандартный метод toString(), который я использую, чтоб вписывать в строку цифры, таким образом переопределяется для этого класса? А откуда и как потом print(newHero) знает, что нужно именно этот метод toString применить? что-то где-то я упускаю ((
@codeandartmain4 жыл бұрын
@@ArtemFun Тут такая тема, что есть Базовый класс для ВСЕХ объектов Dart, это класс Object. ЛЮБОЙ другой класс неявно является его наследником. И этот класс Object имеет свои методы, которые, следовательно передаются его наследникам. Например, у Object как раз таки и есть стандартный метод toString() для строкового представления объекта. (при вызове print() например) И наследники Object могут этот метод переопределять, для своего строкового представления. Это в любом ооп языке так )
@sinchrotron2 жыл бұрын
Интересно, а если сначала рандомно по клавишам стучать, а потом бэкспэйсить и печатать то, что нужно, может всё таки более эффективно будет?
@rinatkhusainov58943 жыл бұрын
Спасибо!
@НайтРайдер3 жыл бұрын
Весь урок слова "atack" и "defense" мозолили глаза (attack и defence верно) :D
@maximo61994 жыл бұрын
Только заинтересовался Dart, он мне показался очень похожим на Kotlin. Но эти " штучки " с js меня убивают)?
@MoRFaiR4 жыл бұрын
А обязательно в конструкторе писать название класса? Это так утомительно... И если я захочу переименовать класс, так еще и конструктор переименовывать?... в питоне __init__ и всё
@ArtemFun4 жыл бұрын
Спасибо но немного обидно, что автор видео ушел от начатой в начале темы и не попробовал показать все остальные темы ООП на примере общего кода простой РПГ игры.
@codeandartmain4 жыл бұрын
Хм, балин, я даже в начале и не подумал, чтобы полностью все примеры через "персонажей рпгшных" сделать 🤔 Было бы прикольно, наверное) Ну уже как есть 😅
@paul_wiggin4 жыл бұрын
Предлагаю подать коллективный иск в суд на Google: За нанесенный ушерб здоровью программистов, а именно: развитие диабета в следствие передоза синтаксическим сахаром при работе с dart.
@ЕвгенийЕвгеньевич-е3с4 жыл бұрын
Шарписты что то не страдают, а там сахар на сахаре, сахаром погоняет)
@IvanGalkin4 жыл бұрын
Спасибо что не whitePower))
@thomastesla54363 жыл бұрын
Можно ли, считать, что вы полностью овладели основами Dart если посмотрели это видеоролики?
@lumen44194 жыл бұрын
Что за переводчик у Вас используется?
@shohzodzet3 жыл бұрын
Это расширение для браузера от Lingualeo
@MoRFaiR4 жыл бұрын
Зачем делать Class.call() когда можно просто функцию отдельно написать? Фаще не понятно..
@vesh953 жыл бұрын
Мне кажется тут ошибка. Как правило интерфейсы не содержат никаких реализаций, а абстракции могут содержать реализованные методы.
@codeandartmain3 жыл бұрын
Да, обычно интерфейсы не содержат реализаций. Абстрактные классы могут содержать. Просто ещё в Dart можно использовать неявные интерфейсы, т.е. имплементировать и обычный класс (взять только, если грубо сказать, "названия" свойств, методов, ... и реализовать в своем классе)
@vesh953 жыл бұрын
@@codeandartmain Теперь понял о чем речь, вопрос сразу отпал. Только не названия, а скорее, сигнатуры
@Bussynessmens4 жыл бұрын
Ах*еть, хочу купить продвинутые курсы у него.
@TheJustPlayChannel4 жыл бұрын
Привет. ТЫ бросил канал? Нового ничего не ждать? А то хотел по твоим видео учится, но смотрю 4 месяца как ничего нового на канале нет...
@lustach83784 жыл бұрын
Видео актуальности пока не потеряло
@KostiaBazrov4 жыл бұрын
усе! асилил ! мона двигатьСя далее .
@РусланКаюмов-щ1ж4 жыл бұрын
Форматирование капец бесит, автор - может шрифт уменьшить ? В остальном - норм.
@СергейСергей-в2к6с4 жыл бұрын
На мой вкус шрифт что надо.
@vvan37114 жыл бұрын
один единственный человек не смог смотреть на число дизлайков равное нулю