Суть Объектно Ориентированного Программирования на примере Factorio

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024
  • #ООП #программирование #factorio

Комментарии • 294

  • @worldOFfans
    @worldOFfans 6 месяцев назад +330

    Главный враг и спутник любого факториста - "пока так, потом перестрою"

    • @djojbbhf
      @djojbbhf 6 месяцев назад +11

      А потом лень, я лучше новое добавлю рядом а старое будет стоять

    • @arms.strong
      @arms.strong 6 месяцев назад +23

      В программировании также если что =)

    • @user-ch76tcye4vvuu8
      @user-ch76tcye4vvuu8 6 месяцев назад +7

      @@djojbbhf Да, я строю новый завод, который покрывает объемы производства старого, стопаю старое производство, сношу старое производство.
      В программировании точно так же: есть хреново спроектированая подститсема, но на момент создания она устраивала. Проектируется новая, имплементируется, возможно часть функционала переводится, бывает параллельно работают обе... в конце концов переводится вся работа приложения на новую подсистему, выпиливается старая.

    • @SerJei91
      @SerJei91 6 месяцев назад +5

      Нет ничего постояннее, чем временное)))

    • @waste-moon
      @waste-moon 6 месяцев назад +1

      И программиста....

  • @sadHamster
    @sadHamster 6 месяцев назад

    Это безумно хорошо и наглядно. Даже мотивирует писать именно так.

  • @kelrimor2720
    @kelrimor2720 6 месяцев назад +1

    Видны простои ресурсов, например медной проволоки, потому что не учтены соотношения. По наглядности все отлично, по эффективности не очень.

  • @crutchmaster9637
    @crutchmaster9637 7 месяцев назад +1

    9:30 Но так же можно сказать про функциональщину и чистые функции, кек.

  • @nikelsad
    @nikelsad 6 месяцев назад

    Полиморфизм вообще мимо, по-моему.
    Появился ролик, который чётко раскладывает принципы ООП по полочкам Факторио, насколько это возможно. "Парадигма ООП в Factorio, или как натянуть сову на глобус": ruclips.net/video/N8Q9TwwsVcI/видео.html
    Хотя и там я не со всем согласен.

  • @RichardLofty
    @RichardLofty 6 месяцев назад +1

    Ооп - раковая опухоль поражающая код плохих инженеров.

  • @svaig
    @svaig 6 месяцев назад

    Пример, откровенно кладущий на половину принципов программирования.
    Объект рабочий, но не эффективен. Эдакий универсальный папа Карло

  • @topa4253
    @topa4253 6 месяцев назад

    Не спросят а поинтересуются.

  • @ВладиславКоролёв-ц9э
    @ВладиславКоролёв-ц9э 6 месяцев назад

    B l y a chel 😢

  • @pakostnik730
    @pakostnik730 7 месяцев назад +104

    Я: наблюдаю, как для производства модулей к заводам поступает руда вместо готовых плит.
    Мой глаз: **дергается как тварь**

    • @alexmuliar4615
      @alexmuliar4615 6 месяцев назад +16

      Во во, получеться что "объект" отвечает не только за работу с "данными", но и за их "парсинг", чем нарушает принцып Singe responsibility. Сити блоки куда ближе по сути к архитектуре програмирования

  • @DaemonLOG
    @DaemonLOG 7 месяцев назад +77

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

  • @mzaytsev
    @mzaytsev 6 месяцев назад +12

    Пожалуй худшее объяснение ооп которое мне попадалось)

  • @vergil6366
    @vergil6366 9 месяцев назад +82

    После такого пояснения появляется желание ввести игру factorio в образовательную программу.

    • @qwertymangames1800
      @qwertymangames1800 7 месяцев назад +14

      Никто из опытных игроков так не строит базу. Это очень не эффективно, только один сборщик который долго производит одно улучшение.

    • @worldOFfans
      @worldOFfans 6 месяцев назад

      Множество раз слышал о таких идеях

    • @Spectre4490
      @Spectre4490 6 месяцев назад +1

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

    • @qwertymangames1800
      @qwertymangames1800 6 месяцев назад

      @@Spectre4490политические уроки каждый год добавляют новые и не задумываются об этом)))

    • @TheRedfordby
      @TheRedfordby 6 месяцев назад

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

  • @uuuummm9
    @uuuummm9 6 месяцев назад +76

    Как ни странно, но объяснение из вики о том, что "всё должно быть на объектах" гораздо точнее описывает суть ооп чем остальные 99% этого ролика.

    • @uuuummm9
      @uuuummm9 6 месяцев назад +1

      @Bionic_Budda в функциях.

    • @uuuummm9
      @uuuummm9 6 месяцев назад

      @Bionic_Budda структуры данных.

    • @uuuummm9
      @uuuummm9 6 месяцев назад

      @Bionic_Budda можно и так рассмотреть.

    • @uuuummm9
      @uuuummm9 6 месяцев назад

      @Bionic_Budda это адресовано мне?

    • @uuuummm9
      @uuuummm9 6 месяцев назад

      @Bionic_Budda я просто спросил, хз чего ты психанул.

  • @stupnum8764
    @stupnum8764 10 месяцев назад +35

    а можно играть на "микросервисной архитектуре", на так назывемых сити блоках. каждый ситиблок это территория, огражденная железной дорогой, например квадратики 100 на 100 рельм. на такой ситиблок можно завохить ресурсы и забирать. каждый ситиблок отвечает за создание конкретного ресурса. например плавильный ситиблок, или ситиблок создающий все предсеты в игре, необходимые для строителства других ситиблоков, так называемый дрон молл. можно создать чертежи под каждый ситиблок и ресурс в игре, а также чертеж самого ситиблока, который имеет относительную привязку, благодаря чему можно не отпуская мышку поставить 100 ситиблоков на чертеж. по границе ситиблока и внутри можно установить дрон станции, за счет чего дроны будут брать рельсы и все прочие ресурсы из молл ситиблока и строить ваши ситиблоки, а вам останется лишь разрабатывать залжеи ресурсов, обеспичвать базу энергией(если строить сити блок на воде, то в один ситиблок влезет 4 реактора, суммарной мощностью 4.4 гвт, что при большом обьеме производства не так и много)

    • @Lucky-bw8ru
      @Lucky-bw8ru 7 месяцев назад +4

      Этой архитектуре отлично подходит мод LTN - Logistic Train Network. Этот мод вводит дополнительную логику для поездов, которая позволяет им ездить из депо, куда угодно, чтобы забирать или отвозить ресурсы кому нужно. Станции в таком случае делятся на 2 типа: Provider - станция поставщик ресурсов из подключенного хранилища и Requester - станция, запрашиватель ресурсов из Prodiver станций.

    • @Kigirity
      @Kigirity 6 месяцев назад +3

      Ну ситиблоки - это и есть модули, созданные под конкретную задачу и отвечающие всем требованиям объектного проектирования

    • @user-ch76tcye4vvuu8
      @user-ch76tcye4vvuu8 6 месяцев назад +2

      Так и делал, в принципе рабочая схема, но масштабируется тяжело. Будущее за суперблоком - ситиблок, который на вход принимает 5 базовых ресурсов (4 руды и нефть), производит всю науку одновременно и всю ее перерабатывает. Далее просто копипастим суперблок столько сколько науки хотим (вытягивает процессор), нарасчиваем добычу, вытесняем кусак. Сюда нужна обслуживающая инфраструктура (электроэнергетика, заправка поездов, молл) - ее можно оставить на ситиблоках.
      Правда играть становится не интересно.

    • @i3ootmanLIVE
      @i3ootmanLIVE 6 месяцев назад

      @@user-ch76tcye4vvuu8 вот да, не интересно играть это точно подмечено. самый большой рост заводчанина это приход понимания что спагетти весело до поры до времени, потом тебя это начинает бесить и тебя осеняет что можно производить все по отдельности и выводить на общую шину. после ты переходишь на полный формат базы на шине, дальше на ситиблоки и тд и понимаешь "ах, какое же спагетти вкусное было" и возвращаешься к началу начал :)

  • @kormannn1
    @kormannn1 Год назад +25

    Теперь паттерны в программировании через factorio

    • @gilman2056
      @gilman2056 Год назад +3

      на Хабре видел кстати статью о реализации архитектурных паттернов на factorio, оттуда и узнал про игру

  • @xoxoji1984
    @xoxoji1984 6 месяцев назад +3

    Мда, Федор объяснил конечно намного лучше, нагляднее, но что главное более подробно из без воды на пол ролика

  • @p.k.r.7963
    @p.k.r.7963 7 месяцев назад +60

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

    • @sergiurosca9394
      @sergiurosca9394 7 месяцев назад +6

      Продолжи аналоги, если дроны это аякс, а руда это sql, то его функционал ляжет от 10 посетителей.

    • @TestTest-cr2xb
      @TestTest-cr2xb 6 месяцев назад +1

      Иди учи мат часть ооп, ты не прав!

    • @p.k.r.7963
      @p.k.r.7963 6 месяцев назад

      @@TestTest-cr2xb И в чём же?

    • @sergiurosca9394
      @sergiurosca9394 6 месяцев назад +4

      @@p.k.r.7963 Когда ты указываешь на неэффективные элементы и предлагаешь пути оптимизации, ты почти наверняка прав. А когда тестер говорит что оптимизация там не нужна, он точно не прав.

    • @Дмитрий-с3в8с
      @Дмитрий-с3в8с 6 месяцев назад +7

      Чел тут он наглядно показывает как ооп работает, он ресурс дронами привозит 🤷‍♂️ о чем речь тут все для наглядности а не для эффективности

  • @Авакидик-щ2з
    @Авакидик-щ2з 6 месяцев назад +3

    Спасибо🤝
    Пожалуй вы 1 человек в ютьюбе кто рассказал об ООП понятно. Как говорится кто ясно мыслит тот ясно говорит.

  • @sevengiants
    @sevengiants 6 месяцев назад +2

    Маленькая ирония в том, что факторио написан с помощью подхода, ориентированного на данные, а не объекты.

  • @andrewxd5705
    @andrewxd5705 6 месяцев назад +2

    Я как истинный любитель натянуть сову на глобус и подумать о вечном, а также загрузить коллегу за чашкой смузи в офисе (которого у меня больше нет) провел не мало часов размышляя о том что же не так с ООП и как его исправить.. Я пришел к выводу, что концепция ООП не ложиться в концепцию вычислительных машин.. Ни один язык который я изучал в надежде найти тот самый ООП не дал ощущения работы с объектами.. Везде я работаю с алгоритмами и данными, а объекты эти ваши - прикол какой-то который все привыкли писать, а еще писать про них толстенные книги и рубить бабло на них)
    Мне кажется эта некая попытка стандартизировать программирование.. Якобы нарубал себе объектов как шестерен и работаешь с ними, собирая то ли часы то ли ракету, но только каждый объект сука личность и каждая запятая в нем важна.. Вот и получается, что всегда нужно лезть своими грязными ручонками в реализацию и крутить хвосты каждому объекту в индивидуальном порядке.
    В общем и целом мне кажется, чтобы построить коммуни... Извините... То есть что бы получить чистый ООП, ты как программист должен оперировать объектами.. Жонглировать ими, но никогда не залазить в их реализацию, что к сожалению не возможно на том уровне абстракции, где мы сейчас находимся..
    Так что всем бобра..
    ЗЫ: Я так и не пон, причем тут факторио к ООП... Объясните, люди добрые :)

    • @Хорошийдруг-ц8ы
      @Хорошийдруг-ц8ы 6 месяцев назад

      прикол в том, что ты и описал. просто визуально показал чел, что делаются "кубики", из которых потом что-то мастерится

  • @yoda-quasar
    @yoda-quasar 6 месяцев назад +3

    Немножечко понимаю, что такое ООП. Немножечко пользуюсь. Но не владея контекстом игры от такой визуализации мне ничего понятнее не стало. Вернее, на словах концепцию и аналогию с игровым конвейером я понял, а иллюстрация какая-то не понятная. Я не понял, что она иллюстрирует.

  • @fed1splay
    @fed1splay 6 месяцев назад +1

    Вот так объяснил) По традиции - переделывай ролик.
    Абстракция в игре - это в самом примитивном виде архитектурный подход к строительству фабрики. Макароны, шина, сити-блоки. Это примеры абстракции. Когда вся суть своидтся к моделированию сущностей и их взаимодействия. Сущности тут будут представлены как некие цеха или блоки цехов, а взаимодействие - система транспорта. Ленты, дроны, поезда.
    Инкапсуляция - это любой законченный цех, получающий на вход продукт X, выдающий продукцию Y. При этом взаимодействие с цехом идёт только через входные-выходные интерфейсы. Ленты, или жд станции, например. Или весь пример в ролике, производящий модули трёх типов из базового ресурса.
    Наследование можно рассмотреть с точки зрения композиции и агрегации. Пример композиции - это совокупность модуля и сборочного автомата. А агрегация - это совокупность манипулятора и сборочного автомата. Подобные конструкции применяются всегда и везде.
    Полиморфизм тоже можно рассмотреть с разных сторон.
    Ad-hoc представляется в виде совокупности сборочного автомата и разных рецептов в нём. Тут проволка, там шестерни. Параметрический полиморфизм - это в целом возможность менять рецепты внутри сборочников. Полиморфизм подтипов можно представить на уровне двух цехов, производящих железные пластины. Один цех производит на обычных печках, другой - на электропечах.
    Нельзя натянуть сову на глобус, не рассматривая сабж в комплексе.

  • @АлександрГалицкий-т6ф
    @АлександрГалицкий-т6ф 6 месяцев назад +1

    Вся суть ООП в том, что вы пишите код, который работает с абстракциями, а не напрямую с данными. Классы это шаблоны объектов, поэтому вы можете указать, что вы передаёте не некий объект, а объект соответствующий определённому шаблону. Ну и нужно понимать, что приложение это уже объект и невозможно написать программу, которая бы полностью была написана на ООП, всегда будет какаято часть императивного кожа, включая программные объекты. Завод в факторио никак не объясняет ООП, это просто работающая программа, каждый заводик это объект, а абстракции автор предлагает держать в голове, ну это не ООП подход.

  • @Koneko_Lovery
    @Koneko_Lovery 6 месяцев назад +1

    Блин, даже за 2 года всего 676подписчиков, у тебя отличный контент, желаю дальнейшего развития канала и продвижения контента ютубом.

  • @mn4840
    @mn4840 8 месяцев назад +4

    но ведь в примере в конце нарушен по сути базовый приинцип "Don't repeat yourself". причем настолько грубо, насколько это вообще возможно ))
    а так игра великолепна )

    • @iamdozerq
      @iamdozerq 6 месяцев назад

      Факторка скорее процессор чем код.

  • @Essss
    @Essss 6 месяцев назад +1

    сразу видно что автор не программист, после слов "абстракция - это так себе")))

  • @evgenasd8892
    @evgenasd8892 6 месяцев назад +8

    если функционал из заводика 1 нужно поменять, то придется не только пересобирать наследующиеся от 1го завода объекты: 2,3,4, но и предусмотреть ситуации в которых поведение 1го влияет на остальных

  • @Prokripton
    @Prokripton 3 года назад +9

    Требую продолжения :) Продолжай в том же духе . Когда ждать продолжения ?????

  • @Arsen1119
    @Arsen1119 9 месяцев назад +8

    Факторио гениальная игра

  • @Velanteg
    @Velanteg 6 месяцев назад +1

    Ну это какое-то очень далекое описание. Почему бы просто не сформулировать что основа ООП это по сути группировка вложенных сущностей по функционалу, где более высокий уровень содержит общие черты присущие большинству низкоуровневых, а на низких уровнях соответственно растет специализация.

  • @alexandr9sobol
    @alexandr9sobol 6 месяцев назад +2

    А полиморфизм, это когда ваську сводили к ветеринару )))

  • @VaeV1ct1s
    @VaeV1ct1s 6 месяцев назад +1

    Почему бы не попить чай до записи ролика?
    UPD: лучше ролик не записывать, если такие проблемы со знаниями в сфере/формулировкой мысли

  • @ЕгорПриходько-у6з
    @ЕгорПриходько-у6з 6 месяцев назад +1

    Большего бреда я в жизни не слышал

  • @ИванСилячев
    @ИванСилячев 6 месяцев назад +2

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

  • @MrConnectoid
    @MrConnectoid 6 месяцев назад +3

    Благодаря этому ролику понимание ООП усложнилось в 50000 раз. В университете, давным давно, парадигма ООП гораздо проще объяснялась на примере игры в шахматы. Но автору надо отдать должное за оригинальный, не тривиальный, подход к раскрытию сути ООП. Лайк.
    С автором согласен, что в подавляющем большинстве мелких проектов не используется ООП.

    • @JamesBond-bu8co
      @JamesBond-bu8co 6 месяцев назад +1

      Приветствую! Не могли бы Вы Пересказать хотя бы вкрадце это объяснение на примере шахмат? Было бы интересно узнать

    • @Pro100YSER
      @Pro100YSER 6 месяцев назад

      тоже интересно что за объяснение на шахматах

  • @relimerk-eg8lj5dl5n
    @relimerk-eg8lj5dl5n 6 месяцев назад +1

    Схема в конце по-моему великовата, наверное это всё можно было бы ужать

  • @ВладиславПодпоркин
    @ВладиславПодпоркин 6 месяцев назад +1

    Это скорее пример композиции, нежели наследования. Если завод модуля скорости 2 наследует завод модуля скорости 1, то он может производить на выход модуль скорости 1. Но это не так, он выдает модуль скорости 2!! Тут разве что один уровень наследования -- SpeedModule1Workshop: Workshop и SpeedModule2Workshop: Workshop, который переиспользует SpeedModule1Workshop, ну и т.д. для SpeedModule3Workshop.

  • @qwertymangames1800
    @qwertymangames1800 7 месяцев назад +1

    Программистам везде мерещиться ООП. Даже в Factorio ООП не нужен так как завод показанный в видео чрезмерно много место занимает, а выхлоп - один заводик который долго производит карту.
    Как делают опытные игроки в Factorio: реализация через шину или сити-блоки на поездах.
    Принцип шины самый лучший. Идёт огромная шина из конвейеров. Мы стараемся делать такие блоки производства которые берут из шины по максимуму ресурсов и производят полный конвейер продукции, возвращая в шину результат. По сути реализация функционального программирования. И это работает в разы лучше так как конвейеры всегда заполнены по максимуму.
    Из минусов - ширина шины может быть большой. По этому для решения этой проблемы базу перестраивают под поезда и строят сити-блоки.
    Там уже другая проблема - размеры сити-блоков бывают огромны. Но зато расширять производство на них проще. Поезда сами куда нужно отвозят товар и сами забирают готовую продукцию. Принцип тот же, только на поездах.

  • @mertviy_games
    @mertviy_games 6 месяцев назад

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

  • @snatvb
    @snatvb 6 месяцев назад +1

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

    • @trabloid
      @trabloid 6 месяцев назад

      Вы ведь на go пишете, так?)

    • @snatvb
      @snatvb 6 месяцев назад

      @@trabloid rust, go, typescript, изредка C++

  • @emuzaurus
    @emuzaurus 6 месяцев назад

    Ооп э о деградантская философия, по замыслу тормозная

  • @kokoz116
    @kokoz116 6 месяцев назад

    Поймите наконец-то!!! Когда кто-то берется объяснять ООП, это значит люди, что которые хотят узнать о ООП или начать внедрять в свои проекты, хотят посмотреть РАЗНИЦУ!!!
    Т.е. я пишу процедурно...ага работает но по формлению кал. А как бы было тоже самое,но через ООП. Т.е. нужно очень четко сравнить преимущества, чтобы человек видел и такой: "Аааа, так это же проще, вот оно как делается". А не так: "Да, круто! Но чет страхово переводить свой проект на ООП".
    Т.е. нужно показать на примере реализации одной и той же задачи. Грязный код VS ООП. И меееедленно,как для слоупоков, пояснять, что вот этот кусок мы переписываем, иначе в дальнейшем мы просто не сможем в масштабирование

  • @nikelsad
    @nikelsad 6 месяцев назад

    При объяснении ООП всегда рассматривают 3 либо 4 принципа. Но почему-то мало где говорят, в чём вообще смысл слов "объектно-ориентированное", в чём выражается та самая "ориентированность на объекты". Есть ёмкая фраза насчёт этого, и насчёт инкапсуляции в частности. Звучит примерно так: "объединение данных и методов работы с ними". Т.е. всё, что можно делать с данными (методы, функции, операторы), описаны в одном месте (классе) с этими данными.
    Правда, как это переложить на Факторио -- не знаю :)

  • @zakr2
    @zakr2 6 месяцев назад

    Пока вики цитировал было норм, потом скатился к собственным рассуждениям и потерпел фиаско. Что за бред я посмотрел?

  • @nikelsad
    @nikelsad 6 месяцев назад

    Один из видов полиморфизма -- перегрузка методов в нескольких формах, с разными аргументами и разной реализацией. В Факторио можно было бы хорошо это показать, вот несколько вариантов полиморфизма:
    1. Один и тот же модуль даёт разные продукты в зависимости от поступивших аргументов. В этом видео, например, можно подавать в модуль медь и железо и получать первые (зелёные) платы, а если добавить нефть -- получатся уже вторые и третьи (красные и синие) платы. Хоть в начале на этот модуль потратишь больше ресурсов, но после появления нефти он без перестройки будет выполнять доп. функционал. В Факторио это невыгодно, а в программировании лишние строки кода есть не просят :)
    2. Плавильный цех может выполнять одну функцию, но быть построен из печей разного вида. Имеем разные формы (реализации) класса, выполняющие одну функцию.

  • @mranderson2492
    @mranderson2492 6 месяцев назад

    Попытка хорошая в правильном направлении
    Правда мне сразу понятно (программирую больше 10 лет), что
    Автор не програмист
    Абстракция это основа проектирования любого ПО впринципе - ты когда создаешь что-то сложнее чем г*вно и палки всегда в голове представляешь какую то абстракцию системы и её модулей, как они взаимодействуют друг с другом.
    Также за полиморфизм не объяснил ничего толком
    "Использует весь функционал" - это не полиморфизм друже
    Поли - много. Морф - форма структура
    Тоесть с одним и тем же объектом можно взаимодействовать как с разными структурами:
    Например класс Человек - это животное но с ним можно говорить
    Тоесть мы можем говорить с объектом человек1
    Но также этот самый объект мы можем покормить так как он является Животным (наследуется от класса Животное)
    Грубо говоря это и есть полиморфизм - мы можем взаимодействовать с человеком как с человеком либо как с животным.
    Мне кажется в факторио не получится показать полиморфизм - бо скорее всего получится спагетти фабрика :D
    Но как говорится всё в ваших ногах.

  • @trabloid
    @trabloid 6 месяцев назад

    Про ООП написано много мутных слов, проблема в том, что в определении ООП перечислены принципы, а под ними можно понимать разные вещи. То есть само определение мутное)
    Поэтому рекомендую читать классику - "Чистую архитектуру" дяди Боба. Он пожил, он знает. Тем более, что он вертел эти ваши принципы и показывает, что не ООП язык их вполне себе поддерживает.
    Лично я считаю основополагающими для ООП только два принципа - инкапсуляцию и полиморфизм. Причем самый интересный - второй.
    С первым понятно, это сама возможность строить объекты и смотреть на них как на черный ящик - скрывать детали реализации. Это абстракция данных. А второй - это абстракция методов. Он дает возможность делать интерфейсы, инверсию управления, и все плюшки абстрагирования и контроля зависимостей. Кроме абстракции данных и методов собсно ничего нет, так зачем множить сущности? Без наследования что, объекты не сделать?
    То есть инкапсуляция позволяет нам строить бесконечно сложные системы, а полиморфизм - делать их части простыми и взаимозаменяемыми. Условно, чтобы можно было использовать разные детали, изготовленные разными людьми в разных местах - основа машиностроения. Ну и Мартин считает ООП-шным только полиморфизм, поддерживающий инверсию зависимостей - интерфейсы. Есть в языке интерфейсы, значит поддерживает ООП. Нет - только какую-то его часть.

  • @scarlatum
    @scarlatum 6 месяцев назад

    Всё же проще в разы: У тебя есть объект, а объект это совокупность стейта\данных и методов\функций. Остальное про инкапсуляцию, и прочую композицию можно просто отбросить, ибо она и функциональной парадигме присуща в равной степени
    Если на примере факторио говорить: ООП это когда ты завод для железных плит, и всего с ними связанного, на железном руднике строишь прямо на месте. При этом, строишь аналогичный завод но уже на месте медного рудника, даже если заводы похожи как две капли воды.
    ФП же, в свою очередь, это когда ты строишь кучу мелких фабрик, и начинаешь дрочиться с логистикой ресурсов, делая при этом важное ебало, и яростно пытаешься убедить себя в неотвратимости и "единствоправельности" такого подхода.
    Короче, либо процедурка на контроллерах, либо AI no-code платформы для клепания крудов, остальное от лукавого! 🫠

  • @sc0or
    @sc0or 6 месяцев назад

    Полиморфизм: я не знаю, кто ты, но вот тебе деньги, надеюсь, ты меня не обманешь. Инкапсуляция: когда живешь в однокомнатной и устроил вечеринку. Наследование: бейджик "ламборгини" на тракторе.
    Вам, конечно, чсв чешется, но то, чем забита ваша голова, и что вы оттуда достаете на собесах - это костыли для кривой архитектуры (к тому же НИКАК не помогающие избегать кривого кода в виде: "земля, копайся").

  • @worldOFfans
    @worldOFfans 6 месяцев назад +3

    Проблема в балансировке. Где то 2 завода овермного, где то нужно 20 ставить чтобы спрос удовлетворить, отсюда вермишель

    • @archniki_
      @archniki_ 6 месяцев назад

      Ну так там есть цифры соотношения сам считай

  • @alexorlovecky6662
    @alexorlovecky6662 6 месяцев назад

    Только одного меня удивляют заядлые оопэшники, фразами типа: не нужно у класса "работник" дёргать его функции/методы, нужно ему "просто" дать задачу и пусть он её сам решает...
    А как её дать? Силой мысли?
    Вся эта тема с парадигмами, выглядит как какая то вера, где если копнуть поглубже, то в ответ получаем - "гладиолус".
    Вот один уважаемый оопэшник, твердил, что в трушном ооп языке, не должно быть даже ифов и тд.. мол это пережиток.
    И так вместо обычного иф, должен быть объект, который это сделает. Ну в общем маразм крепчал.
    Всё меньше здравого смысла, всё больше парадигм и гладиолусов.

  • @ЮрийКолесниченко-й5с
    @ЮрийКолесниченко-й5с 6 месяцев назад

    С ООП код становится проще?! Или наоборот сложнее? Код без ООП читать проще, чем с ООП, при условии, что его написали понятно. Код как с так и без ООП можно написать так, что в нём ничего будет не понятно, тут уж в зависимости от поставленной задачи: написать так, чтобы другим было понятно; или написать так, чтобы никто ничего не понял...

  • @alexey1521
    @alexey1521 6 месяцев назад

    В факторио нет интерфейсов. Какое ооп? Ну и ооп не про качественный код. Обычно это ебаный пиздец. Либо легаси с чейном наследования 10 классов, либо кошмар с ДИ, фасадами, все дергается непонятно откуда и т.д. Лично я в факторио хуярю ситиблоки на железной дороге, похоже на шину с микросервисами, хз как ты к этому приплел ооп) А так как ты показал строиться получиться спагети и в мид-гейме уже начнешь охуевать и строить костыли(прямо как с реальным ооп =))

  • @yashenkin
    @yashenkin 6 месяцев назад

    полиморфизм - это не "выдача объектом всего функционала, что он умеет"
    полиморфизм - это единообразие обращения с объектами разного типа через один и тот же интерфейс, встроенный в них. механизмы предоставления такого интерфейса могут быть разными, но суть та же: обрабатывать разные объекты одним способом. иными словами, не переобучая рабочий узел работе с разными сущностями, всё-же, получать от него обработку широкого спектра этих сущностей, всего лишь внедрив в них одинаковый интерфейс обращения. так, в реальной жизни, человек может ухватиться за любой поручень или ручку. всё, к чему приделана "рукоятка" в форме изогнутой палки, подходит в качестве удобного интерфейса для руки - двери, рамы окон, поручни, перила, ручки сумок, прорези коробок, рукоятки ножей, оружия, джойстики, рычаги, рули управления транспортом, всё это - полиморфно обрабатываемые человеческой рукой, как универсальным хватателем, объекты. пример из области программирования - это возможность осуществить операцию сложения двух строк, либо двух чисел, либо чего-то ещё, для чего оперделена операция сложения, при помощи бинарного оператора "+". оператор один и тот же, а типы разные, как разнятся и результаты. но вот способ оперирования - один и тот же: два значения на входе и одно на выходе в качестве результата, что составляет интерфейс операции для полиморфной обработки.
    ну и конечно же, динамический/статический полиморфизм, предоставляемый механизмом наследования, либо реализации интерфейса (набора методов и/или свойств) и позволяющий получать полиморфность по наследству, любо по структурной схожести, предоставляя возможность для объектов реализовывать обращение к себе со стороны других объектов через хорошо известный интерфейс.

  • @unlike777
    @unlike777 6 месяцев назад +15

    Чувак ты в корне не понял ООП =)

    • @plohuena69
      @plohuena69 6 месяцев назад +1

      ну напиши как ты понял а то складывается впечатление что ты сам не знаешь

    • @unlike777
      @unlike777 6 месяцев назад

      @@plohuena69 давайте для начала начмнем с концеции: "Класс" объекта и "Инстанс" объекта.

    • @РоманГапонов-л5й
      @РоманГапонов-л5й 6 месяцев назад

      И ?@@unlike777

    • @unlike777
      @unlike777 6 месяцев назад

      @@РоманГапонов-л5й если у тебя возникает вопрос, то к сожалению ты тоже не понимаешь смысла

    • @РоманГапонов-л5й
      @РоманГапонов-л5й 6 месяцев назад +1

      А что вам мешает записать свое видео на ютубе и обьяснить свою версию понимания ООП?

  • @TheZloySanta
    @TheZloySanta 6 месяцев назад

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

  • @АлександрСуворов-г3х
    @АлександрСуворов-г3х 6 месяцев назад

    Абстракцию нужно смотреть в современном психологическом справочнике. Каждый объект в современном мире мы рассматриваем как абстракцию, т.е. как множество отдельных свойств присущих объекту, которые можно рассматривать по отдельности, с не как какой-то несокрушимый монолит, это по сути и есть абстрактное мышление. Взять например наш любимый автомобиль каждый представит себе конкретный автомобиль, но в абстракции это транспортное средство которое содержит в себе некое бесконечное количество требований лиц которые его эксплуатируют, лиц которые на етом ездят, лиц которые это чинят, лиц которые это строят, лиц которые это разрабатывают, лиц которые... Думаю идею вы поняли и у каждой группы есть своя абстракция об этом объекте которая важная для одной группы и не очень важная для другойдругой и вроде можно рассматривать всё группы свойств объекта по отдельности, но успешным продуктом размышления будет "синергетический продукт" максимально удовлетворяющий всё группы, но при этом это не значит что ето будет удовлетворять всё группы по максимуму...

  • @comisarrex5961
    @comisarrex5961 7 месяцев назад +11

    за наглядную визуализацию через factorio конечно лайк, но есть пара замечаний:
    - завод все равно зависит от внешней среды, потому что нефть поставляется в бочках, а значит где-то за кадром есть автомат куда отвозят пустые бочки и отправляют полные. так что с инкапсуляцией тут беда.
    - вместо руд можно было бы сразу поставлять пластины, один хрен плавильни на базе должны быть. да и электросхемы нет смысла производить внутри этой системы. они производятся в отдельном блоке в больших кол-вах. также с нефтянкой. иначе получается дублирование производства. инкапсуляция в том, что для создания последующих модулей нужен предыдущий.
    можно было бы сделать один ситиблок, к нему подвести пластины, схемы, пластик, а дублировать бы пришлось только автоматы с модулями.
    - сбор модуля 1
    - сбор модуля 1 + модуль 2
    - модуль 2 + модуль 3
    как должно быть проще для восприятия. нет нужды дублировать производство базовых ресурсов. да и полной автономии добиться нельзя, все равно где-то должен стоять генератор, ситиблоки для руд, мол и тд

    • @alexanderkluchnikov2473
      @alexanderkluchnikov2473 6 месяцев назад +3

      Хороший ответ, наглядно ООП рассыпалась

    • @comisarrex5961
      @comisarrex5961 6 месяцев назад +3

      на самом деле если вообще всю базу сделать из ситиблоков, то будет ооп. в каждом блоке свое производство, независимо от другого. наследование - когда для одного ситиблока требуется ресурс из другого. пример: производство схем или банок. ну и сама база это объект

  • @alexanderkluchnikov2473
    @alexanderkluchnikov2473 6 месяцев назад

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

  • @ilyamedvedev8943
    @ilyamedvedev8943 6 месяцев назад

    Сколько я знаю factirio построена на data-oriented design так что плохой пример можно было выбрать пальцем в небо почти на любую игру кроме этой😂

  • @stanislavshilo6022
    @stanislavshilo6022 6 месяцев назад

    Как я тебя понимаю, 50 000 ракет запущено, программист.......java

  • @ДмитрийБелоус-э7о
    @ДмитрийБелоус-э7о 6 месяцев назад

    Честно говоря, я руду переплавляю в плиты прямо у месторождений. А на сборщики подаю плиты с поездов, через конвейеры. Иногда даже второй передел (плиты в проволоку) делаю у рудника, а поездами развожу.
    Но ролик всё равно хорош!

  • @Fors_Major
    @Fors_Major 6 месяцев назад

    ООП это именно что удобство понятность и структурированность для любого пользователя чтеца или редактора кода, но никак не оптимальный способ выполнить конкретную задачу. Если у человека есть желание сделать своё "чудо", то ООП не его вариант в 80% случаев.

  • @СергейАкопян-ч2л
    @СергейАкопян-ч2л 6 месяцев назад +1

    Если уж говорить об ООП применительно к играм, то обязательно нужно упомянуть Space Engineers. Это та игра, где C# можно изучить. Там все системы на иерархии различных интерфейсов построены. И заодно изучить векторную алгебру - там 3D пространство со всеми вытекающими: векторы, матрицы...

  • @HaTuCk
    @HaTuCk 6 месяцев назад

    Я в програмировании новичек и может так ооп и работает? Но с точки зрения механики факторки, база просто ужасная с минимальной производительностью. Начиная с того что на шинах не переплавленный металл, а руда. Скорость создания проводов настолько большая что туда можно загружать металл с 3х манипуляторов, а значит не нужно их дублировать. Да и схемы можно было бы отдельно производить, а потом завозить туда где тебе нужно.

  • @yaroshchenko_creative
    @yaroshchenko_creative 6 месяцев назад

    Я до сих пор не могу принять мозгами ооп, для меня это бред, не зря я говорил, что ооп - это удел инженеров 🤣
    не считаю, что ооп это правильно, а где ещё виды ооп, их вроде 4 вида, не только классы как в java - подобном синтаксисе

  • @Boltvin
    @Boltvin 6 месяцев назад

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

  • @ПавелИванов-м5ю
    @ПавелИванов-м5ю 6 месяцев назад

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

  • @iamdozerq
    @iamdozerq 6 месяцев назад

    Факторка все таки микроконтроллер, слишком низкого уровня. Такую абстракцию как функцию ввести невозможно. Без копирования элементов далеко не уедешь. Это полностью соответсвует проектированию микроконтроллеров.

  • @Nemyrexe
    @Nemyrexe 6 месяцев назад +3

    @magla не могли бы вы дать ссылку на ваш публичный репозиторий? ищу примеры хорошей реализации ооп практик. заранее спасибо

  • @D0F4M1N3
    @D0F4M1N3 6 месяцев назад

    Сам говорил объекты должны быть независимые, но заводик 2 наследует заводик 1. Интерфейсы..думаю там так.

  • @MrMelburn
    @MrMelburn 6 месяцев назад

    Если так непоследовательно и сбивчиво объяснять, то так и не поймёшь что такое ООП.
    Автор скачет по темам, не заканчивает мысль и т.д.

  • @alexsv1834
    @alexsv1834 6 месяцев назад

    Жалко, что в наше время молодёжь совсем разучилась писать ООП

  • @psvgames3251
    @psvgames3251 6 месяцев назад

    Чувак, завязывай! Объяснять это не твое!!! Тем Более объяснять то что сам толком не понимаешь!!!

  • @8511a
    @8511a 6 месяцев назад

    Мне кажется это плохой пример. т.к. расширяемости никакой. На мой взгляд в факторио нужен подход микросервисов с шинами ресурсов и продуктов

  • @ironoscar3948
    @ironoscar3948 7 месяцев назад +1

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

  • @T0xical
    @T0xical 6 месяцев назад

    За попытку объяснить - спасибо. Само видео - нихера не понял, даже при попытке притянуть сюда факторио.

  • @alexandr9sobol
    @alexandr9sobol 6 месяцев назад

    Класс - это не объект это как раз абстракция, которая описывает объект. А объект - это уже готовый экземпляр класса.

  • @alexfrozen
    @alexfrozen 8 месяцев назад +2

    Да-да-да. Всё как в жизни. Сделал один объект красивым, остальные идут в жертву. Например пластик. Копипаста такая линейных участков кода. Потом начинаешь вылизывать объект производства пластика, что-то третье идёт по швам. Третье переделал - другие два надо перепилить. Весь проект этим и занимаешься. Нужно правильно выбирать парадигму. Видел "шедевр" однажды как банковские процессы на ООП писали. Объект "кредит" у меня в мемах.

    • @МихаилРоманов-г8и2э
      @МихаилРоманов-г8и2э 8 месяцев назад

      гыгы

    • @0imax
      @0imax 7 месяцев назад

      Если задача плохо решается в объектной парадигме - не надо руками и ногами запихивать в неё решение))
      Да, в остальную систему всё-равно придётся наверняка встраивать в виде объекта, но никто не мешает внутри сделать так, как было бы удобнее.

  • @igorgrischenko6518
    @igorgrischenko6518 6 месяцев назад

    Какое тут ООП? Ты нарушил принцип DRY, продублировав функционал.

  • @Ешь-р2и
    @Ешь-р2и 6 месяцев назад

    Чел, мы идиоты. Где картинки где динамика? Слишком мало Factorio

  • @vvv7220
    @vvv7220 6 месяцев назад

    Я может процента три понял из этого видео. До смешного просто))))

  • @НиколайШиманюк
    @НиколайШиманюк 7 месяцев назад +2

    Факториссимо идиально подходит для групировки опереденного дейсвия (в одном заводе мы делаем метал в другом электронику и так далее)
    Респект за видео)

    • @0imax
      @0imax 7 месяцев назад

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

  • @aleks_versus
    @aleks_versus 6 месяцев назад

    Объяснил, как боженька: нихуя непонятно, но этому надо следовать.

  • @hhbi
    @hhbi 6 месяцев назад

    Булджать, делай видос про пчел, хорош факторио гонять

  • @WhiteZSY
    @WhiteZSY 6 месяцев назад

    Ох - уже недоджуны начали учить. Супер - нам меньше конкурентов.

  • @lisichkin_
    @lisichkin_ Год назад +4

    Очень интересный и понятный ролик. Круто)

  • @r1seup127
    @r1seup127 6 месяцев назад

    В полный список идеального ООП входят 9 принципов, и даже не 4

  • @minecraft4317
    @minecraft4317 6 месяцев назад

    Автор явно не понимает что такое "Инкапсулирование" и что такое "Полиморфизм"

  • @ВадимГилемзянов
    @ВадимГилемзянов 6 месяцев назад

    Можно еще EventBus построить на примере поездов 😁

  • @batpro7564
    @batpro7564 6 месяцев назад +1

    Только как бы то небыло, но в факторио выгоднее разносить производство по разным местам, в одном месте плавить железо, в другом медь, в другом нефть, так зачастую получаеися эффективние) (p.s. LTN сушествует)

  • @andreasbman1662
    @andreasbman1662 6 месяцев назад +1

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

  • @gakiddo
    @gakiddo 9 месяцев назад +1

    Как человек с 2к часами в факторке мне больно смотреть на эти макаронины 😂

  • @ВасилийЗайцев-н9ю
    @ВасилийЗайцев-н9ю 6 месяцев назад

    Снёс все деревья
    Никто не атакует
    Половина лент пустует
    Вот до чего доводит ваш ооп

  • @senser1o76
    @senser1o76 6 месяцев назад

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

  • @B08AH
    @B08AH 6 месяцев назад

    Это должны знать все, должны понимать все, не должен использовать никто.

  • @idstrctmsf
    @idstrctmsf 5 месяцев назад

    Потому что Yagni. Если заглядывать под капот маленьким проектам то там либо какой-то мощный фрейморк или ядро, где по сути все ООП уже написано, а программист просто создает готовые экземпляры готовых классов и пользуется готовыми методами, не раскрывая и 20% фреймоврка с которым работает, потому что в его целях это просто не нужно. На гитхабе очень сложно найти репы написанные с 0 для какой-то коммерции, так как они все закрыты.
    Честно говоря об ООП парадигме, она просто во многих случаях не нужна и раздувает твой код.

  • @kot007
    @kot007 6 месяцев назад

    очень много много много много воды и пауз. В один рилз или шортз можно все уложит на 1 минуту

  • @TheNickiller22
    @TheNickiller22 6 месяцев назад

    что за жуть. на вики более понятно всё описано.