Пять принципов SOLID с примерами на Java

Узнаете, что из себя представляют пять принципов SOLID для грамотного проектирования программ в концепции ООП (объектно-ориентированного программирования).
00:00 Введение
04:12 Принцип единственной ответственности
13:26 Принцип открытости-закрытости
20:48 Принцип подстановки Барбары Лисков
27:09 Разделение интерфейса
32:20 Принцип инверсии зависимости

Пікірлер: 145

  • @user-xq4wc1ge7r
    @user-xq4wc1ge7rАй бұрын

    Вижу у Вас талант к преподавательской деятельности. Спасибо Вам, Сергей. Роста и развития🙏

  • @skyx5691
    @skyx56912 ай бұрын

    Даже сам мой кайф получил кайф от этого видео! 🎉Сергей, осторожно, так нельзя ! Ваши видео слишком кайфовые! Я чуть не начал биться в конвульсиях от кайфа при просмотре!!! Если серьёзно то спасибо Вам огромное за то как доходчиво, ясно и приятно Вы всё объясняете! Огромная благодарность и уважение Вам!

  • @ivmmos
    @ivmmos8 ай бұрын

    Однозначно недооцененный лайками ролик. Благодарность автору!

  • @user-ee1lx1pe7n
    @user-ee1lx1pe7n Жыл бұрын

    Это самое прекрасное объяснение SOLID, которое я когда-либо видел!

  • @profesor2009
    @profesor200910 ай бұрын

    04:12 Принцип единственной ответственности 13:26 Принцип открытости-закрытости 20:48 Принцип подстановки Барбары Лисков 27:09 Разделение интерфейса 32:20 Принцип инверсии зависимости

  • @selfedu_rus

    @selfedu_rus

    10 ай бұрын

    Спасибо!

  • @dmitrelkin9256
    @dmitrelkin9256 Жыл бұрын

    Сергей спасибо за ваш труд! Как всегда кратко, без воды, лаконично и понятно! И еще очень подкупает дружелюбность подачи материала. )))

  • @eron
    @eron Жыл бұрын

    Супер, отличное объяснения принципов SOLID, на отличных понятных примерах. Спасибо большое!

  • @pavelbbb
    @pavelbbb5 ай бұрын

    В джава есть не только интерфейсы, но и абстрактные классы, но за урок спасибо.

  • @artyomka_tlt
    @artyomka_tlt Жыл бұрын

    Самое понятное объяснение этих принципов. Спасибо за видео!)

  • @user-qp8hg4ds2b
    @user-qp8hg4ds2b Жыл бұрын

    Сергей, спасибо за видео. Очень ждал на вашем канале такого рода видео!

  • @Bah1918
    @Bah1918 Жыл бұрын

    Это просто классно. Взаимодействие классов примеры отличные. Побольше таких уроков. СПАСИБО

  • @egorvafin1978
    @egorvafin1978 Жыл бұрын

    Хорошее объяснение. Все четко и доходчиво.

  • @Cynoptic8
    @Cynoptic88 ай бұрын

    Очень доступное объяснение принципов.

  • @user-qp8hg4ds2b
    @user-qp8hg4ds2b Жыл бұрын

    Просто супер объяснение, спасибо огромное!!!

  • @stasleonov5196
    @stasleonov5196 Жыл бұрын

    Потрясающе здорово. Очень приятный голос, всё спокойно, понятно. Огромное спасибо за труд.

  • @starbuckscoffeeme
    @starbuckscoffeeme Жыл бұрын

    посмотрел весь курс ООП. лучший канал, с ПОНЯТНОЙ информацией. Буду смотреть теперь другие плейлисты канала и преисполняться в своем познании))))

  • @Skreepan
    @Skreepan Жыл бұрын

    Вот это супер полезное видео! А я как раз дошел до того, что начал задумываться о правильном построение ПО! Спасибо!

  • @user-iu7zo9gs7x
    @user-iu7zo9gs7x3 ай бұрын

    Серёга рассказывает как солит и не испортить свой проект 😂. Классное видео! Благодарю! Серьезно, очень ему благодарен- очень многому научился по его видео и курсам! Здоровья тебе, уважаемый Сергей. Уважаю тебя, Человечище!!! 🤝🙂

  • @jamjam3337
    @jamjam3337 Жыл бұрын

    Спасибо! Отличный курс! 💥💥💥

  • @konstantinchvilyov9602
    @konstantinchvilyov9602 Жыл бұрын

    Спасибо! Это лучшее объяснение из всех, которые я видел!

  • @andredru4278
    @andredru42782 ай бұрын

    Спасибо. Познавательно и доступно.

  • @unaibekovbakhyt6517
    @unaibekovbakhyt6517 Жыл бұрын

    Спасибо за познавательные видео

  • @serjgoa4666
    @serjgoa4666 Жыл бұрын

    Отличный урок! Один из лучших каналов на Ютуб!!! Мне как новичку в Пайтон не всё понятно из-за отличий между языками, имею ввиду интерфейсы и т.п., сильно отвлекаешься на различия, особенно ближе к концу. Возможно ещё рано над таким думать, но всё же надо двигаться вперёд. Если будет такое же видео только на Пайтоне, то будет вообще улёт. Можно даже в курс по ООП добавить)))

  • @user-ot5iy5es4l
    @user-ot5iy5es4l Жыл бұрын

    Лайк не глядя)

  • @godzosioda
    @godzosioda10 ай бұрын

    Спасибо, все наглядно и понятно!

  • @user-qg5ig2hy2n
    @user-qg5ig2hy2n Жыл бұрын

    Лучшее объяснение, спасибо!

  • @wEssyy_Wsyy
    @wEssyy_Wsyy4 ай бұрын

    Друг мой, ты вообще классно все обьяснил

  • @chessclub92
    @chessclub926 ай бұрын

    спасибо большое, очень полезный канал

  • @GROMOZEKA_NZT
    @GROMOZEKA_NZT11 ай бұрын

    Эталон обучающей информации!

  • @rocketman4072
    @rocketman4072 Жыл бұрын

    Самое понятно объяснение из всех что я видел.

  • @abaialihan9274
    @abaialihan9274 Жыл бұрын

    Очень понятно объяснил 👌 спасибо😀

  • @Hellen-qx3lb
    @Hellen-qx3lb3 ай бұрын

    Очень хорошее объяснение

  • @revillnik1092
    @revillnik10924 ай бұрын

    Очень хороший курс, действительно кратко, по делу и грамотно, единственное , не хватает темы "абстрактные классы", она бывает полезна.

  • @eh9mjeh9mj
    @eh9mjeh9mj4 ай бұрын

    Вспомнились слова известного пирата "это просто свод указаний, а не жёстких законов""

  • @navalenstar
    @navalenstar5 ай бұрын

    Спасибо за видио - это и остальные - приятная подача - приятно смотреть) А теперь немного критики - класс лучше назвать не SaveComputer а ComputerSaver или ComputerStorage - должно быть существительное, т.к. в человеческом языкие именно существительные обозначают объекты мира которые мы моделируем с помощью классов. И когда не получается придумать нормальное название для класса это часто признак что с классом чтото не так (например он перегружен ответственностью)

  • @user-cb1kz3mv7j
    @user-cb1kz3mv7jАй бұрын

    Посмотрел видео, понял, что надо повторить тему с полиморфизмом (в питоне). То что тут java - нестрашно, быстро привыкаешь к синтаксису. Особенно если знаком с тайп хинтами. А вот интерфейсы сбивают с толку. Аналогию с питоном не успеваешь строить, как в видео уже следующий принцип разбирается. Я аж чувствую, как мозг физически нагревается))

  • @user-ld3zm5tv6w
    @user-ld3zm5tv6w Жыл бұрын

    Буковки для продвижения. Автор красавчик.

  • @sergeysergey421
    @sergeysergey421 Жыл бұрын

    Когда объясняли зависимость интерфесов, нужно наверное было создать интерфейс DrawGeometry с абстрактным методом Draw. При наследовании мы бы получилиLine.Draw(), Circle.Draw(), Rectangle.Draw().если не ошибаюсь,то это был бы паттерн фабрика. По паттернам будет обучение?

  • @Flawden
    @Flawden Жыл бұрын

    Идеально, спасибо огромное! Я понял. И кажется понял нафига оно надо. Постараюсь сделать свой код лучше.

  • @alexhayes4253
    @alexhayes4253 Жыл бұрын

    Круто, спасибо! Хотелось бы на питоне, конечно, так как смотрю с плейлиста по ООП питону. Но, насколько я понял, ярче всего эти принципы работают со строго-типизированными языками. Так что так, полагаю, лучше

  • @svetoslavzamotaev2725
    @svetoslavzamotaev2725 Жыл бұрын

    Замечательный голос и содержание видео !

  • @UnreaLyNX
    @UnreaLyNX Жыл бұрын

    Все же не стоит интерфейсы относить к абстрактным классам. Посредством интерфейсов реализуется полиморфизм(не считая интерфейсы маркёры, функциональные интерфейсы), а функционал абстрактных классов чаще используется в наследовании как суперкласс. Если кто-то запомнит этот тезис и на собеседовании скажет что интерфейс это абстрактный класс, то быть беде.

  • @AlexPInv

    @AlexPInv

    5 ай бұрын

    А как можно сказать ,что интерфейс = класс ? Тут сама риторика говорит об этом ,что это разные объекты

  • @user-pg8ry1tm3t

    @user-pg8ry1tm3t

    4 ай бұрын

    Не стоит, но в тех же плюсах интерфейсы реализуются чистыми абстрактными классами

  • @dadadada-zc6nk

    @dadadada-zc6nk

    4 ай бұрын

    По сути и абстрактный класс и интерфейс это абстракции, поправьте если ошибаюсь. И наверное правильнее будет называть их "абстракциями"

  • @mrakobes228

    @mrakobes228

    3 ай бұрын

    А посредством абстрактных классов полиморфности разве не будет? Конечно будет.

  • @UnreaLyNX

    @UnreaLyNX

    3 ай бұрын

    @@mrakobes228 конечно не будет, полиморфизм это связывание разных классов с общим поведением, наследование от абстрактного класса это расширение супер класса. Рыба может плыть и тапок может плыть, может ли тапок быть потомком рыбы или все же у них есть обобщенное поведение, которое можно объединить через интерфейс добавив полиморфизм?

  • @vitalyvistovsky8661
    @vitalyvistovsky8661 Жыл бұрын

    Супер, дуже класне відео!

  • @sahar_plays
    @sahar_plays Жыл бұрын

    Классно, с возвращением... Java'у?)

  • @eskelgarsio2998
    @eskelgarsio2998 Жыл бұрын

    Ура, побольше java!

  • @8_Artem_8
    @8_Artem_8 Жыл бұрын

    Как можно определить, что разработчик пришел из питона? - Стиль написания snack_case. В java, особенно в энтерпрайз проектах, по -дефолту, используется camelCase. Но видео, как всегда, классное. Спасибо!

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    это привычка, последнее время много на питоне писал ))

  • @Konstantin_Stalnov
    @Konstantin_Stalnov10 ай бұрын

    Второй Принцип: Закрытости / Открытости. Это тот принцип, благодаря которому раздувается ПО в геометрической прогрессии, а функционал в арифметической!

  • @user-cb1kz3mv7j

    @user-cb1kz3mv7j

    Ай бұрын

    Да тут каждый второй принцип такой. Например последний принцип инверсии зависимостей потребовал создания двух файлов - интерфейсов. А ведь это простой учебный пример. В реальном коде там этих классов и интерфейсов будут сотнями измеряться походу.

  • @duke007x3
    @duke007x3 Жыл бұрын

    С примерами на пайтон будет?) спасибо 🙏

  • @danila9853
    @danila985311 ай бұрын

    Очень понравилось, спасибо! Единственное может быть слишком быстро? и конечно для закрепления нужно больше практики.

  • @fomka_wyverno
    @fomka_wyverno Жыл бұрын

    19:00 так, а зачем для того что бы сохранить в БД путь к файлу? - А если допустим в облако, то нужно ещё дополнительные данные, тогда или просто убрать нужно path с аргумента интерфейса. Потому что для разных типов сейвов/лоадов нужны свои доданые фишки. Тогда вердикт такой что в методе должен быть только Компютер класс, но ни как не путь к файлу, так как это уже часть для самого сейвера который реализует только сейв в файл, а для дб и для облока, он не нужен

  • @chimchimsterschannel161
    @chimchimsterschannel161 Жыл бұрын

    Сергей, спасибо за видео. Скажите, получается второй принцип это использование абстрактных миксинов которые применять нужно при множественном наследовании?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    как один из примеров да, подходит

  • @user-mo3pr9fv3q
    @user-mo3pr9fv3q3 ай бұрын

    Круто

  • @user-nw5iw5ew9z
    @user-nw5iw5ew9z4 ай бұрын

    Спасибо за данное видео. Хотел бы задать следующий вопрос, который больше относится к программированию на С++. Считается ли нарушением принципа подстановки Барбары Лисков, если мы в базовом классе определим виртуальную функцию, с одним поведением, а уже в её классе наследнике мы эту виртуальную функцию переопределяем, т.е. задаём другое поведение? Ведь виртуальные функции и нужны для того чтобы их переопределять.

  • @user-rs6lw5vy4e
    @user-rs6lw5vy4e Жыл бұрын

    спасибо

  • @pocomaxa8612
    @pocomaxa8612Ай бұрын

    Не понятно одно,почему Сергей во всех роликах про ооп использовал python,а в последнем перешёл на java ?А так все доступно и понятно разъяснил.

  • @shoislom2200

    @shoislom2200

    Ай бұрын

    так он вначале говорит, что объяснить принципы солид легче на джаве, так как там есть интерфейсы. В питоне тоже вроде можно используя абстрактные классы.

  • @pocomaxa8612

    @pocomaxa8612

    Ай бұрын

    @@shoislom2200 Про абстрактные классы я знаю,но все же

  • @user-yi9zy5rw6k
    @user-yi9zy5rw6k7 ай бұрын

    абстрактный класс != интерфейс

  • @user-bq6xi8vd3u
    @user-bq6xi8vd3u Жыл бұрын

    Ура!!!!

  • @Name-ko3qb
    @Name-ko3qb Жыл бұрын

    Добрый день, планируются еще видео по чистой архитектуре? Спасибо!

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    Пока не думал об этом, я вообще планов таких не строю, как идет, так и делаю ))

  • @user-ot5iy5es4l
    @user-ot5iy5es4l Жыл бұрын

    Заметил интересное(в java базовый класс может хранить ссылку на объект класса-наследника), а что касается методов и переменных класса-наследника?Можно ли их использовать через базовый класс?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    нет, только после приведения типа к дочернему классу

  • @user-hm4tl3hy4u
    @user-hm4tl3hy4u Жыл бұрын

    Сергей, снимите пожалуйста видео про SOLID для Python. Спасибо!

  • @andreynomad5317

    @andreynomad5317

    Жыл бұрын

    А в чём разница? Эти принципы едины для всех ЯП.

  • @zakirovio
    @zakirovio11 ай бұрын

    нравится Java) думаю в качестве компилируемого языка начну изучать ее) у вас не планируется вводный курс по ней?

  • @selfedu_rus

    @selfedu_rus

    11 ай бұрын

    уже есть, см. плейлист на этом канале )

  • @skyx5691

    @skyx5691

    2 ай бұрын

    Джава компилируемый язык только наполовину (до создания байт кода). Далее после этого, во время чтения байт кода - это уже гибридный язык , так как работает одновременно и JIT компилятор и интерпретатор в паре чтобы транслировать файл класса (байт код) в исполняемый файл на машинном языке. Чисто компилируемые языки это C, C++, Rust, Go и тд

  • @zakirovio

    @zakirovio

    2 ай бұрын

    @@skyx5691 да теперь уже знаю, спасиб

  • @andreychernykh256
    @andreychernykh256 Жыл бұрын

    К такому меня жизнь не готовила!

  • @valman6866
    @valman6866 Жыл бұрын

    Сергей, такой вопрос: разве в показанном примере на 18:00 код не нарушает принцип DRY? Ведь, по сути, при дальнейшем расширении программы, мы будем иметь множество классов с практически идентичным функционалом. Пусть это и нарушит принцип единой ответственности, но почему создать отдельный класс Saver, который будет реализовать все функции, связанные с сохранением, нельзя? Разве так не проще?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    Конечно, это сильно упрощенные примеры. Принципы SOLID для серьезных проектов. Я здесь лишь показываю идею. Конечно в этих програмках городить такие огороды ни к чему )) Я это сделал лишь для простоты изложения материала - идей принципов SOLID

  • @valman6866

    @valman6866

    Жыл бұрын

    @@selfedu_rus В таком случае не очень хорошо закрепляется материал, так как пример не отражает "боевую" ситуацию, которая действительно может произойти. Не могли бы Вы привести пример из своего личного опыта, когда Вы использовали этот принцип в своем проекте и он действительно помог в обозримом будущем?

  • @uchoba
    @uchoba11 ай бұрын

    Канал хороший смотрю плейлист по питону и по си. Вопрос аа почему принципы Solid по java? будите делать по этому языку плейлист как по си? Или эти принципы к другим языкам то же подходят?

  • @selfedu_rus

    @selfedu_rus

    11 ай бұрын

    Спасибо! Просто на Java было проще всего показать эти принципы, а так да, они едины для всех языков, где есть ООП.

  • @uchoba

    @uchoba

    11 ай бұрын

    @@selfedu_rus ясно спасибо)⚡⚡⚡

  • @olegmakarikhin
    @olegmakarikhin Жыл бұрын

    Сергей, вы добавили это видео в плейлист по ооп питона?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    да, пусть будет, это же принципы, которые универсальны для любого языка программирования

  • @zakirovio
    @zakirovio11 ай бұрын

    Получается принцип открытости и закрытости, как бы подталкивает для осуществления принципа единственной ответственности, так как нужно каждый раз создавать отдельный класс)

  • @segeus
    @segeus Жыл бұрын

    Жду разбор шаблонов проектирования GoF.))

  • @fomka_wyverno
    @fomka_wyverno Жыл бұрын

    последнее вообще не понял, мы создали IForm интерфейс но при этом от куда нам брать тогда информацию для записи? То что они просто связаны на том что они одного интерфейса, но допустимо как его тогда сохранить если нету информации. Вообще не понял что происходит

  • @sladge17
    @sladge17 Жыл бұрын

    А можно, тоже самое, но на python?

  • @khesonglee
    @khesonglee2 ай бұрын

    букву S разве не модно было как - то подругому сделать например у класса SHAPE просто оставить метод DRAW и тогда получилось что в классах нужно было бы просто переопределить метод DRAW нежели создавать 3 лишних интерфейса которые наоборот нагружают память

  • @ibrahimoglu
    @ibrahimoglu Жыл бұрын

    👍

  • @user-dp7ok2jq7k
    @user-dp7ok2jq7k Жыл бұрын

    👍🏻

  • @yuriismakota9574
    @yuriismakota95747 ай бұрын

    ничего не понятно, но очень интересно...

  • @zhakanbaevbakhtiyar5208
    @zhakanbaevbakhtiyar5208 Жыл бұрын

    Лайк с вертухана

  • @user-zl3rb8rr3t
    @user-zl3rb8rr3t Жыл бұрын

    Здравствуйте. А что, планируются уроки по Java?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    так они же есть?

  • @user-zl3rb8rr3t

    @user-zl3rb8rr3t

    Жыл бұрын

    @@selfedu_rus И правда. Проглядел))

  • @eh9mjeh9mj
    @eh9mjeh9mj4 ай бұрын

    Что то мне подсказывает что Барбара Лисков это на самом дела Варвара Лескова, просто не смогли правильно выговорить имя

  • @sense3247
    @sense3247 Жыл бұрын

    Solid - это только для ООП? Если я программирую, например, в процедурном стиле?

  • @sense3247

    @sense3247

    Жыл бұрын

    4:05 услышал ответ.

  • @user-pg8ry1tm3t

    @user-pg8ry1tm3t

    4 ай бұрын

    Нет, философия солид - не только про ооп

  • @user-zt4wx1ks6z
    @user-zt4wx1ks6z Жыл бұрын

    Есть же к.с abstract для создания абстрактных классов, почему автор заостряет внимание именно на интерфейсах, что через них реализуются абстрактные классы?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    да, в Java interface - это аналог абстрактных классов

  • @danilaminecraftcity

    @danilaminecraftcity

    Жыл бұрын

    @@selfedu_rus абстрактные классы и интерфейсы - различные понятия

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    @@danilaminecraftcity поэтому употребил слово "аналог"

  • @danilaminecraftcity

    @danilaminecraftcity

    Жыл бұрын

    @@selfedu_rus хорошо, я уж быть подумал, что вы умеете ввиду его полное соответствие.

  • @user-pg8ry1tm3t

    @user-pg8ry1tm3t

    4 ай бұрын

    Именно через интерфейсы и лучше реализовывать солид философию. В плюсах к примеру есть только чистые абстрактные классы, поэтому приходится реализовываться через них. Вообще, каждому языку свойственна своя идиоматическая концепция…

  • @elnar_1206
    @elnar_1206 Жыл бұрын

    Может быть курс по Java сделаете?😅

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    посмотрим ))

  • @sense3247
    @sense3247 Жыл бұрын

    Есть что то подобное не для ООП, а для процедурного программирования?

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    там, в основном, все сводится к правильному набору функций, которые, опять же, должны решать строго ограниченную задачу, а более сложный функционал реализовывать через вызовы более простых функций

  • @user-sl1tw9vg8x
    @user-sl1tw9vg8x Жыл бұрын

    а почему не на Python как раз после курса ОПП

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    В Python не так хорошо все можно продемонстрировать, например, те же абстрактные классы или интерфейсы, полиморфизм, в питоне это скрыто и встроено в саму структуру языка, было бы не так очевидно

  • @zakirovio
    @zakirovio11 ай бұрын

    касаемо Барбары Лисков, для себя запомнил так, что если в базовом классе метод записывал данные файл, нельзя его переопределить в дочернем, чтобы он этот файл удалял, то бишь логика метода менялась с ног на голову) как то так)

  • @zakirovio

    @zakirovio

    11 ай бұрын

    хотя все равно не очень понятна граница, какие изменения в переопределении метода, будут противоречить принципу

  • @SB-pk2ss
    @SB-pk2ss2 ай бұрын

    Самая основная проблема подобных видосов это чрезмерное упрощение примеров. Информация вроде подается хорошо. Но вот эти вот "Ну, я просто для примера, напишу вот такие методы, какая разница" или "Ну, назову класс SaveComputer, можно было бы поумнее, но какая разница" очень портят качество. Ну придумайте вы нормальные полноценные законченные примеры, близкие к реальным, без вот этих вот "допущений". Это сильно поднимет качество роликов.

  • @eh9mjeh9mj
    @eh9mjeh9mj4 ай бұрын

    А как же принцип "не повторяй самого себя"?

  • @selfedu_rus

    @selfedu_rus

    4 ай бұрын

    Желательно придерживаться )) Но это же свод указаний ))

  • @domochevsky4703
    @domochevsky4703 Жыл бұрын

    Так может надо было на питоне и делать эту рубрику...

  • @selfedu_rus

    @selfedu_rus

    Жыл бұрын

    там не покажешь так явно интерфейсы как в Java

  • @timatim68
    @timatim689 ай бұрын

    22:3

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t4 ай бұрын

    Все же лучше называть класс не действием - это ведь сущность. Здесь, в примере с Computer, имхо достаточно рассмотреть навязшую в зубах mvc. Есть область хранилища, есть само представление сущности, и есть какой-то контроллер, обеспечивающий взаимодействие хранилища и представления. Имхо🥴

  • @vitalyvistovsky8661
    @vitalyvistovsky8661 Жыл бұрын

    Ще б паттернів і побільше...

  • @timatim68
    @timatim689 ай бұрын

    08:11

  • @user-xj9tj5cy9b
    @user-xj9tj5cy9b Жыл бұрын

    Интерфейс и абстрактный класс в джаве две совершенно разные сущности

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t4 ай бұрын

    Первый принцип - фактически о том, насколько удачно вы декомпозицировали задачу…

  • @hazartilirot1014
    @hazartilirot10142 ай бұрын

    Мне кажется, что автор не правильно объяснил принцип подстановки Лисков.

  • @hazartilirot1014

    @hazartilirot1014

    2 ай бұрын

    Прошу прощения, последний принцип тоже, мне кажется, объяснили не правильно.

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t4 ай бұрын

    Ну, проект из нескольких классов как бы надо уже на масштабирование закладывать…🥴

  • @cicik57
    @cicik57 Жыл бұрын

    8:55 это реально применяется и делается например визитором но этот вариант тоже нарушает SRP потому что при изменении класса вам надо изменить и сам класс и его лоадер который будет брать его структуру, так что не факт что такое выделение чище по дизайну. А не вот на ходу придумалось решение что самым чистым был бы класс универсального лоадера, который через "что то типа рефлекции" если это про Жабу, смотрит структуру любого обьектаи сохраняет данные типа как JSON. Если надо сохранять не все поля то в классе прописывается какие поля надо сохранять. Не надо в лекции по SOLID говорить белиберду. Отдельно класс который сохраняет специфический обьект специфическим образом непрактично потому что у вас будет n * m таких классов где n количество классов а m виды сохранения.

  • @evpatorya
    @evpatorya Жыл бұрын

    "принципы Солид только для программ с десятками классов. и если у вас простая программа-принципы Солид вам не нужны",..... a Few Moment Later...... у нас десяток классов из простой проги😁😁😁

  • @evpatorya

    @evpatorya

    Жыл бұрын

    шучу,очень круто обьяснили

  • @cool_piglet
    @cool_piglet Жыл бұрын

    ну, в общем-то, типичные ошибки (странно, что человек, перед тем как учить кого-то, не может просто даже вики открыть - не то что, открыть книжку мартина, где всё это подробно расписано): 1) принцип единственной *ОТВЕТСТВЕННОСТИ* не про то, что класс или метод должен отвечать за одну вещь. даже на вики написано: "A class should have only one reason to change" R. Martin. и где тут что-то про работу класса? принцип о том (и на ютубе есть видео, где дядюшка это поясняет на примерах), что класс должен иметь ОДИН ИСТОЧНИК ДЛЯ ИЗМЕНЕНИЙ. т.е. если этот класс создан по заказу бухгалтерии, для их расчетов, то он не должен меняться по приказу отдела кадров. в противном случае, существует вероятность, что после изменений для кадров, у бухгалтерии отвалится жопа. 2) osp - самое простое. но даже тут чувак нарушает принцип наименования интерфейсов (как и в целом в видео). интерфейс - это прилагательное (или существительное, если это группа объектов). отвечает на вопрос: "какой?". отвечает ли SaveInterface на вопрос "какой?" - вопрос риторический. и ладно бы он придерживался такого написания везде - но нет: тут добавляет Interface, потом пишет интерфейс Shape, без добавления Interface, потом вообще пишет ICircle. чувак, определись уже. 3) принцип лисков не о том, что дочерний класс должен ПОЛНОСТЬЮ повторять ФУНКЦИОНАЛ. вон, в комментах у людей тоже вопрос - "нафига тогда есть переопределение метода?". принцип о том, что дочерний метод должен соответствовать той же БАЗОВОЙ СИГНАТУРЕ, что и родительский. т.е. если у тебя базовый метод принимает число, как аргумент, и возвращает число, то и дочерний метод должен делать то же самое: иметь ПЕРВЫМ аргументом число, и возвращать число. но это не значит, что я в дочерний метод не могу вторым аргументом добавить строку, например. и это не означает, что в теле метода я не могу реализовать другую работу, нежели в базовом. если у меня базовый класс возвращает число, путем возведения аргумента в квадрат, то я в дочернем классе могу вернуть число, путем умножения аргумента на самого себя. или умножить его на 2. или на 10. да, результат будет неправильным, но он будет соответствовать ожидаемому типу. но если ты переопределишь метод, но сделаешь возвращаемый тип строкой, то при подстановке, у тебя сломается программа, если ты захочешь использовать результат, как число, но получишь строку. да, в видео правильно сказано, что изменение свойств класса в переопределенном методе тоже нарушает этот принцип. но это лишь его часть. 4) тут всё понятно, кроме нейминга интерфейсов 5) опять проблемы с наименованием. как язык программирования (sql) может быть типом базы данных? если ты делаешь абстракцию базы данных, то и называй ее DB. базой данных может быть и локальное хранилище - каким боком оно тогда относится к sql?

  • @pie4928
    @pie4928 Жыл бұрын

    Чушь какаято этот солед

  • @nicholasspezza9449
    @nicholasspezza9449 Жыл бұрын

    Какая нах джава в уроках по OOП Python.

  • @back_to_life0
    @back_to_life06 ай бұрын

    Курс клёвый , но конец подкачал Нету абстрактных методов..

  • @back_to_life0
    @back_to_life06 ай бұрын

    Потчем тут ява к пайтону?

  • @selfedu_rus

    @selfedu_rus

    6 ай бұрын

    это не про Python, а про SOLID, а SOLID - про все ООП

  • @back_to_life0

    @back_to_life0

    6 ай бұрын

    @@selfedu_rus вот только это в плейлист ООП python

  • @selfedu_rus

    @selfedu_rus

    6 ай бұрын

    он во всех плейлистах по ООП, не только в Python

Келесі