THE MOST FREQUENT MISCONCEPTIONS ABOUT OOP

  Рет қаралды 560,952

ExtremeCode

ExtremeCode

Күн бұрын

Пікірлер: 1 000
@ExtremeCode
@ExtremeCode 2 жыл бұрын
Братан, хорош, давай подпишись на наш Telegram канал, мы там байки и кулстори травим 🖤 t.me/extremecode
@Veyron104
@Veyron104 Жыл бұрын
малёх не понял про наследование в жс, но в шарпе же тоже можно дописать методы в родительский класс и это ничего не сломает, но только если эти методы будут использованы только в одном из наследников то ведь лучше как-то по другому это реализовать? Я такое "понял" не сам, мне помогли (
@СергейИванов-ы7ч5ы
@СергейИванов-ы7ч5ы Жыл бұрын
чтобы быть такой лошарой как ты.....
@adbln1
@adbln1 5 жыл бұрын
"Девять парадигм ООП" - половину видоса бомбит на инкапсуляцию.
@unnamed2000
@unnamed2000 5 жыл бұрын
> >
@ddystopia8091
@ddystopia8091 5 жыл бұрын
kzbin.info/www/bejne/m6fXpWWPi56Dhq8 Шестая с половиной парадигма ООП
@tyota
@tyota 2 жыл бұрын
Сокрытие
@-mishana-
@-mishana- Жыл бұрын
Инкопсуляция
@mn4840
@mn4840 Жыл бұрын
Сокрыть не получилось )
@думдум-б2д
@думдум-б2д 5 жыл бұрын
Все ясно. Экстримкод-это сокрытие, инкапсуляция-это харчок. Наконец-то разобрался
@bleulegend
@bleulegend 2 жыл бұрын
Почему 630 лайков но нету ответов?
@deleted-ox5jl
@deleted-ox5jl 2 жыл бұрын
@@bleulegend ты все испортил
@jleenvanyes5219
@jleenvanyes5219 2 жыл бұрын
@@deleted-ox5jl ты все испортил
@thetraveler7779
@thetraveler7779 2 жыл бұрын
@@bleulegend ты всё испортил
@artur8904
@artur8904 2 жыл бұрын
@@thetraveler7779 ты все испортил
@alshainbify
@alshainbify 5 жыл бұрын
От инкапсуляции до Марса в одно сокрытие
@loam
@loam 5 жыл бұрын
Менее чем в 12 парсеков!
@artemfedurin6726
@artemfedurin6726 5 жыл бұрын
*вскрытие :D
@rubik6169
@rubik6169 5 жыл бұрын
Я понял : полиморфизм это сокрытие, инкапсуляция это сокрытие, а наследование это открытие. Спасибо авторам канала!
@alexb7888
@alexb7888 5 жыл бұрын
При наследовании ты можешь переопределить публичный метод родителя, чем закрыть изначальную реализацию, следовательно наследование это сокрытие, пусть и косвенно! Сдедовательно весь ООП направлен на то, чтобы что-то скрывать! Срочно пишем в рен тв с этими догадками, они обязаны разобраться
@nativecode770
@nativecode770 2 жыл бұрын
:rofl:
@Yilativ7
@Yilativ7 2 жыл бұрын
@@alexb7888 А разве можно закрыть публичный метод? Вроде-бы наоборот, можно только расширять видимость
@alexb7888
@alexb7888 2 жыл бұрын
@@Yilativ7 ну смотри, был public testMethod который складывал 2 и 2, мы унаследовались, переопределили его и теперь он делает 2 + 5 условно, изначальную задумку мы скрыли) А заодно нарушили принцип подстановки Барбары Лисков, который вроде как один из базовых, но не вяжется с ООП и реально в проектах редко соблюдается
@Yilativ7
@Yilativ7 2 жыл бұрын
@@alexb7888 Блин, я, кажись, неправильно вас понял. Я подумал, что закрыть - значит сделать приватным вместо публичного) Тогда вопрос снят
@ExtremeCode
@ExtremeCode 5 жыл бұрын
Собираем петицию, за то чтобы официально включить OPESDULATION в состав ООП. 1 голос - 1 лайк
@tankowot
@tankowot 5 жыл бұрын
Бравооо
@Evgenevich
@Evgenevich 5 жыл бұрын
нет, не надо, я к этой парадигме не готов
@gagikpog
@gagikpog 5 жыл бұрын
Где подпись ставить нужно?
@РоманМаксимов-ц2с
@РоманМаксимов-ц2с 5 жыл бұрын
А можно внести правки в концепцию? Так сказать добавить параметр степени тяжести. Ну и соответственно наказание сделать гибким. Заменить объект применения и область применения объекта. А особо ретивым попросить присесть на пирамидку и подумать над своим кодом. (Колыбель Иуды)
@astolfo_5071
@astolfo_5071 5 жыл бұрын
Жестоко
@ivaneh3860
@ivaneh3860 5 жыл бұрын
Спасибо за видео, наконец-то понял, что инкапсуляция - это сокрытие
@catswill
@catswill 4 жыл бұрын
Пидор)
@n3gve
@n3gve 4 жыл бұрын
Ох твою мамку в этот момент возжелали все остальные в этих каментах
@ХумоюнЮлдашев-з3ч
@ХумоюнЮлдашев-з3ч 3 жыл бұрын
Пхахахахах
@mr.plague8134
@mr.plague8134 5 жыл бұрын
Только ради колонизации Марса: инкапсуляция - это сокрытие.
@nikusrotuslomatus1879
@nikusrotuslomatus1879 3 жыл бұрын
Абсолютно не согласен инкапсуляция это харчок.
@shicklgrubber
@shicklgrubber 3 жыл бұрын
Давайте хором. ИНКАПСУЛЯЦИЯ - ЭТО СОКРЫТИЕ. ИНКАПСУЛЯЦИЯ - ЭТО СОКРЫТИЕ. ИНКАПСУЛЯЦИЯ - ЭТО СОКРЫТИЕ.
@shicklgrubber
@shicklgrubber 3 жыл бұрын
Надеюсь, автор привязан к ракете. А не лежит задницей вверх. Иначе есть опасность изменить орбиту Земли.
@KiraLis39
@KiraLis39 3 жыл бұрын
Нет, инкапсуляция - это не "сокрытие". Это кое-что более сложное, а сокрытие является лишь следствием данной механики.)
@a.o.yaroslavov
@a.o.yaroslavov 3 жыл бұрын
Слишком узкое определение, но верное.
@Unerty
@Unerty 5 жыл бұрын
Все говорят, что инкапсуляция - это сокрытие. Но что, если я скажу, что автор - харчок?
@ТочноНеКлевер
@ТочноНеКлевер 5 жыл бұрын
ну вщет Харчок сейчас помогает Бэду с обзорами на русское кино
@rustyshackleford9073
@rustyshackleford9073 5 жыл бұрын
Интересный факт: инкапсуляция - это сокрытие
@iryandriver
@iryandriver 5 жыл бұрын
осторожно, а то авторы этого канала сделают сокрытие твоей головы
@Evgenevich
@Evgenevich 5 жыл бұрын
дерзко
@ark-kun7221
@ark-kun7221 5 жыл бұрын
Только хотел написать эту правду:)))
@КостяКиндалюк
@КостяКиндалюк 5 жыл бұрын
Осторожнее, а то инкапсулируют пулю в твое тело с помощью пулемета, и сделают сокрытие твой башки)
@maxon17
@maxon17 5 жыл бұрын
@@iryandriver ТИХО! Мы пытаемся сделать вечный двигатель работающий на адском подгорании.
@flow2012est
@flow2012est 5 жыл бұрын
Инкапсуляция - это когда твоя мама держит тебя в секрете от твоего папы.
@MrPelmewka
@MrPelmewka 5 жыл бұрын
Сокрытие?
@12strel
@12strel 5 жыл бұрын
Или когда твоя мама держит от тебя в секрете каким методом и от какого предка она тебя создала
@minshuga257
@minshuga257 3 жыл бұрын
А сокрытие?
@andreysolomatov1552
@andreysolomatov1552 7 ай бұрын
Инкапсуляция - это когда твоя мама не позволяет твоему папе применить ремень самому непосредственно на твою попу - а определяет сама, как, сколько и в какое время допустимо - при получении запроса на это от папы.
@universeunity9970
@universeunity9970 3 ай бұрын
@@andreysolomatov1552 Нет, инкапсуляция это когда ты сам себя бьешь по попе ремнём тогда, когда этого захочет твоя мама)
@StanTheFirst
@StanTheFirst 5 жыл бұрын
Как приятно смотреть это видео - и шутки, от которых ржешь постоянно и, в то же время, разговор по делу. Отличный формат. Видео огонь!
@RobotN001
@RobotN001 5 жыл бұрын
если мат скрывают кряканьем , это сокрытие или инкапсуляция ? инкапсуляция совести ? )
@sirjorgenbjorgen2295
@sirjorgenbjorgen2295 5 жыл бұрын
Сокрытие это если бы он матом ничего не говорил, а так это инкапсуляция - так как он защищает свой компонент канал от другого компонента "цензура ютуб" и компонента "хейтеры в комментах" что подходит под второе определение, а так же мат понимают только те, кто знает это матное слово что подходит под первое определение инкапсуляции
@MrVikadin
@MrVikadin 5 жыл бұрын
ты спросил одно и тоже. если мат скрывают кряканьем, это сокрытие или сокрытие? Мы ведь решили, что инкапсуляция === сокрытие
@mayonnaizzee
@mayonnaizzee 5 жыл бұрын
Кря
@mmospanenko
@mmospanenko 5 жыл бұрын
Это утиная типизация
@Смешнодослез-ъ5ю
@Смешнодослез-ъ5ю 3 жыл бұрын
@@sirjorgenbjorgen2295 чувак ты крутой😂
@Dimarious.G
@Dimarious.G 5 жыл бұрын
Только не парадигмы, а принципы... Учи маслят правильно! :) Парадигмы: структурное П, функциональное П, ООП и т.п. Парадигма тут была одна -- ООП.
@brinza888
@brinza888 2 жыл бұрын
концепции
@ГарникГеворгян-ъ8о
@ГарникГеворгян-ъ8о Жыл бұрын
Спасибо за контент! Наконец-то посмотрел материал о программировании с улыбкой и слезами счастья на лице, а не глубокой депрессии :D насмеялся от души, класс))
@radimbig
@radimbig Жыл бұрын
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
@АндрейКругликов-у1н
@АндрейКругликов-у1н 3 жыл бұрын
твой стиль изложения информации божественен. буду надеяться что ты напилишь еще много интересного контента
@АнтонТимошенко-м2п
@АнтонТимошенко-м2п 5 жыл бұрын
Как всегда подача просто идеальна! Ваш канал и CODE BLOG лучшее что только есть!) Жду с нетерпением выпуск про SOLID.
@Brain-0fff
@Brain-0fff 5 жыл бұрын
Ну все, все, уговорил, Коль. Женюсь на тебе :* Слишком сладкие видосы
@vasilys9776
@vasilys9776 5 жыл бұрын
Ты хочешь получить доступ к ссылкам?
@Uni-Coder
@Uni-Coder 5 жыл бұрын
Вот эту фразу надо было сокрыть
@fixmedev521
@fixmedev521 5 жыл бұрын
Суть всего видоса: ООП это сокрытие
@12strel
@12strel 5 жыл бұрын
Суть всего это то что программист это и есть сокрытие он Че-то там пишет но реально нихрена никому не может объяснить как и зачем он это делает.
@fedmunty4051
@fedmunty4051 3 жыл бұрын
В ООП 3 буквы, а это значит, что ООП придумали иллюминаты, так как их символ - треугольник, у которого какраз 3 стороны. е изучайте ООП, это помогает иллюминатам захватить мир. Все, кто становится ООП программистами, становятся рабами системы! Одумайтесь! Ещё есть шанс всё изменить!
@Alex__88
@Alex__88 Жыл бұрын
Братан, хорош, давай, давай вперёд! Контент в кайф, можно еще? Вообще красавчик! Можно вот этого вот почаще?
@disdain1679
@disdain1679 5 ай бұрын
Толковое видео, поднимает важные вопросы! 5 копеек от синьора-помидора: ООП в изначальном понимании - это представление программы как множества Объектов(Абстракций), обменивающихся между собой сообщениями через свои Интерфейсы. Абстракция - обобщение, скрывающее детали устройства некой сущности, упрощённая сущность. Сокрытие данных, Абстракция, Интерфейс, Полиморфизм - ключевые понтятия. Инкапсуляция (объединение данных и поведения) опциональна, данные Сущности могут быть отделены от её поведения (анемичные модели), поведение становится отдельным объектом (абстракцией). Объекты всё ещё обмениваются сообщениями. Объекты данных предают данные своим объектам поведения, содрежащим методы. Сервисы отправляют сообщения другу другу (вызывая методы). Наследование - это способ содания нового объекта расширением имеющегося объекта. Насделование также опциональное понятие в классическом ООП. Вполне возможнен "обмен сообщениями между абстракциями" без наследования. Абстракции могут строится без классов, например, с помощью функций, модулей, файлов или структукр данных (дерево, ассоциативный массив и т.п.), частично использовать данные и поведение имеющихся "объектов" без прямого наследования. Зачем всё это? Для Полиморфизма, он является конечной целью ООП. Объеты взаимодействуют посредством Интерфейсов. Интерфейс - внешняя часть поведения/данных объекта(любой абстракции) доступная другим объектам. Интерфейс - упрощённый способ внешнего взаимодействия, игнорирующий внутренее устройство объекта. Объекты предоставляющие вовне одинаковый Интерфейс неотличимы для внешного окружения, а потому взаимозаменяемы. Полиморфизм - возможность одинакового взаимодействия с различными объектами через их общую, универсальную внешнюю часть (интерфейс). Например, 2 объекта полиморфны по интерфейсу, если имеют одинаковый интерфейс при различном устройстве и поведении.
@AlexAlex-rc9di
@AlexAlex-rc9di 5 жыл бұрын
В ООП самое главное это Правила. Почему-то многие об этом забывают. Смысл в том, чтоб на проект, который писал Вася, и был успешно уволен, пришел Петя, который сходу начал работу, а не начал вековое изучение проекта, параллельно перестраивая свой ассоциативный ряд с ассоциативным рядом Пети. Чем строже правила, патерны, ограничения, тем проще всего этого достичь. Теряется дата ориентация, но лучше потерять 30% на производительности, чем 500% на времени разработки.
@Ca1vema
@Ca1vema Жыл бұрын
Скажи это Васе, который был успешно уволен потому что на его место легко взять любого Петю.
@lamasnik
@lamasnik Жыл бұрын
На самом деле, Вася сам ушел, когда все понял :) а конвейер продолжил работать по своим паттернам :)
@denisivlentiev5825
@denisivlentiev5825 3 жыл бұрын
Манера и подача информации на высшем уровне!! И смешно и интересно ! 👍😂
@franklin6792
@franklin6792 2 жыл бұрын
Жаль что при рождении он взял способность "сын маминой подруги", но не взял "мамкин бизнесмен", вот и задушили его язык джавой.
@АркадийКулешов-м8н
@АркадийКулешов-м8н 5 жыл бұрын
Видос ещё не смотрел, но заранее скажу - Инкапсуляция это сокрытие.
@EnDeRBeaT
@EnDeRBeaT 5 жыл бұрын
7:00 2023 год. SpaceX запускает рейсовых Николаев на жопной тяге на Марс.
@NoiroStar
@NoiroStar 5 жыл бұрын
А секрет двигателя инкапсулировал от общественности)
@dmytro-pro
@dmytro-pro 5 жыл бұрын
А что если я скажу, что парадигма - это весь ООП, а не один из его принципов?
@ЯківСинявський
@ЯківСинявський 3 жыл бұрын
Есть зажигание! Реактивный двигатель работает на 100500% Долетим до Марса за пару минут
@bogdanbida8587
@bogdanbida8587 4 жыл бұрын
Сегодня на собеседовании, на ответ по вопросу "что такое инкапсуляция?" мне ответили что я описал сокрытие данных, и дополнили вопросом "но что тогда такое инкапсуляция?" я конкретно так завис, думая кто меня обманывает, как оказалось мое понятие инкапсуляции хромало.. Где ж было раньше это видео, нереально полезный контент, сразу лайк
@rowario
@rowario 3 жыл бұрын
как биткоин в конце 2017 люди в начале 2021: 🗿
@nikolaymatveychuk6145
@nikolaymatveychuk6145 5 жыл бұрын
Слышу что-то странное :) У ООП есть 3 базовых принципа: инкапсуляция, наследование и полиморфизм. Если своими словами, то: Инкапсуляция - нефиг наружу светить данные и методы, которые нужны только внутри конкретного блока кода. Это позволяет уменьшить общую сложность кода и для того, например, чтобы сложить 2 числа, программисту не придётся задумываться о том, в какой регистр какое число будет записано, а для показа окна не придётся изучать принципы работы видеобуфера и изучать особенности вызова WinAPI функций и все их параметры. Наследование - если класс B полностью реализует интерфейс класса A и при этом класс A является родовым понятием по отношению к классу B, то B стоит отнаследовать от A. Это в итоге позволит не дублировать код, а любое изменение, которое захочется внести в класс A неизбежно захочется внести и в класс B (то есть проблема "страшно менять предка" высосана из пальца) Полиморфизм - позволяет использовать один и тот же код для работы с разными типами данных. Для ООП это означает, что в нём нет необходимости создавать по дополнительному методу на каждый тип данных, а можно определить метод таким образом, чтобы он мог принимать разные типы данных на вход и правильно их обрабатывать (зачастую приводя их к некому базовому представлению и вызывая "основной" метод). Абстракция не считается и никогда не считалась базовым принципом ООП. Это просто идея о том, что код должен быть поделен на слои, где каждый слой скрывает в себе сложные детали предоставляя наружу простые и понятные интерфейсы более высокого уровня работы с информацией. При чём абстракция должна быть цельной и полной (то есть она не должна уменьшать функциональность по отношению к более низкому слою, чтобы не приходилось периодически работать с ним, и при этом она должна этот более низкий слой целиком и полностью скрывать, например нельзя строить абстракцию скрывающую под собой язык запросов, но в то же время в части методов просить передать указания по режиму оптимизации запроса, или просто кусок запроса, который будет добавлен к сгенерированному). Не ругаться ошибкой на вызов несуществующего метода - жуть какая :) прототипное ООП лучше классического?! - жуть в квадрате :) особенно когда нужен конструктор и деструктор, и когда их нужно унаследовать и немного изменить в потомках. Помню я эти танцы с бубном, через которые мне пришлось пройти, когда понадобилось такое сделать. Ведь в прототип нельзя положить уже готовый объект, так как если в конструкторе есть параметры, то они станут известны только в момент создания объекта-потомка (и для каждого объекта будут свои), а значит мы вынуждено делаем псевдоконструктор и настоящий, прототип создаём псевдоконструктором, а потом для объекта вызываем псевдоконструктор, после чего уже вызываем реальный, который унаследован от реального конструктора прототипа. Многие тогда вообще перестали наследование в js пользовать и реализовывали его через вызовы функции jquery.extend (или как-то так, не помню уже, давно было). И после этого Вы говорите, что зачем js классическое ООП, там и на прототипном хорошо жилось? Ну если js использовать для анимирования кнопочек - наверное да, но для чего-то серьёзного классическое ООП очень нужно.
@user-mr-m12312
@user-mr-m12312 4 жыл бұрын
@Keeper Holderson я бы ответил, что можно использовать паттерн прототип, или пул объектов, в зависимости от конкретизации. Хотя наверное в данном случае лучше вообще не использовать ооп-подход. А какой правильный ответ?
@user-mr-m12312
@user-mr-m12312 4 жыл бұрын
@Keeper Holderson понятно, спасибо за разъяснение! Почитаю поподробнее про кэш, то я в этом плаваю)
@user-mr-m12312
@user-mr-m12312 4 жыл бұрын
@Keeper Holderson хорошо, посмотрю, ещё раз спасибо!
@artemsokolov5007
@artemsokolov5007 5 жыл бұрын
ООП это и есть парадигма а то что тут рассказывается - это принципы или концепции
@adbln1
@adbln1 5 жыл бұрын
То что рассказывается - какие всё плохие что не так определяют инкапсуляцию.
@dxrpz1669
@dxrpz1669 5 жыл бұрын
ООП это сокрытие
@thetraveler7779
@thetraveler7779 4 жыл бұрын
@@adbln1 да мздит он, на самом деле все прекрасно понимают что имеется ввиду под сокрытием, а ему лишь бы к словам придраться, это больше субъективщеной пахнет с точки зрения собственного болезненного восприятия этого выражения.
@user-iw4xj4mn1t
@user-iw4xj4mn1t Жыл бұрын
Average Повторное использование fan: Average Ctrl C Ctrl V enjoyer:
@mymoney5536
@mymoney5536 3 жыл бұрын
Про опиздюляцию мало рассказал. Не понятно! Если можно, отдельный выпуск сделайте про опиздюляцию.
@losishche
@losishche 4 жыл бұрын
Автор - красавчик. После Пайтона в течение долгого времени не мог понять зачем вообще нужна вся эта страшная громадина правил работы с полифорфными типами в Java, зачем нужно так мучиться, когда можно не мучиться вовсе). И с null всегда удивляла в Java ситуация в контексте ООП
@Myaw-mrow
@Myaw-mrow 3 жыл бұрын
Замечательное видео, очень познавательно и забавно. Надеюсь я верно понял, что инкапсуляция это сокрытие. Удачи в успехах!
@ЕвгенийПашин-ш7д
@ЕвгенийПашин-ш7д 2 жыл бұрын
Опиздюляция - браво, автор )))))) Боже, этот ролик сделал мой день самым лучшим ))))
@АлексейСалихов-з4ч
@АлексейСалихов-з4ч 5 жыл бұрын
ис/ах (инкапсуляция - сокрытие, автор - харчок)
@talisman1104
@talisman1104 Жыл бұрын
Вот начал изучать ООП и могу сказать, что 8 из 10 ютуберов указывают инкапсуляцию как сокрытие. Ну ты и вникаешь это именно так. А девятый говорит, что за такой ответ при собесе делают атата и смеются над тобой, но в чём суть не объясняет. Твой мир тут же рушится и ты ничего не понимаешь кроме одного, что чему ты обучался все эти полгода ничего не стоят. И только здесь я нашёл разъяснение. Единственно теперь не ясно что такое полиморфизм. Вместо одного понятия дают целых три, но и эти не раскрывают, а дают лишь примеры использования
@cplusplusdude8189
@cplusplusdude8189 5 жыл бұрын
Чувак, мне хватило 5 мин твоего видео, чтобы задаться одним вопросом: "Что нужно долбить чтобы нести такую упоротую дичь?".
@КоляПолзунки
@КоляПолзунки 5 жыл бұрын
16:04 При вызове несуществующего метода вылетит исключение "unrecognized selector sent to instance". А при посылке сообщения нулю действительно ничего пре произойдет и будет возвращен нуль, чем часто очень удобно пользоваться при вызовах вида [[obj method1] method2], экономя на проверках на нуль (экономя в лаконичности, конечно)
@alexl7161
@alexl7161 5 жыл бұрын
Такая вещь, как какие-то ебаные факты - это всего лишь препятствие личному мнению аффтара, которое он выдает за факты
@ГриценкоРуслан
@ГриценкоРуслан 5 жыл бұрын
Спасибо, отличная работа. Давай скорее видео про SOLID
@kurpaty176
@kurpaty176 Жыл бұрын
Ну наконец-то нашел подтверждение тому, что инкапсуляция - это сокрытие. Спасибо!
@princessmary5556
@princessmary5556 Жыл бұрын
Инкапсуляция - не сокрытие.
@АлександрКопытенко
@АлександрКопытенко 5 жыл бұрын
+1 Согласен с автором: инкапсуляция - это сокрытие.
@mikhailkasyanov7432
@mikhailkasyanov7432 3 жыл бұрын
У меня прям знатно пригорело когда я где-то в статье увидел что-то вроде: "Ещё 12 принципов ООП SOLID,DRY,KISS"
@SirozhaOsminog
@SirozhaOsminog 5 жыл бұрын
Парадигма опиздюляция - то что надо. Всем DI, посоны)
@mcblack2010
@mcblack2010 2 ай бұрын
Класс! Интересно было б действительно послушать про принципы SOLID именно в твоем изложении. Подача рулит!
@doomox6001
@doomox6001 5 жыл бұрын
Кстати про SOLID было бы рили очень интересно послушать.
@TheKwadriga
@TheKwadriga 5 жыл бұрын
На счёт "повторного использования" как отдельной парадигмы, мне кажется, имеется в виду следующее: например, нахрена в ПХП интрефейсы? Да нахрен они там не нужны: всё то же самое можно сделать с помощью обыкновенных абстрактных методов: объявляешь такой и любой наследник Вынужден будет его реализовать. Но интерфейсы оказываются реально полезны в одном (и мне кажется, только в этом одном) случае: когда пишешь некую библиотеку, чтобы выложить её на гитхаб и её моного-много раз использовали другие программисты и поставили кучу звёздочек. Вот в данном случае ты изначально знаешь, что у не тебя нет никакого реального проекта, который ты пишешь на работе: у тебя вообще совершенно отдельный, строго утилитарный компонент, который можно будет впихнуть в любой проект. И вот чтобы его реально можно было впихнуть в любой проект (и сделать это относительно просто): заставь клиента реализовать вот эти интерфейсы, потому что только так тебе не нужно заморачиваться сложной проверкой входящих данных, да и документацию банально писать проще: указал интерфейсы, которые нужно реализовать клиенту - и уже понятно, как это использовать. Во всех остальных случаях использовать интерфейсы в ПХП если не вредно, то по крайней мере бесполезно. Отсюда и две парадигмы: "обычный ООП" для "проекта" и "ООП для повторного использования" для "библиотеки".
@a.o.yaroslavov
@a.o.yaroslavov 5 жыл бұрын
Есть по сути всего 3-4 парадигмы: императивная, декларативная, функциональная и сообщения (акторы); Все остальное - не парадигмы, а принципы и инструменты. Например, SOLID - принципы ООП, а, например, наследование - это инструмент с помощью которого достигают полиморфизма. Вкуриваете?
@koshchey42
@koshchey42 5 жыл бұрын
Википедия утверждает, что функциональное программирование - это разновидность декларативного.
@a.o.yaroslavov
@a.o.yaroslavov 5 жыл бұрын
@@koshchey42 Она нагло врёт. Или искренне ошибается. в противном случае все бы со Лиспа перешли на кобол.
@koshchey42
@koshchey42 5 жыл бұрын
Объясни, почему так. Я Лисп знаю очень слабо, Кобол совсем не знаю. Какой язык является декларативным по твоему мнению? Наследование не только позволяет реализовать полиморфизм. Наследование облегчает создание нового класса на базе существующего. Полиморфизм может быть и без наследования.
@a.o.yaroslavov
@a.o.yaroslavov 5 жыл бұрын
@@koshchey42 Чисто декларативный и вполне себе универсальный язык - XML. Описываешь схему и интерпретатор к ней и всё, у тебя новый язык DSL. В функциональном языке тебе придётся описывать код в виде формул, а не отношения и правила между объектами.
@koshchey42
@koshchey42 5 жыл бұрын
Чушь. XML - это базовый язык для создания других языков на его основе. На базе XML может быть создан язык любого типа (как язык программирования, так и язык описания данных). Сам по себе XML не является языком программирования.
@ДаниилГончаренко-г8я
@ДаниилГончаренко-г8я 5 жыл бұрын
Пздц, уже к середине видео поставил на паузу так как уже не мог вникать в происходящее из-за своего ржача))) Хотя дельные вещи толкаете, но в такой классной форме! Спасибо за материал и за подачу) Видос бомба))) P.S. Отныне слово Scriptизёр навсегда в моём лексиконе)))
@ЕвгенийСокирко-д1в
@ЕвгенийСокирко-д1в 5 жыл бұрын
Надо разобраться с SOLID, обязательно
@ДенисЯчменёв-щ8з
@ДенисЯчменёв-щ8з 2 жыл бұрын
Столько сокрытий, защиты, разные уровни абстракций. Тук-тук, я рефлексия, приятно познакомиться. Опиздюляция прям сильно нужная штука, её нужно вводить прям на самом начальном этапе обучения, а то порой долго доходит. И то не до всех(
@alexanders3928
@alexanders3928 5 жыл бұрын
Сижу бухаю пиво , ещё не смотрел, но сразу лайк)
@Jojoyouknow-p7l
@Jojoyouknow-p7l Ай бұрын
10:29 Полиморфизм имеет несколько форм... Сокрытие тавтологии?..
@vs8418
@vs8418 5 жыл бұрын
Сама по себе рефлексия в java не даёт кому-либо возможности получить доступ ко всему, что есть объект и что-то там поменять. Для получения такого доступа должен быть некий "энтри-поинт". Грубо говоря не зная Типа(Наименования) класса никто не сможет "развернуть" его кишочков. То есть Вася сидящий рядом с тобой за другим компом в душе неибущий что за код ты пишешь, не зная наименований твоих классов, нихрена сделать не сможет. Мало того в рантайме есть такой замечательный эффект как утеря(затирание) типа. Кто-то может подметить, что мы можем узнать наименование класса дернув его из кучи(извращенцы..), прочитав его бинарый "хедер", но и тут господа не всё просто т.к. сама куча это часть виртуальной машины, которая написана вообще на С, которая в свою очередь работает в потоке операционной системы со своими приколами и бла-бла-бла. В самой куче виртуальная машина для различных оптимизаций не только может но и меняет наименования ваших объектов, цепочек вызовов и т.д. - следствие строгой типизации(у каждого типа(выбрать нужное ударение) есть размер). Рефлексия - это такая фича для того, кто пишет конкретный код, всего лишь дополнительный инструмент, позволяющий более гибко работать. Как и нахера "луп" должен быть объектом(камень в руби) я понять не могу... Для избежания проблем сильного связывания есть паттерны проектирования. За иерархию глубиной в 5 потомков(вызовов), с характерным хрустом ломают руки(рекурсивная не счет), чтобы больше не писал, не писал вообще. Почему выбран пример с джава-скриптовыми прототипами вообще не догнал. Ведь объект типа class тоже объект ну и прокси никто не отменял.... Хз наверное я туповатый. Не до конца понял, что сложного в полиморфизме для ЯП со строгой типизацией? Тут наверное будет правильнее - "если вы начали с джава-скрипта, то вам будет туго с ЯП со строгой типизацией в котором есть дженерики, приведение(каст) до типа и т.д., но никак не наоборот...." Почему методы именуются с большой буквы? Или в Шарпе так принято? В примере на обжектив вы не выбрасываете его, типизированный ссыль не в инициализированном состоянии остался пока кто-то или что-то его не приберёт. С тем, что нет эксепшена соглашусь - странновато, бизнес так не напишешь, да и во многих языках такое даже скомпилировать не дадут.... Можно ли в следующем примере на шарпе для непроинициализрованной ссылки вызвать нечто wait(), или notify()? Да, да это вопрос, рили интересно, ни разу на нём не писал. Пародия на анонимный класс на джава-скрипт в виде явно объявленного интерфейса счёт(Account), который тут-же инициализирован(создан... как хотите) окончательно ставит точку в вопросе выборе первого ЯП. Такой язык должен быть строго-типизированным и точка. Да тяжело, да изначально не понятно, да дольше по времени, но зато потом на джава-скрипт без слёз не взглянешь, потом начинаешь понимать зачем появляются вещи аля тайпскрипт и другие свисто-перделки со стрикт модами и спецификациями. Принцип DRY не призывает тебя писать меньше кода. Он призывает проектировать полиморфно-иерархические структуры данных(хуясе сказанул), использование которых позволит тебе избавиться от дублирования кода... Вася не умеет проектировать. Не будь как Вася (с) DRY Парадигма 6,5 это та, за которую ломают культяпки(смотреть выше). SOLID это не парадигма, это правила, подход, набор принципов, хороший тон так сказать. Ну и все мы знаем, что правила можно нарушать в зависимости от выбранной рахитектуры приложения. Все зависит от инструмента, который вы пытаетесь реализовать. Комменты писал по ходу видео. Хорошо расслабил мозг и сорян если кого обидел. Ну и за видос спасибо, сдул так сказать пыль с теоретических основ.
@darkcrusaderzxc
@darkcrusaderzxc 5 жыл бұрын
Умеют же люди строчить миллион строк как будто индус, когда можно в двух словах все объяснить - сокрытие это инкапсуляция, а автор харчок.
@NotAStoryteller
@NotAStoryteller 9 ай бұрын
По поводу повторного использования хочу пояснить. Почему это часто выделяют в отдельный пункт. Дело в том, что наследования с полиморфизмом не достаточно для того, что бы гарантировать возможность повторного использования кода. Да, они часто бывают необходимы для этого, но их недостаточно. Простой пример: Делаете Вы класс предок, у которого два наследника. Оба наследника используют некоторый метод у предка. Повторное использование, казалось бы. Но не тут-то было. Вы, по тупости своей или лени, запихиваете часть кода, который должен быть в отдельном методе у наследников в тот самый метод предка, из-за чего добавление третьего наследника приводит к необходимости делать одно из двух: - Либо Полностью переписывать нахрен всю иерархию, что бы "повторное использование" снова стало возможно. - Либо пилить для третьего наследника отдельную реализацию злополучного метода. Так вот в обоих случаях - это не повторное использование нихрена. А всё потому, что смысл повторного использования - это писать код так, что бы потом при апгрейдах Вы могли тупо заюзать старый метод без переписывания половины проекта.
@edwardavd9423
@edwardavd9423 5 жыл бұрын
Спасибо за видос! Нужная штука! Снимете урок про UML? Так сказать, для осознания проектирования программного обеспечения. Не помешало бы...
@semplar2007
@semplar2007 4 жыл бұрын
NullPointerException существует не потому что иначе оверхед, а чтобы легче было вылавливать баги: если вместо желаемого получаемого обьекта получился null, и этот обьект влияет на какие-то данные, позже можно обнаружить что данные не поменялись, а вот где вылез этот самый null обьект потом можно будет очень долго искать в проекте. Лучше сразу NPE.
@RAZUMOVSKY228
@RAZUMOVSKY228 5 жыл бұрын
13:41 - ну конечно Test() будет недоступен, ведь obj надо перекастить в тип А и тогда Test() станет доступным. У Parent classa нету контекста для Test() A obj2 = (A)obj; obj2.Test(); А так пытаться вызвать в родительском классе метод дочернего невозможно же )
@dadoo6912
@dadoo6912 2 жыл бұрын
используя апкаст, при вызове метода, который переопределен в классе-потомке, будет вызван именно переопределенный метод, чего не скажешь об обычных методах класса-потомка, которые не определенны в родительском классе. их тупо нельзя будет вызвать
@МаксимХвостов-м1й
@МаксимХвостов-м1й 4 жыл бұрын
Вроде в Simula впервые ООП появилось. А популярность ООП началась с выходом Smalltalk, который взял часть идей из Lisp и Simula что породило динамический объектно ориентированный язык. На С++ повлияли Simula и соответственно C, что породило статический объектно ориентированный язык. Вот такие неясности и привели к тому что часть прогеров считает динамический ООП трушным, часть статический. В Common Lisp ушли от модели передачи сообщений к обобщённым функциям, достаточно взглянуть на страницу Common Lisp CLOS в википедии чтобы перевернуть свои представления об ООП на 360 градусов (у С++ программиста точно всё перевернётся, вывернется и выйдет наружу через рот =D ).
@suryaninov
@suryaninov 5 жыл бұрын
Так, я в комменты зашёл комменты умных дядек почитать с бородой по колено, а не послушать про ваш СКРЫТЫЙ ПУЛ
@volodymyrbabych8761
@volodymyrbabych8761 5 жыл бұрын
Одно уточнение. JavaScript изначально прототипно-ориентированый язык программирования. То что сейчас добавляют понятия классов, приводя к ООП, особо js не спасает. Читая книги по паттернам проектирования, хочется выброситься в окно. Все притянуто за уши. Так же само, как и курсы по функциональному JavaScript. Не люблю, когда микроскопом гвозди забивают. В некоторых ВУЗ-ах изучают ООП на Pascal. Изучать ООП на JavaScript почти тоже самое.
@ДмитрийСагитов-н3й
@ДмитрийСагитов-н3й 5 жыл бұрын
А есть же ещё Егор Бугаенко, у него вообще своя атмосфера в ООП)))
@mik439
@mik439 3 жыл бұрын
по моему он просто любит бить людей - к ООП это слабо относится
@Alpha_Gamma_Beta
@Alpha_Gamma_Beta 3 жыл бұрын
определение парадигмы 6.5 неверно. "в программировании одну и ту же задачу можно решить десятком способов. и за восемь из них получить люлей от вышестоящего программиста"
@ВадимЛогинов-й8м
@ВадимЛогинов-й8м 3 жыл бұрын
Разве инкапсуляция это не сокрытие??? В топ чтобы увидел, он неправильно понял
@Victor-il9gm
@Victor-il9gm 2 жыл бұрын
очень интересный и познавательный контент, а главное еще и веселый. Спасибо очень годно!
@favelly5446
@favelly5446 5 жыл бұрын
11:55 Он написал abstract class вместо intreface, Override'им его!
@archon_protoss
@archon_protoss 5 жыл бұрын
поставил лайк, когда увидел слово "оподливился", спасибо за годный контент
@Techpowers
@Techpowers 5 жыл бұрын
Ребята, большая просьба снять видео про слабую и сильную типизацию . Строгую и динамическую типизацию
@ted_res
@ted_res 3 жыл бұрын
Главная задача повторного использования, как по мне, в том, чтобы потом не пришлось менять в разных местах одно и то же. Соответственно, тут важно понимать, где у тебя одни и те же действия, а где очень похожие, но все же различные. Это вообще не очевидно бывает, и порой работает только на уровне чуйки.
@NecroRomnt
@NecroRomnt 5 жыл бұрын
Смотри, дяденька любитель фистинга. Кто-нибудь добудет твои ссылки...
@12strel
@12strel 5 жыл бұрын
Автор- инкапсуляция это не сокрытие но что это я обьяснить не могу. Заебись. Если не можешь обьяснить то наверное и сам нихрена не понимаешь.
@serggio88888
@serggio88888 5 жыл бұрын
Охуеть, я все понял. Понял все я... Лайк. Про mvc mvvm etc можна?
@CoffeJava
@CoffeJava 5 жыл бұрын
Охрененный гоп-стайл, после уроков по программированию отдыхаю тут, у тебя на канале )
@NoiroStar
@NoiroStar 5 жыл бұрын
Мне кажется ты инкапсулирова от нас часть правды, и несколько парадигм (2 с половиной, если быть точнее)
@referyli1660
@referyli1660 5 жыл бұрын
Сначала подумал, что у меня зрение поплыло и пора прилечь, пригляделся, а нет, это иконки на фоне плавают
@НикитаПелин-б3и
@НикитаПелин-б3и 5 жыл бұрын
Автор - харчок, инкапсуляция - сокрытие
@ЭльдартВейдэр
@ЭльдартВейдэр 5 жыл бұрын
Я - человек который ничего не знает и не понимает в вопросе программирования(да, я тупой), но мне было достаточно забавно и интересно смотреть это видео. Автор ты хороший рассказчик, продолжай делать так же
@thetraveler7779
@thetraveler7779 4 жыл бұрын
Инкапсуляция - это сокрытие!!!
@dashandr1
@dashandr1 5 жыл бұрын
Не программирую, но не пропускаю не одного видоса))) юморок конечно заебок, но почему мне нравится обусуждения на тему логиги, алгоритмов, абстракций и прочего прогерского?)
@riot80
@riot80 5 жыл бұрын
4:39 даже программист является объектом
@xNaGuWaLx
@xNaGuWaLx 5 жыл бұрын
А чё мне нравится парадигма 6.5 Опездюляция, обязательно парням на работе предложу её юзать)))
@daenur548
@daenur548 5 жыл бұрын
13:27 Parent obj = new A(); obj.Test2(); ((A)obj).Test(); //wow!?
@РоманВолков-н7ш
@РоманВолков-н7ш 5 жыл бұрын
13.40 - Метод не стал приватным. Ты объявил переменную с типом Parent и работаешь с ней, а у этого типа нет метода Test(). Всё просто. В таких случаях используется приведение к нужному типу в момент вызова, небезопасный вызов, либо сразу используют переменную с нужным типом. Насчёт вызова методов у null - так делать не нужно. Вообще, в случае ошибки, программа должна падать как можно громче, а не умалчивать их (Что-бы потом вы могли быстро локализовать и исправить проблему). Если там может быть null - добавьте явную проверку и напишите код, что в таком случае должно происходить.
@dmitriy3298
@dmitriy3298 5 жыл бұрын
Будут ли видосы по разбору IDE, текстовых редакторов, плагинов, расширений как в видео обзор Visual Studio 2017?
@demimurych1
@demimurych1 7 ай бұрын
Прикольно что сейчас, спустя 4 года после выхода видео, рыночек опять порешал уже не в сторону ООП.
@tduk2011
@tduk2011 5 жыл бұрын
Как я могу получить материалы для этого видео из твоей шахты? ммм?
@astrelcoff
@astrelcoff 3 жыл бұрын
Я Камеди Клаб перестал смотреть после того как подписался на твой канал! Лайк!
@Kritikarazuma
@Kritikarazuma 5 жыл бұрын
на 1:25 за "петухон" уже луйк тыкнул, боже, как же жизненно
@mikeistp5736
@mikeistp5736 5 жыл бұрын
Подскажите нубу, не знающего про питон, за что его петухонят?
@braiN941
@braiN941 5 жыл бұрын
Причина?
@Serg71007
@Serg71007 5 жыл бұрын
Смотрю давно вас) всё же какой классный канал)) Успехов в развитии)
@indigo_tears
@indigo_tears 5 жыл бұрын
Интересный факт: инкапсуляция - это сокрытие[2]
@TheSarapulov1
@TheSarapulov1 2 жыл бұрын
Классный видос! Кстати, инкапсуляция - это сокрытие
@princessmary5556
@princessmary5556 Жыл бұрын
Кстати, нет. Инкапсуляция это не сокрытие.
@alexkior
@alexkior Ай бұрын
Отличный видос, братан, спасибо тебе
@btsmart.c7027
@btsmart.c7027 5 жыл бұрын
Свастика + Пакмэн + флаг Украины = Python
@brayanhustler93
@brayanhustler93 4 жыл бұрын
что за ниувожение к вытиранам?
@mannas273
@mannas273 4 жыл бұрын
Хмммм. Вроде власовский флаг РФ больше подойдёт ,не ?!
@danielson679
@danielson679 5 жыл бұрын
Давно ждал видосик про ООП
@corey6214
@corey6214 5 жыл бұрын
Ага, так получается полиморфизм это сокрытие!))
@yugovmax
@yugovmax 5 жыл бұрын
Спасибо, весело и позновательно:) Особенно поржал над тем, когда увидел у себя на полке книги, используемые в этом видео)))
@markzharkov2551
@markzharkov2551 5 жыл бұрын
Только за шутку про пайтон лайк
@НиктаДиденко-п9ь
@НиктаДиденко-п9ь 4 жыл бұрын
аааа инкапсуляция это сокрытие, теперь я понял Автор Спасибо ОГОМНОЕ!!!
КУРСЫ ПО ПРОГРАММИРОВАНИЮ
13:26
ExtremeCode
Рет қаралды 337 М.
Полиморфизм ломает твой код
9:45
ExtremeCode
Рет қаралды 234 М.
-5+3은 뭔가요? 📚 #shorts
0:19
5 분 Tricks
Рет қаралды 13 МЛН
🎈🎈🎈😲 #tiktok #shorts
0:28
Byungari 병아리언니
Рет қаралды 4,5 МЛН
НЕНОРМАЛЬНОЕ ООП
10:57
ExtremeCode
Рет қаралды 218 М.
Чистый код не существует
8:04
ExtremeCode
Рет қаралды 226 М.
Повторное использование кода
8:01
ExtremeCode
Рет қаралды 118 М.
Ты не станешь программистом, но почему?
22:55
Роман Сакутин
Рет қаралды 212 М.
Просто о ООП (Парадигмы ООП)
21:14
webDev
Рет қаралды 44 М.
Как удержаться в АйТи
8:18
ExtremeCode
Рет қаралды 104 М.
ВСЯ БАЗА НАЧИНАЮЩЕГО ПРОГРАММИСТА ЗА 40 МИНУТ
41:34
Бинарный происк
Рет қаралды 37 М.