Очередной раз убедился, что ты один из немногих, который действительно может доступно, доходчиво и главное интересно объяснить! Спасибо огромное, за то что ты делаешь!
Спасибо за твои труды! Шикарное видео! Как все просто на самом деле! Столько разных роликов на эту тему и книг, а понять что-либо из них крайне тяжело. Все заумно и запутанно. А здесь и просто, и понятно. Евгений, у тебя явно талант преподавания! Может стоит этим заняться профессионально? PS: очень не хватает именно твоих уроков по алгоритмам и структурам данных, желательно на примере JavaScript. Уверен: желающих на эту тему будет немало.
Прекрасное видео, обычно не оставляю комментарии, но здесь никак иначе, продолжайте в том же духе! п.с. из этой серии посмотрел бы такое же видео про ФП, может быть интересно
В примере с наследованием на 8:30 после переопределения this.model = `${model} Model`; и вызвав родительский метод teslaAuto.getAutoType() мы получим //Tesla 3 Model - 2019, а не //Tesla 3 - 2019 как на скрине у ТС. Видео класс, спасибо автору.
Супер, только вот тема инкапсуляции и сокрытия, как по мне, не очень раскрыта. Точнее там используется слово, которое можно по разному трактовать(по крайней мере, я так думаю). Самое главное, что нужно запомнить: инкапсуляция обеспечивает сокрытие, но не является им!
Спасибо за видео! Ты смог объяснить концепции. Но примеры - тихий ужас. Вот как свойство VIN может быть приватным свойством класса, если вин должен быть уникальным у каждого инстанса?
Полиморфизм - это когда наоборот. Дочерний класс наследуется от нескольких родителей, в каждом из которых есть одноименный метод с разными типами параметров. А дальше в зависимости от типа параметра выбирается метод из того родителя, где тип параметра совпадает с передаваемым.
ну вообще да, полиморфизм в js это когда в классе родителя определён метод, и когда в дочернем классе мы переопределяем этот метод , то мы получаем результат для этого дочернего т.е. способность объекта использовать один метод для производных классов, получая разный результат
Функциональное программирование и процедурное программирование не одно и тоже. Функциональное программирование возможно в JS благодаря наличию так называемых "функций первого класса".
Спасибо, за твои уроки. С удовольствием смотрю. Немного уточнить хотел. На 20:27 в последней строке const mi8 = .... Там наверное ты хотел указать new Helicopter(... ?
Немного отсебятины добавлю. Изначально я С++ дев и когда изучал JS, то пытался все делать через ООП. Чуть мозг не сломал 🙂 Как-то не очень получалось даже с ES6 апдейтом. В TS уже лучше. По-моему ООП стоит изучать с С++ (включая Java и C#), но это мое мнение
В С++, Java,. C# - объект и инстанс класса есть одно и тоже. А для Javascript приходиться еще выделять объект в отдельную сущность из-за заложенного в этот язык прототипного наследования. Я согласен с вами полностью, чистое ООП надо начинать изучать не с JS, а именно с Java или C#, которые были изначально спроектированы под данную парадигму. А вот с C++ все сложнее, там заложено множественное наследование, и сам язык все-таки ближе к процедурности чем к ООП.
Нет, объединение данных и методов их обработки - это определение понятия класса, а не инкапсуляции. Кроме того, инкапсуляция ничего ни от кого не скрывыет. Нет такой задачи. Например: приватная секция классов ничего ни от кого не скрывает. Любой желающий может полюбоваться деталями реализации.
9:14 При обращению к классу подобным образом консоль выводит undefined (за исключением Auto.name = "Auto" имя класса), в TS вообще так обратиться нельзя. А даже если найдется пользователь который через инструменты разработчика найдет наш класс и что-то там поменяет, какая разница ведь при перезагрузке страницы все сбросится. То же самое если пользователь нажмет f12 и начнет удалять теги. Концепция инкапсуляции занятна, но разве она широко относится к JavaScript? Может что-то не понимаю, но по ощущениям вся инкапсуляция в js сводится к не использованию метода eval в пользовательском вводе. Полиморфизм - зачем нам создавать несколько дочерних классов с одним и тем-же методом и из них брать метод родительского? Можно на основе класса Auto создать объекты, скидать их в массив и так же проитерироваться по элементам с вызовом функции. Эффект тот же, кода и путаницы меньше. Или это своего рода диверсификация активов?)
Возможно самое понятное видео про ООП ООП парадигма инкапсуляция наследование полиморфизм агрегация композиция интерфейс айпскрипт Джаваскрипт js ts typeScript JavaScript
в композиции у меня не работает почему-то метод start() для объекта, созданного через new Car(). пишет "undefined". если вызывать методы внутренних объектов по отдельности, например engine.start(), то работает. в чём же может быть дело?
понял, в чём дело. метод start() срабатывает, но никаких значений не возвращает. ожидал, что вернёт разом всё, что возвращают методы start() всех вложенных объектов: Engine is started, Wiring is started, FuelPump is started
Так вот какое видео об ООП я ждал все это время... Ютуб чик, подключай алгоритмы - годно та.
Хотелось бы надеяться, что подключит)
Большая тебе благодарность! Приятно смотреть: всё просто, понятно. Пожалуйста, продолжай! Ты делаешь нашу жизнь лучше: я углубился в понимании ООП)
Спасибо большое за поддержку!)
@@YauhenKavalchuk будет просто о алгоритмах и структурах данных?
Евгений, как всегда просто и понятно о сложных вещах, у Вас талант!!!
Спасибо
Шикарное объяснение! ООП стало еще понятней. Лайк, репост!
Спасибо
Спасибо вам огромное! Это то, что нужно! Ваше видео помогло собрать в кучу всю информацию, которая была в голове кусками.
Пожалуйста)
Браво👏
Спасибо
Оказывается ООП еще надо подучить ))) огромное спасибо за материал!!
Спасибо за отзыв!
В очередной раз благодарю за педагогически доходчивую подачу материала 👌
Пожалуйста
Сколько я видео пересмотрел об ООП, твоё самое лучшее, понимание приходит просто моментально! Спасибо тебе огромное!
Спасибо большое за отзыв!)
Очередной раз убедился, что ты один из немногих, который действительно может доступно, доходчиво и главное интересно объяснить! Спасибо огромное, за то что ты делаешь!
Спасибо большое за поддержку
Спасибо, давно ждал такого хорошего урока по ООП на примере JavaScript.
Пожалуйста
Отлично, от тебя и ждал так как все понятно и просто обесняешь)
Спасибо за отзыв)
Спасибо за твои труды! Шикарное видео!
Как все просто на самом деле! Столько разных роликов на эту тему и книг, а понять что-либо из них крайне тяжело. Все заумно и запутанно. А здесь и просто, и понятно.
Евгений, у тебя явно талант преподавания! Может стоит этим заняться профессионально?
PS: очень не хватает именно твоих уроков по алгоритмам и структурам данных, желательно на примере JavaScript. Уверен: желающих на эту тему будет немало.
Я не могу заниматься преподаванием профессионально, т.к. никогда не буду получать столько, сколько разработчик
Прекрасное видео, обычно не оставляю комментарии, но здесь никак иначе, продолжайте в том же духе! п.с. из этой серии посмотрел бы такое же видео про ФП, может быть интересно
Спасибо за отзыв
Это наверное самое лёгкое объяснение ООП на русском ютубе
👍
@@andynaz7044 нет, включал фоном, когда смотреть нечего было
@@andynaz7044 я же там написал, что наверное или какие-то проблемы с восприятием текстовой информации?
@@andynaz7044 или что ты хочешь созвониться и помочь мне понять? Видеосвязь по телеграмму устроит?
@@andynaz7044 или этот комментарий к комментарию с чем-то связан? Для чего он тут?
В примере с наследованием на 8:30 после переопределения this.model = `${model} Model`; и вызвав родительский метод teslaAuto.getAutoType() мы получим
//Tesla 3 Model - 2019, а не //Tesla 3 - 2019 как на скрине у ТС.
Видео класс, спасибо автору.
Спасибо за отзыв, да отпечатался в выводимом результате
Один из лучших видосов про ооп, коротко, понятно, без лишней воды и тягомотины. Автору спасибо !
Пожалуйста
Очень долго ждал подобное видео с твоей подачей, спасибо большое)
Пожалуйста)
Супер! Спасибо! Наглядно очень
Спасибо большое
Түсіне алмай жүр едім, мен үшін қиын болып еді,керемет түсіндіріп бердің,үлкен рахмет!
Пожалуйста)
Шикарное видео, приятно от каждого слова! =)
Спасибо большое за отзыв!
Спасибо за старания! У тебя талант не только в разработке, но и к преподаванию.
Спасибо большое за отзыв
Супер, только вот тема инкапсуляции и сокрытия, как по мне, не очень раскрыта. Точнее там используется слово, которое можно по разному трактовать(по крайней мере, я так думаю). Самое главное, что нужно запомнить: инкапсуляция обеспечивает сокрытие, но не является им!
Спасибо за уточнение и пояснение
Принципи ООП класно описано, але в кінці, то вже hight level! Дякую за контент!
Спасибо за отзыв)
дзякуй
Кали ласка
Действительно - простое и доходчивое объяснение!
Спасибо за отзыв
То что нужно! Спасибо Евгений!
Пожалуйста
Как же это вовремя) заранее спасибо!) приступаем к просмотру)
👍
Спасибо за твои труды!
Всегда пожалуйста
Спасибо за видео! Ты смог объяснить концепции. Но примеры - тихий ужас. Вот как свойство VIN может быть приватным свойством класса, если вин должен быть уникальным у каждого инстанса?
Вперёд в топы, отлично все объяснено!)
Спасибо за поддержку
Очень подробно разжёвано. Я аж даже на мгновение почувствовал себя умным)
👍
Спасибо, было очень доступно
Пожалуйста
Полиморфизм - это когда наоборот. Дочерний класс наследуется от нескольких родителей, в каждом из которых есть одноименный метод с разными типами параметров. А дальше в зависимости от типа параметра выбирается метод из того родителя, где тип параметра совпадает с передаваемым.
Я встречал минимум 3 разных объяснения. А то что вы описали немного похоже на Dimond problem
ну вообще да, полиморфизм в js это когда в классе родителя определён метод, и когда в дочернем классе мы переопределяем этот метод , то мы получаем результат для этого дочернего т.е. способность объекта использовать один метод для производных классов, получая разный результат
Респект, спасибо за качественный материал.
Спасибо за отзыв)
Функциональное программирование и процедурное программирование не одно и тоже. Функциональное программирование возможно в JS благодаря наличию так называемых "функций первого класса".
👍
А ты хорош
Спасибо
Хорошее видео. Сложная тема простым языком.
Спасибо за отзыв)
Отличное объяснения теперь стало ясно как работает ООП
Отлично!)
Очень ждём курс по js. Спасибо!!
Пожалуйста
Очень доступно, спасибо!
Пожалуйста
Супер подача, спасибо
Пожалуйста
Спасибо, за твои уроки. С удовольствием смотрю.
Немного уточнить хотел. На 20:27 в последней строке const mi8 = ....
Там наверное ты хотел указать new Helicopter(... ?
Да, там должен быть класс вертолёт
Немного отсебятины добавлю. Изначально я С++ дев и когда изучал JS, то пытался все делать через ООП. Чуть мозг не сломал 🙂 Как-то не очень получалось даже с ES6 апдейтом. В TS уже лучше. По-моему ООП стоит изучать с С++ (включая Java и C#), но это мое мнение
Да, в JS ООП очень не похоже на всё остальное, даже с учётом нового синтаксиса классов. А когда узнаешь, что под капотом прототипы, то усё…)
В С++, Java,. C# - объект и инстанс класса есть одно и тоже. А для Javascript приходиться еще выделять объект в отдельную сущность из-за заложенного в этот язык прототипного наследования. Я согласен с вами полностью, чистое ООП надо начинать изучать не с JS, а именно с Java или C#, которые были изначально спроектированы под данную парадигму. А вот с C++ все сложнее, там заложено множественное наследование, и сам язык все-таки ближе к процедурности чем к ООП.
Очень очень Чётко! 🌠🛠️
Спасибо
На 15:20, наверное, должно быть new AutoFactory
Да, опечатка(
Нормально, но (очень сильно докопался) хотелось бы четкой фразы что процедурное != функциональное программирование(подход).
А напишите прям комментом различия!) Думаю всем будет полезно
Отличное видео, спасибо.
Пожалуйста
на 8:31 в последней строке будет "Tesla 3 Model - 2019"
да, опечатка
Хорошее видео. Спасибо!
Но почему не была затронута тема ассоциации?) Она же вроде рука об руку идёт с агрегацией.
¯\ _(ツ)_/¯
Спасибо. Полезно.
Пожалуйста
Еще бы на английском найти такое видео , с таким хорошим обьяснением
А почему не подходит вариант на русском?
@@YauhenKavalchuk подходит чтобы понять. Но интервью на английсом придется проходить
Ты хороший
Спасибо
топчик бро, люблю смотреть твои видосики
Спасибо
@@YauhenKavalchuk было б здорово еще упомянуть статические поля и модификатор доступа protected
Благодарю!
Пожалуйста
качественно, спасибо!
Спасибо за отзыв
Отличное видео
Спасибо)
годно!
Спасибо
Инкапсуляция - это объединение данных и функций в одном объекте, а также сокрытие данных там, где это есть. В js и python нет сокрытия данных
ок
Нет, объединение данных и методов их обработки - это определение понятия класса, а не инкапсуляции. Кроме того, инкапсуляция ничего ни от кого не скрывыет. Нет такой задачи. Например: приватная секция классов ничего ни от кого не скрывает. Любой желающий может полюбоваться деталями реализации.
9:14 При обращению к классу подобным образом консоль выводит undefined (за исключением Auto.name = "Auto" имя класса), в TS вообще так обратиться нельзя. А даже если найдется пользователь который через инструменты разработчика найдет наш класс и что-то там поменяет, какая разница ведь при перезагрузке страницы все сбросится. То же самое если пользователь нажмет f12 и начнет удалять теги.
Концепция инкапсуляции занятна, но разве она широко относится к JavaScript? Может что-то не понимаю, но по ощущениям вся инкапсуляция в js сводится к не использованию метода eval в пользовательском вводе.
Полиморфизм - зачем нам создавать несколько дочерних классов с одним и тем-же методом и из них брать метод родительского? Можно на основе класса Auto создать объекты, скидать их в массив и так же проитерироваться по элементам с вызовом функции. Эффект тот же, кода и путаницы меньше. Или это своего рода диверсификация активов?)
Через имя класса можно обратиться к статическим свойствам и методам.
Спасибо!
Пожалуйста
4:40 А как же перегрузка конструктора? В C# такое есть.
👍
👍
No entendí pero sigue así xD
Gracias)
Годно
Благодарю
Вроде как понятно, но запутано. 9:13 Через имя класса множно обратиться только к статическим свойствам и методам.
🤷♂️
Лойс
Nice)
Полиморфизм показанн неправильно !
Не была учтена перегрузка методов что является ключевым моментом в полиморфизме.
👍 согласен, есть такой нюанс
#1
#1.1
👍
Возможно самое понятное видео про ООП
ООП парадигма инкапсуляция наследование полиморфизм агрегация композиция интерфейс айпскрипт Джаваскрипт js ts typeScript JavaScript
👍
Топчик
Спасибо
Мб я чего-то не знаю, но вроде как появились в жс рельса, только вроде ещё не всё поддерживает, полифил нужен
Что-то я не совсем понял о чём вы говорите(
@@YauhenKavalchuk про модификаторы в js, # добавили
Да, добавили, только они даже пока ещё не в стандарте. В следующем году должны добавить
18:55 не классы создаются а экземпляры этих классов. т.е. объекты
Да, верно
функциональное программирование ≠ процедурное программирование
Об этом уже написали, но не указали отличия
видео хорошее, но допущено 3 опечатки((
8:30, 15:20, 20:23
Не всегда удаётся за всем уследить, особенно в видео с большим количеством кода, да ещё с копированием, что бы создать анимацию
Не многовато О подряд?
Многовато, но по другому никак
"Об ООП"
Видеокаст называется «Просто О»
Ну блин джаваскрипт это ж скрипт и своей терминологии скрипт это процедура. Все ооп в js это слово this и прототип
Ну, по сути, да
об
Да, я знаю правила русского языка, просто сам видеокаст называется «просто о», поэтому и не стал менять
@@YauhenKavalchuk я дико извиняюсь, может назвать рубрику "просто про" ?
Уже снято 9 выпусков, нет смысла переименовывать
Ничего не понял
¯\ _(ツ)_/¯
Видно как у всех, тупо перечитал книгу
Ну попробуйте рассказать то, чего нету в книгах и других аналогичных видео. Я с удовольствием посмотрю, или почитаю
Как-то много неточностей, часто тест кода просто неправилен или написано лишнее. Дизлайк.
Пересмотрев видео я заметил только 3 неточности, это много?
@@YauhenKavalchuk для человека, которых других обучает, это очень много.
в композиции у меня не работает почему-то метод start() для объекта, созданного через new Car(). пишет "undefined".
если вызывать методы внутренних объектов по отдельности, например engine.start(), то работает.
в чём же может быть дело?
понял, в чём дело. метод start() срабатывает, но никаких значений не возвращает. ожидал, что вернёт разом всё, что возвращают методы start() всех вложенных объектов: Engine is started, Wiring is started, FuelPump is started
Хорошо что разобрались самостоятельно!