Класс обёртка используется в ООП в тех случаях, когда мы хотели-бы расширить функционал чего-то, но не имеем права создавать дочерний класс. Чаще всего вы увидите классы обёртки для базовых типов данных.
К примеру, в .NET Framework классы обёртки во всю используются вместо обычных базовых типов данных, так как они намного более функциональны и имеют в себе реализации подавляющего количества необходимых методов для работы с расширяемым типом данных. И конечно же, эти классы обертки можно унаследовать, если нужен дополнительный функционал. В том же .NET Framework можно спокойно выполнять операции, вроде сложения, представленного в этом видео, и компилятор и слова кривого не скажет и всё прекрасно скомпилирует в CIL. До сих пор поражаюсь, насколько эта платформа шагнула вперед в сравнении с другими (той же java, например). Те же лямбда-выражения появились .NET Framework еще в 3 версии, в то время как java еще подобного не могла. Ну да ладно, отличное видео!
В учебниках и при обучении разным языкам упускаеться такая важная вещь как правильное (неправильное) расположение файлов в проекте, конкретно "maven", для новичка который начал или начинает изучать это становиться довольно-таки интерестным вопрсом. Конкретно я потратил вечер, для того чтобы докопаться до истины расположения файлов. Но это было уже сильно после того как несколько пусть и маленьких но проектов уже были готовы. Довольно интерестное видео, спасибо.
Я негодую по поводу Integer в java: запись "Integer a=5" правомерна. И другие базовые операции тоже. Потому что при компиляции происходит автоупаковка значений и автораспаковка объектов класса.
В Swift допустим Int, String и все остальные примитивные типы являются Структурами (аналоги Классов), и обертки нужны, особенно они используются повсеместно в SwiftUI. Так что... ;)
По поводу джавы и обёрток автор не прав: в Джаве уже давно можно присваивать целые числа переменной типа Integer, работает авто-обёртка (autoboxing). Естественно, и вторая строка сработает (в ней просто в переменную b типа Integer записывается значение переменной a (а это значение является ссылкой на объект типа Integer, внутри которого в переменную value типа int записано значение 5)).
В Python (по крайней мере 3 версии, за 2ю не помню) - все есть объект, в т.ч. базовые типы. Т.е. там, как я понял, не нужны классы-обертки, т.к. можно спокойно наследоваться от int без костылей на уровне языка. Хотя по обязательному присутствию слова "компилятор", полагаю, автор не учитывает интерпретируемые языки))
Есть базовые понятия в программировании, а есть слишком умные люди, которые сделают какую нибудь херню, которую уже давно придумали до них и дадут ей ещё более умное название. Начинают тащиться от этого, оперируя в своих рассказах такими вот обвёртками, развёртками и подвётками. Ну и естественно Володя переводит с языка слишком умных на более простой язык, так сказать интерпретируя и отфильтровывая ненужное говно и превращая словесный понос одних в нормальный и понятный язык других
(new Integer(val))->toStr(); да пофиг, пример же. На такой досочке нормальную обёртку не рассмотришь, лол. Обёртка ради тустринга и простой перегрузки операторов тоже не имеет смысла. например можно было бы рассмотреть пример обёртки ради лучшего контроля переноса в знаковый разряд. Даже osu! с их дотнетами такое проебалась сделать. а сравнивать чё-то там перед сложением и генерировать свой эксепшн, если например появился перенос в знаковый разряд, чтобы что-то с этим делать, вот это да. Примерно ради этого инт можно обернуть и перегрузить операторы.
2021. Дядя Володя, ваши уроки до сих пор актуальны. Спасибо. Живите долго, как ООП. Крепкого здоровья.
К примеру, в .NET Framework классы обёртки во всю используются вместо обычных базовых типов данных, так как они намного более функциональны и имеют в себе реализации подавляющего количества необходимых методов для работы с расширяемым типом данных. И конечно же, эти классы обертки можно унаследовать, если нужен дополнительный функционал. В том же .NET Framework можно спокойно выполнять операции, вроде сложения, представленного в этом видео, и компилятор и слова кривого не скажет и всё прекрасно скомпилирует в CIL. До сих пор поражаюсь, насколько эта платформа шагнула вперед в сравнении с другими (той же java, например). Те же лямбда-выражения появились .NET Framework еще в 3 версии, в то время как java еще подобного не могла.
Ну да ладно, отличное видео!
Спасибо большое за уроки!
Володя ты настоящий программист и дворянин
Браво! 👏
В Ruby есть возможность расширить базовый класс(наверняка подобно Scala) . Может понадобиться(в редких случаях) , хотя лучше же конечно обертки.
В учебниках и при обучении разным языкам упускаеться такая важная вещь как правильное (неправильное) расположение файлов в проекте, конкретно "maven", для новичка который начал или начинает изучать это становиться довольно-таки интерестным вопрсом.
Конкретно я потратил вечер, для того чтобы докопаться до истины расположения файлов.
Но это было уже сильно после того как несколько пусть и маленьких но проектов уже были готовы.
Довольно интерестное видео, спасибо.
Я негодую по поводу Integer в java: запись "Integer a=5" правомерна. И другие базовые операции тоже. Потому что при компиляции происходит автоупаковка значений и автораспаковка объектов класса.
В Swift допустим Int, String и все остальные примитивные типы являются Структурами (аналоги Классов), и обертки нужны, особенно они используются повсеместно в SwiftUI. Так что... ;)
По поводу джавы и обёрток автор не прав: в Джаве уже давно можно присваивать целые числа переменной типа Integer, работает авто-обёртка (autoboxing). Естественно, и вторая строка сработает (в ней просто в переменную b типа Integer записывается значение переменной a (а это значение является ссылкой на объект типа Integer, внутри которого в переменную value типа int записано значение 5)).
в javacript так-же есть возможность расширять примитивы. Например Number, String. Но там ООП устроено на прототипах.
В Python (по крайней мере 3 версии, за 2ю не помню) - все есть объект, в т.ч. базовые типы.
Т.е. там, как я понял, не нужны классы-обертки, т.к. можно спокойно наследоваться от int без костылей на уровне языка.
Хотя по обязательному присутствию слова "компилятор", полагаю, автор не учитывает интерпретируемые языки))
Integer A = 5;
Integer B = A + 2;
так ты посмотри когда сняли это видео
Первый раз слышу произношение Scalá
MMEEEish Интересно. А я ни разу не слышал другого ударения.
MMEEEish Но это часто так. Люди только читают что-то, и произношение вообще неизвестно.
Есть базовые понятия в программировании, а есть слишком умные люди, которые сделают какую нибудь херню, которую уже давно придумали до них и дадут ей ещё более умное название. Начинают тащиться от этого, оперируя в своих рассказах такими вот обвёртками, развёртками и подвётками. Ну и естественно Володя переводит с языка слишком умных на более простой язык, так сказать интерпретируя и отфильтровывая ненужное говно и превращая словесный понос одних в нормальный и понятный язык других
Как тебя зовут?
как меня обламывает эта uml хрень а-ля рейшнл роус, блин. кстати не чар, а кэр.
Отнюдь - char = чар, Character = Кэрактэ - первый раз вижу видео, где произносятся все английские слова очень правильно
Кроме, конечно же, скалЫ ))))
ето паттерн или что?
не смотри в камеру никогда
халтура. нет смысла оборачивать инт только ради тустинга. если уж оборичиваешь то будь добр перегрузи операторы.
(new Integer(val))->toStr(); да пофиг, пример же. На такой досочке нормальную обёртку не рассмотришь, лол. Обёртка ради тустринга и простой перегрузки операторов тоже не имеет смысла. например можно было бы рассмотреть пример обёртки ради лучшего контроля переноса в знаковый разряд. Даже osu! с их дотнетами такое проебалась сделать. а сравнивать чё-то там перед сложением и генерировать свой эксепшн, если например появился перенос в знаковый разряд, чтобы что-то с этим делать, вот это да. Примерно ради этого инт можно обернуть и перегрузить операторы.