Просто о ООП (Парадигмы ООП)
HTML-код
- Опубликовано: 22 май 2024
- #YauhenK #webDev #ПростоО #OOP
Добро пожаловать в очередной выпуск видеокаста, «Просто о».
И тема сегодняшнего урока - это парадигма объектно-ориентированного программирования. Основная идея данного видео, максимально просто и с наглядными примерами дать объяснения основным понятиям ООП.
Мы рассмотрим такие концепции, как объект, класс, экземпляр класса, наследование, инкапсуляция, полиморфизм, абстракция, интерфейс, композиция и агрегация.
Примеры кода будут на TypeScript и Javascript, однако имейте ввиду что все концепции и парадигмы применимы практически к любому языку программированию
✒ Timeline:
✔ 0:00 - Введение
✔ 1:01 - Процедурное программирование (ФП)
✔ 2:17 - Объектно-ориентированное программирование (ООП)
✔ 2:43 - Объект
✔ 3:51 - Класс
✔ 5:40 - Экземпляр класса
✔ 6:47 - Наследование
✔ 8:47 - Инкапсуляция
✔ 11:02 - Полиморфизм
✔ 13:53 - Интерфейс
✔ 15:57 - Абстракция
✔ 17:47 - Композиция
✔ 19:41 - Агрегация
✔ 20:48 - Рекомендации
✒ Полезные ссылки:
✔ SOLID: • Просто о SOLID (Принци...
✔ Шаблоны проектирования (плейлист): • JavaScript Паттерны
✒ Полный список готовых и планируемых курсов:
✔ Trello: trello.com/b/R6rD7qq8
✒ Автор курса:
✔ RUclips: / yauhenkavalchuk
✔ Instagram: / yauhenkavalchuk
✔ Twitter: / yauhenkavalchuk
✔ VK: YauhenKavalchuk
✔ LinkedIn: / yauhenkavalchuk
✔ GitHub: github.com/YauhenKavalchuk
✔ VK (Группа): webdevcom
✒ Поддержать развитие канала: github.com/YauhenKavalchuk/yo...
Так вот какое видео об ООП я ждал все это время... Ютуб чик, подключай алгоритмы - годно та.
Хотелось бы надеяться, что подключит)
Большая тебе благодарность! Приятно смотреть: всё просто, понятно. Пожалуйста, продолжай! Ты делаешь нашу жизнь лучше: я углубился в понимании ООП)
Спасибо большое за поддержку!)
@@YauhenKavalchuk будет просто о алгоритмах и структурах данных?
Евгений, как всегда просто и понятно о сложных вещах, у Вас талант!!!
Спасибо
Оказывается ООП еще надо подучить ))) огромное спасибо за материал!!
Спасибо за отзыв!
Шикарное объяснение! ООП стало еще понятней. Лайк, репост!
Спасибо
В очередной раз благодарю за педагогически доходчивую подачу материала 👌
Пожалуйста
Спасибо вам огромное! Это то, что нужно! Ваше видео помогло собрать в кучу всю информацию, которая была в голове кусками.
Пожалуйста)
Сколько я видео пересмотрел об ООП, твоё самое лучшее, понимание приходит просто моментально! Спасибо тебе огромное!
Спасибо большое за отзыв!)
Очередной раз убедился, что ты один из немногих, который действительно может доступно, доходчиво и главное интересно объяснить! Спасибо огромное, за то что ты делаешь!
Спасибо большое за поддержку
Отлично, от тебя и ждал так как все понятно и просто обесняешь)
Спасибо за отзыв)
Спасибо, давно ждал такого хорошего урока по ООП на примере JavaScript.
Пожалуйста
Спасибо за твои труды! Шикарное видео!
Как все просто на самом деле! Столько разных роликов на эту тему и книг, а понять что-либо из них крайне тяжело. Все заумно и запутанно. А здесь и просто, и понятно.
Евгений, у тебя явно талант преподавания! Может стоит этим заняться профессионально?
PS: очень не хватает именно твоих уроков по алгоритмам и структурам данных, желательно на примере JavaScript. Уверен: желающих на эту тему будет немало.
Я не могу заниматься преподаванием профессионально, т.к. никогда не буду получать столько, сколько разработчик
Это наверное самое лёгкое объяснение ООП на русском ютубе
👍
@@andynaz7044 нет, включал фоном, когда смотреть нечего было
@@andynaz7044 я же там написал, что наверное или какие-то проблемы с восприятием текстовой информации?
@@andynaz7044 или что ты хочешь созвониться и помочь мне понять? Видеосвязь по телеграмму устроит?
@@andynaz7044 или этот комментарий к комментарию с чем-то связан? Для чего он тут?
В примере с наследованием на 8:30 после переопределения this.model = `${model} Model`; и вызвав родительский метод teslaAuto.getAutoType() мы получим
//Tesla 3 Model - 2019, а не //Tesla 3 - 2019 как на скрине у ТС.
Видео класс, спасибо автору.
Спасибо за отзыв, да отпечатался в выводимом результате
Очень долго ждал подобное видео с твоей подачей, спасибо большое)
Пожалуйста)
Прекрасное видео, обычно не оставляю комментарии, но здесь никак иначе, продолжайте в том же духе! п.с. из этой серии посмотрел бы такое же видео про ФП, может быть интересно
Спасибо за отзыв
Супер! Спасибо! Наглядно очень
Спасибо большое
дзякуй
Кали ласка
Шикарное видео, приятно от каждого слова! =)
Спасибо большое за отзыв!
Один из лучших видосов про ооп, коротко, понятно, без лишней воды и тягомотины. Автору спасибо !
Пожалуйста
Спасибо, за твои уроки. С удовольствием смотрю.
Немного уточнить хотел. На 20:27 в последней строке const mi8 = ....
Там наверное ты хотел указать new Helicopter(... ?
Да, там должен быть класс вертолёт
То что нужно! Спасибо Евгений!
Пожалуйста
Вперёд в топы, отлично все объяснено!)
Спасибо за поддержку
Спасибо, было очень доступно
Пожалуйста
Спасибо за твои труды!
Всегда пожалуйста
Как же это вовремя) заранее спасибо!) приступаем к просмотру)
👍
Действительно - простое и доходчивое объяснение!
Спасибо за отзыв
Очень подробно разжёвано. Я аж даже на мгновение почувствовал себя умным)
👍
Спасибо за старания! У тебя талант не только в разработке, но и к преподаванию.
Спасибо большое за отзыв
Респект, спасибо за качественный материал.
Спасибо за отзыв)
Спасибо за видео! Ты смог объяснить концепции. Но примеры - тихий ужас. Вот как свойство VIN может быть приватным свойством класса, если вин должен быть уникальным у каждого инстанса?
Супер, только вот тема инкапсуляции и сокрытия, как по мне, не очень раскрыта. Точнее там используется слово, которое можно по разному трактовать(по крайней мере, я так думаю). Самое главное, что нужно запомнить: инкапсуляция обеспечивает сокрытие, но не является им!
Спасибо за уточнение и пояснение
Очень доступно, спасибо!
Пожалуйста
Хорошее видео. Сложная тема простым языком.
Спасибо за отзыв)
Супер подача, спасибо
Пожалуйста
Очень ждём курс по js. Спасибо!!
Пожалуйста
Хорошее видео. Спасибо!
Но почему не была затронута тема ассоциации?) Она же вроде рука об руку идёт с агрегацией.
¯\ _(ツ)_/¯
На 15:20, наверное, должно быть new AutoFactory
Да, опечатка(
9:14 При обращению к классу подобным образом консоль выводит undefined (за исключением Auto.name = "Auto" имя класса), в TS вообще так обратиться нельзя. А даже если найдется пользователь который через инструменты разработчика найдет наш класс и что-то там поменяет, какая разница ведь при перезагрузке страницы все сбросится. То же самое если пользователь нажмет f12 и начнет удалять теги.
Концепция инкапсуляции занятна, но разве она широко относится к JavaScript? Может что-то не понимаю, но по ощущениям вся инкапсуляция в js сводится к не использованию метода eval в пользовательском вводе.
Полиморфизм - зачем нам создавать несколько дочерних классов с одним и тем-же методом и из них брать метод родительского? Можно на основе класса Auto создать объекты, скидать их в массив и так же проитерироваться по элементам с вызовом функции. Эффект тот же, кода и путаницы меньше. Или это своего рода диверсификация активов?)
Через имя класса можно обратиться к статическим свойствам и методам.
Отличное видео, спасибо.
Пожалуйста
Отличное объяснения теперь стало ясно как работает ООП
Отлично!)
Спасибо. Полезно.
Пожалуйста
Очень очень Чётко! 🌠🛠️
Спасибо
А ты хорош
Спасибо
топчик бро, люблю смотреть твои видосики
Спасибо
@@YauhenKavalchuk было б здорово еще упомянуть статические поля и модификатор доступа protected
Немного отсебятины добавлю. Изначально я С++ дев и когда изучал JS, то пытался все делать через ООП. Чуть мозг не сломал 🙂 Как-то не очень получалось даже с ES6 апдейтом. В TS уже лучше. По-моему ООП стоит изучать с С++ (включая Java и C#), но это мое мнение
Да, в JS ООП очень не похоже на всё остальное, даже с учётом нового синтаксиса классов. А когда узнаешь, что под капотом прототипы, то усё…)
В С++, Java,. C# - объект и инстанс класса есть одно и тоже. А для Javascript приходиться еще выделять объект в отдельную сущность из-за заложенного в этот язык прототипного наследования. Я согласен с вами полностью, чистое ООП надо начинать изучать не с JS, а именно с Java или C#, которые были изначально спроектированы под данную парадигму. А вот с C++ все сложнее, там заложено множественное наследование, и сам язык все-таки ближе к процедурности чем к ООП.
Полиморфизм - это когда наоборот. Дочерний класс наследуется от нескольких родителей, в каждом из которых есть одноименный метод с разными типами параметров. А дальше в зависимости от типа параметра выбирается метод из того родителя, где тип параметра совпадает с передаваемым.
Я встречал минимум 3 разных объяснения. А то что вы описали немного похоже на Dimond problem
ну вообще да, полиморфизм в js это когда в классе родителя определён метод, и когда в дочернем классе мы переопределяем этот метод , то мы получаем результат для этого дочернего т.е. способность объекта использовать один метод для производных классов, получая разный результат
Ты хороший
Спасибо
качественно, спасибо!
Спасибо за отзыв
Принципи ООП класно описано, але в кінці, то вже hight level! Дякую за контент!
Спасибо за отзыв)
Нормально, но (очень сильно докопался) хотелось бы четкой фразы что процедурное != функциональное программирование(подход).
А напишите прям комментом различия!) Думаю всем будет полезно
Благодарю!
Пожалуйста
на 8:31 в последней строке будет "Tesla 3 Model - 2019"
да, опечатка
4:40 А как же перегрузка конструктора? В C# такое есть.
Отличное видео
Спасибо)
Спасибо!
Пожалуйста
Функциональное программирование и процедурное программирование не одно и тоже. Функциональное программирование возможно в JS благодаря наличию так называемых "функций первого класса".
👍
Инкапсуляция - это объединение данных и функций в одном объекте, а также сокрытие данных там, где это есть. В js и python нет сокрытия данных
ок
Нет, объединение данных и методов их обработки - это определение понятия класса, а не инкапсуляции. Кроме того, инкапсуляция ничего ни от кого не скрывыет. Нет такой задачи. Например: приватная секция классов ничего ни от кого не скрывает. Любой желающий может полюбоваться деталями реализации.
#1
#1.1
👍
No entendí pero sigue así xD
Gracias)
Еще бы на английском найти такое видео , с таким хорошим обьяснением
А почему не подходит вариант на русском?
@@YauhenKavalchuk подходит чтобы понять. Но интервью на английсом придется проходить
Мб я чего-то не знаю, но вроде как появились в жс рельса, только вроде ещё не всё поддерживает, полифил нужен
Что-то я не совсем понял о чём вы говорите(
@@YauhenKavalchuk про модификаторы в js, # добавили
Да, добавили, только они даже пока ещё не в стандарте. В следующем году должны добавить
Түсіне алмай жүр едім, мен үшін қиын болып еді,керемет түсіндіріп бердің,үлкен рахмет!
Пожалуйста)
Возможно самое понятное видео про ООП
ООП парадигма инкапсуляция наследование полиморфизм агрегация композиция интерфейс айпскрипт Джаваскрипт js ts typeScript JavaScript
👍
годно!
Спасибо
Не многовато О подряд?
Многовато, но по другому никак
Годно
Благодарю
Лойс
Nice)
Вроде как понятно, но запутано. 9:13 Через имя класса множно обратиться только к статическим свойствам и методам.
🤷♂️
18:55 не классы создаются а экземпляры этих классов. т.е. объекты
Да, верно
Полиморфизм показанн неправильно !
Не была учтена перегрузка методов что является ключевым моментом в полиморфизме.
👍 согласен, есть такой нюанс
👍
👍
Топчик
Спасибо
функциональное программирование ≠ процедурное программирование
Об этом уже написали, но не указали отличия
видео хорошее, но допущено 3 опечатки((
8:30, 15:20, 20:23
Не всегда удаётся за всем уследить, особенно в видео с большим количеством кода, да ещё с копированием, что бы создать анимацию
об
Да, я знаю правила русского языка, просто сам видеокаст называется «просто о», поэтому и не стал менять
@@YauhenKavalchuk я дико извиняюсь, может назвать рубрику "просто про" ?
Уже снято 9 выпусков, нет смысла переименовывать
"Об ООП"
Видеокаст называется «Просто О»
Ну блин джаваскрипт это ж скрипт и своей терминологии скрипт это процедура. Все ооп в js это слово this и прототип
Ну, по сути, да
Ничего не понял
¯\ _(ツ)_/¯
Видно как у всех, тупо перечитал книгу
Ну попробуйте рассказать то, чего нету в книгах и других аналогичных видео. Я с удовольствием посмотрю, или почитаю
Как-то много неточностей, часто тест кода просто неправилен или написано лишнее. Дизлайк.
Пересмотрев видео я заметил только 3 неточности, это много?
@@YauhenKavalchuk для человека, которых других обучает, это очень много.
в композиции у меня не работает почему-то метод start() для объекта, созданного через new Car(). пишет "undefined".
если вызывать методы внутренних объектов по отдельности, например engine.start(), то работает.
в чём же может быть дело?
понял, в чём дело. метод start() срабатывает, но никаких значений не возвращает. ожидал, что вернёт разом всё, что возвращают методы start() всех вложенных объектов: Engine is started, Wiring is started, FuelPump is started
Хорошо что разобрались самостоятельно!