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