💻Задумываешься об IT, но не знаешь, с чего начать? Начни с базы! svyat404.com/base/ 🧑💻Этот курс - идеальная отправная точка с фокусом на практике. С первого занятия ты будешь писать код, разбирать реальные задачи и создавать свои программы. 🚀Узнай больше svyat404.com/base/
Долгожданное видео 🎉 отличное объяснение, спасибо. Видела разные определения абстракции до этого, кто то даже менял местами инкапсуляцию и абстракцию )
Вопрос насчёт полиморфизма. Я только постигаю основы ООП, поэтому извиняюсь заранее, если вопрос окажется глупым. В примере 4:50 показывается проверка типа данных внутри метода. Это рациональнее использовать, чем перегрузку методов?
Все зависит от конкретного случая. В примере который я показывал мы использовали третий класс Helper внутри которого мы и делали эту проверку. Чтобы применить сюда перегрузку методов мы должны были сделать новый класс HelperExtended который расширил бы наш Helper и перегрузил бы тот метод. Но в этом случае нам нужно было бы явно следить, чтобы мы использовали корректный Helper класс в теле программы. Так что и та и та реализации имеют место быть. А вот рациональность нужно оценивать исходя их конкретных задач и исходных данных :)
то что автор показал не относится к полиморфизму. Полиморфный метод не должен заниматься выяснением того, что за класс ему передали. Он использует общий интерфейс связанных наследованием классов. И вы правы -- через перегрузку виртуальных методов.
Ну вот например пара ссылочек: en.wikipedia.org/wiki/Object-oriented_programming#Data_abstraction_and_encapsulation www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops
Где-то слышал что полиморфизм это когда объект подкласса можно использовать вместо объекта родительского класса. Например есть класс Person и производный от него класс Student, объект класса Student имеет 2 формы, он является и человеком и студентом
Инкапсуляция это про то что методы и атрибуты относящиеся к одной сущности должны быть внутри одного класса. In capsule - внутри капсулы. То есть это в целом про устройство класса и ООП. Абстрагирование это про то, как с объектом взаимодействуют другие части программы. То есть мы всю «подкапотную» логику прячем внутри класса под ширмой приватности, а оставшиеся методы и атрибуты открываем для доступа снаружи. Надеюсь теперь стало понятнее 🤔
@kostyagusto5109 инкапсуляция не про сокрытие. Про сокрытие абстракция. Они действительно очень похожи потому что вытекают один из другого. То есть инкапсуляция говорит нам о том, что методы и атрибуты с которыми работают эти методы должны быть в одном классе. В случае с инкапсуляцией иногда можно встретить упоминание сокрытия, но тут идет речь о том, что атрибуты объекта нельзя править напрямую. То есть нельзя сделать user->age = 18. Это должен делать метод внутри класса. user->setAge(18);
Представьте себе, что у вас есть 20 абсолютно разных людей, изолированных друг от друга, которые не могут общаться между собой. Вам надо устроить утренник в детском саду. Репетиций нет, только одна попытка. Попробуйте раздать им задачи таким образом, чтобы когда они встретятся на утреннике, все понимали кто есть кто и что делать) Ах, да! Вася это сын Марии Ивановны, он умеет всё то, что Мария Ивановна, но, в силу возраста, делает это немного иначе)
А чем парадигма от стиля отличается? Вот что википедия говорит Парадигма, в программировании - это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию).
@@svyat404 для меня парадигма это скорее набор, совокупность неких правил, установок, наблюдений, которые выражают общий тренд, идею, обстоятельства, а стиль - это некий способ, один из способов, делать одну и ту же вещь...например, можно нарисовать кошку карандашом, а можно акварелью - и там, и там будет одна и та же кошка, но нарисованная разными стилями - опять же, даже рисуя одним и тем же способом, стилем, но внося свою особенность, свой стиль, авторский, можно рисовать по-другому: два автора рисовали кошку акварелью, но стиль выражения разный..ну, то есть, парадигма это как бы "над", а стиль "под", по иерархии смыслов..значит, в программировании это трактуется всё по-своему, будем знать
@@Кратос-с9х увы врядли кто-то точно сможет ответить на этот вопрос. Это все будут предположения :) Мне кажется лучше идти от обратно, посмотреть сколько вакансий есть на Java сейчас у тебя в доступе и исходя из этого уже и делать выбор.
@@hellohi763 инкапсуляция - смысл не объединить данные и логику в одном классе, а разграничить интерфейс и реализацию, чтобы пользователи классов опирались не на реализацию, а на интерфейс класса. Абстракция - автор как раз, по сути, объяснил инкапсуляцию, хотя абстракция - это как раз выделение свойств объекта и методов, которые можно с ним совершить на уровне опять же интерфейса, а не реализации. Вообще, по хорошему, сначала определяется интерфейс в том месте, где он используется, применяя принцип абстракции, а потом этот интерфейс реализовывается, инкапсулируя реализацию в конкретном классе. Наследование - автор вообще не объяснил зачем оно вообще нужно. Просто есть такая возможность в ооп. Полиморфизм - опять автор завязывается на реалзиацию, наследование, хотя смотреть надо с точки зрения интерфейсов. Полиморфизм в ооп позволяет не меняя логику пользователя класса менять результат работы этой логики.
@fpedotovvalentin А без интерфейсов у нас нет ООП? Инкапсуляция - en.wikipedia.org/wiki/Encapsulation_(computer_programming) Абстракция - en.wikipedia.org/wiki/Object-oriented_programming#Data_abstraction_and_encapsulation Наследование - я вроде даже как пример показал зачем это используется Полиморфизм - через пример конкретной реализации все же понятнее
@@svyat404Тогда вопрос насчёт ваших слов о том, что при инкапсуляции "хранятся вместе": неужели определение метода класса вне непосредственно класса в том же C++ нарушает принцип инкапсуляции?
@@lintorlink если честно не совсем понял вопрос. "Хранятся вместе" имеется ввиду что есть у нас у класса есть атрибут color то мы не можем извне его изменить напрямую. Нам нужен метод setColor который и сделает это изменение. Если метод setColor будет в другом классе - то это нарушение принципов, да
💻Задумываешься об IT, но не знаешь, с чего начать? Начни с базы! svyat404.com/base/
🧑💻Этот курс - идеальная отправная точка с фокусом на практике. С первого занятия ты будешь писать код, разбирать реальные задачи и создавать свои программы.
🚀Узнай больше svyat404.com/base/
Господи ну наконец-то я нашла видео,где понятно объясняют каждый из принципов!!!!!
Шикарное объяснение. И последний блок, где кратко о каждом принципе - лучшее объяснение, которое я читал или слушал. Спасибо, дружище!
Как же кайфово подан материал!
ОФигенно лаконично и ,при этом, недвусмысленно понятно!! Спасибо большое С меня 👍
Хорошо объясняешь.Без воды.
Согласна 👍 у него целая серия коротких и понятных роликов 😏 я например с апи разобралась наконец то благодаря этому каналу )
На данный момент это лучшее объяснение ООП увиденное мной.
Спасибо за видео. Уже не в первый раз натыкаюсь на ваши видео и остаюсь довольным от полученной информации и пользы
как легко и просто ! благодарю !
Отличное объяснение! Коротко, но ëмко.
Долгожданное видео 🎉 отличное объяснение, спасибо.
Видела разные определения абстракции до этого, кто то даже менял местами инкапсуляцию и абстракцию )
Вопрос насчёт полиморфизма. Я только постигаю основы ООП, поэтому извиняюсь заранее, если вопрос окажется глупым.
В примере 4:50 показывается проверка типа данных внутри метода. Это рациональнее использовать, чем перегрузку методов?
Все зависит от конкретного случая. В примере который я показывал мы использовали третий класс Helper внутри которого мы и делали эту проверку. Чтобы применить сюда перегрузку методов мы должны были сделать новый класс HelperExtended который расширил бы наш Helper и перегрузил бы тот метод. Но в этом случае нам нужно было бы явно следить, чтобы мы использовали корректный Helper класс в теле программы.
Так что и та и та реализации имеют место быть. А вот рациональность нужно оценивать исходя их конкретных задач и исходных данных :)
то что автор показал не относится к полиморфизму. Полиморфный метод не должен заниматься выяснением того, что за класс ему передали. Он использует общий интерфейс связанных наследованием классов. И вы правы -- через перегрузку виртуальных методов.
А откуда такое определение абстракци? Можно ссылку на литературу из который вы его взяли? Первый раз такое слышу.
Ну вот например пара ссылочек:
en.wikipedia.org/wiki/Object-oriented_programming#Data_abstraction_and_encapsulation
www.digitalocean.com/community/tutorials/what-is-abstraction-in-oops
Где-то слышал что полиморфизм это когда объект подкласса можно использовать вместо объекта родительского класса.
Например есть класс Person и производный от него класс Student, объект класса Student имеет 2 формы, он является и человеком и студентом
finaly, я понял смысл, спасибо за ролик
так и не понял разницу между абстракцией и инкапсуляцией
Инкапсуляция это про то что методы и атрибуты относящиеся к одной сущности должны быть внутри одного класса. In capsule - внутри капсулы. То есть это в целом про устройство класса и ООП.
Абстрагирование это про то, как с объектом взаимодействуют другие части программы. То есть мы всю «подкапотную» логику прячем внутри класса под ширмой приватности, а оставшиеся методы и атрибуты открываем для доступа снаружи.
Надеюсь теперь стало понятнее 🤔
@@svyat404 то есть эти два механизма используют сокрытие, но для разных семантических целей?
@kostyagusto5109 инкапсуляция не про сокрытие. Про сокрытие абстракция.
Они действительно очень похожи потому что вытекают один из другого.
То есть инкапсуляция говорит нам о том, что методы и атрибуты с которыми работают эти методы должны быть в одном классе.
В случае с инкапсуляцией иногда можно встретить упоминание сокрытия, но тут идет речь о том, что атрибуты объекта нельзя править напрямую. То есть нельзя сделать user->age = 18. Это должен делать метод внутри класса. user->setAge(18);
спасибо большое,@@svyat404
@@svyat404очень понятно, я теперь поняла! Спасибо!
Так а принципа 3 или 4 ? 😀
Спасибо
а давайте ваш видос скормим Мурычу, капец весело будет))
Представьте себе, что у вас есть 20 абсолютно разных людей, изолированных друг от друга, которые не могут общаться между собой. Вам надо устроить утренник в детском саду. Репетиций нет, только одна попытка. Попробуйте раздать им задачи таким образом, чтобы когда они встретятся на утреннике, все понимали кто есть кто и что делать) Ах, да! Вася это сын Марии Ивановны, он умеет всё то, что Мария Ивановна, но, в силу возраста, делает это немного иначе)
Привет, что за растение на заднем плане ?
Привет! Если честно хз 😅 что-то искусственное 😅
5:15 нарушает solid
А минусы выйдут через месяц))
Я так и не понял, ООП это парадигма или стиль программирования?
А чем парадигма от стиля отличается?
Вот что википедия говорит
Парадигма, в программировании - это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию).
@@svyat404 для меня парадигма это скорее набор, совокупность неких правил, установок, наблюдений, которые выражают общий тренд, идею, обстоятельства, а стиль - это некий способ, один из способов, делать одну и ту же вещь...например, можно нарисовать кошку карандашом, а можно акварелью - и там, и там будет одна и та же кошка, но нарисованная разными стилями - опять же, даже рисуя одним и тем же способом, стилем, но внося свою особенность, свой стиль, авторский, можно рисовать по-другому: два автора рисовали кошку акварелью, но стиль выражения разный..ну, то есть, парадигма это как бы "над", а стиль "под", по иерархии смыслов..значит, в программировании это трактуется всё по-своему, будем знать
Питер Гиббонс, ты??😮
На каком я п это написано?
В ролике я использовал несколько разных языков.
Когда мы перешли к принципам ООП то там использовался PHP
@@svyat404 понятно! Спасибо кстати что ответил. Я просто учу джава (знаю базу) и немного сомневаюсь востребован ли будет он, подскажи ты плз
@@Кратос-с9х увы врядли кто-то точно сможет ответить на этот вопрос. Это все будут предположения :)
Мне кажется лучше идти от обратно, посмотреть сколько вакансий есть на Java сейчас у тебя в доступе и исходя из этого уже и делать выбор.
объяснение каждого принципа либо принципиально неверное, либо не дает понимание, зачем оно нужно
а давай по фактам? или пустословство
@@hellohi763 инкапсуляция - смысл не объединить данные и логику в одном классе, а разграничить интерфейс и реализацию, чтобы пользователи классов опирались не на реализацию, а на интерфейс класса.
Абстракция - автор как раз, по сути, объяснил инкапсуляцию, хотя абстракция - это как раз выделение свойств объекта и методов, которые можно с ним совершить на уровне опять же интерфейса, а не реализации. Вообще, по хорошему, сначала определяется интерфейс в том месте, где он используется, применяя принцип абстракции, а потом этот интерфейс реализовывается, инкапсулируя реализацию в конкретном классе.
Наследование - автор вообще не объяснил зачем оно вообще нужно. Просто есть такая возможность в ооп.
Полиморфизм - опять автор завязывается на реалзиацию, наследование, хотя смотреть надо с точки зрения интерфейсов. Полиморфизм в ооп позволяет не меняя логику пользователя класса менять результат работы этой логики.
@fpedotovvalentin
А без интерфейсов у нас нет ООП?
Инкапсуляция - en.wikipedia.org/wiki/Encapsulation_(computer_programming)
Абстракция - en.wikipedia.org/wiki/Object-oriented_programming#Data_abstraction_and_encapsulation
Наследование - я вроде даже как пример показал зачем это используется
Полиморфизм - через пример конкретной реализации все же понятнее
@@svyat404Тогда вопрос насчёт ваших слов о том, что при инкапсуляции "хранятся вместе": неужели определение метода класса вне непосредственно класса в том же C++ нарушает принцип инкапсуляции?
@@lintorlink если честно не совсем понял вопрос. "Хранятся вместе" имеется ввиду что есть у нас у класса есть атрибут color то мы не можем извне его изменить напрямую. Нам нужен метод setColor который и сделает это изменение. Если метод setColor будет в другом классе - то это нарушение принципов, да
С появлением модульной системы ооп очень сильно уронило свою значимость. Настолько, что от него осознанно уходят.
С появлением, простите? 😂
Что за яп?
В основной части PHP.
В самом начале там python и pascal :)
ничего непонятно по прежнему. не самое удачное объяснение
Гг
Нахер, даже досматривать не стал.
🤗
😐🙄
🤦
очень абстрактное объяснение без примеров.
А ты точно видос смотрел? :)