Декомпозиция, типовые решения

Sdílet
Vložit
  • čas přidán 11. 09. 2024
  • В этот раз видео посвящено двум типовым задачам декомпозиции - заказу (и его деталям) и древовидной структуре
    Полный плейлист: • Основы архитектуры при...
    Курсы Front-End bit.ly/2Aq6zEr
    Курсы Solidity developer bit.ly/2QpsNjC
    Сайт учебного центра: bit.ly/2NJCnNM

Komentáře • 81

  • @fkyduckwarsaw691
    @fkyduckwarsaw691 Před 7 lety +5

    Ехал сегодня в авто и своим детям 6 лет рассказывал про декомпозицию из Вашего ролика.Если поймут они - то точно усвою сам.
    Дал им примеров парочку и всё,уже вечером дети рассказали маме - что такое декомпозиция,где применяется в жизни и почему она удобна!
    Спасибо за подробный ход мыслей новичка И как делать правильно.

  • @user-hl9se1ov6r
    @user-hl9se1ov6r Před 9 lety +14

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

  • @Garpunoff
    @Garpunoff Před 9 lety +3

    Программирую на PHP, совершенно не помню зачем подписался на ваш канал. Вдруг наткнулся на "байки" - слушаю с огромным удовольствием! Спасибо.

  • @ronrcf
    @ronrcf Před 9 lety +5

    Спасибо большое за ваши байки! =)
    Очень хотелось бы посмотреть видео о том каким образом можно развернуть код написанный на if-ах в ООП стиль, либо о методиках уменьшения использования if конструкций в коде.

  • @НиколайМорщаков

    Вы очень похожи на моего учителя информатики и когда я смотрю на Вас вспоминаю свою молодость.( Сначала он преподавал нам в школе а ещё вел факультативный кружок) Манера говорить один в один .Даже внешне похожи. Спасибо.

  • @MrGrechman
    @MrGrechman Před 7 lety +5

    Сергей, огромное спасибо! Вы очень понятно преподносите материал, очень полезно.

  • @tedirensmusic
    @tedirensmusic Před 9 lety +2

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

  • @ssurrokk
    @ssurrokk Před 9 lety +28

    звук с ужасными разрывами. В остальном спасибо

  • @Neander0531
    @Neander0531 Před 6 lety +1

    Сергей, здравствуйте.
    В вашем примере с чеком я бы поместил метод, вычисляющий стоимость товара в Goods. То есть, этот метод должен получать количество купленного товара и вычислять по нему стоимость. А OrderItem будет пользоваться этим методом.
    Дело в том, что цена товара зачастую не фиксирована, а зависит от разных факторов, и в том числе, от размера закупки. Цена за один купленный компьютер может быть значительно выше чем за 10. Так что, со стоимостью должна разбираться сущность Goods.

  • @ishtain6304
    @ishtain6304 Před 9 lety +6

    Отличные байки, приятно слушать!

  • @lexzcq
    @lexzcq Před 9 lety +1

    Спасибо за очередную порцию полезной информации, единственный маленький совет - попробуйте брать звуковую дорожку камеры, а не с микрофона, по-крайней мере не будет пропаданий звука.

  • @ViktorVdovichenko
    @ViktorVdovichenko Před 4 lety +1

    За декомпозицию человека, большой лайк!

  • @dbmongo9732
    @dbmongo9732 Před 5 lety +1

    Сергей, ты хороший человек, а вот микрофон твой - редиска!

  • @HowItWorks
    @HowItWorks Před 5 lety +4

    По группам всё ожидал когда прозвучит фраза: Шаблон проектирования "Компоновщик". Так и не дождался.

    • @alexxx4434
      @alexxx4434 Před 4 lety

      Молодой был, не опытный. ))) Какую хрень с каталогом сморозил.

  • @gor6821
    @gor6821 Před 9 lety

    Спасибо, полезная лекция. Про деревья интересно. Расскажите о разнице в обработке и хранении товаров таких типов (пример):
    1) болт М3 - все одинаковые, имеет свой код в каталоге, все просто
    2) главная пара редуктора - вроде все одинаковые, но имеют каждая уникальный номер (их может быть очень много).
    Как быть? Как с болтом не получится так как при продаже клиенту должен быть указан уникальный номер проданного товара. И возможен возврат или обмен по этому номеру. Нужно поддерживать товары этих двух типов одновременно.

    • @Shide93
      @Shide93 Před 8 lety

      +Sergey Nemchinsky Предположу, что можно создать класс, унаследованный от товара, в котором будет дополнительное поле "уникальный номер" и в переопределенном методе getItemId добавлять этот номер к id товара

  • @Alellas
    @Alellas Před 8 lety

    эх...
    (смайлик боли)
    надеюсь на этот раз я таки новый проект весь разрисую.
    спасибо за лекции! не первый год канал смотрю. и данный плейлист тоже не в первый раз слушаю )
    жалко что многие вещи быстро забываются.
    прямо как у Рейстлина Маджере из ДрегонЛейнс проблема - ему постоянно надо было читать книги с заклинаниями потому что после произнесения они стирались из головы )))

  • @user-ch8wu3gt6v
    @user-ch8wu3gt6v Před 9 lety

    Требуем ещё подобных видео! Очень полезную тему Вы задели.
    Сергей, а можно вопрос:
    В программировании под веб, часто ли приходится использовать многопоточность? или это в основном удел ГУИшных приложений?
    Просто сейчас с потоками вожусь.
    Спасибо!

  • @user-not_defined
    @user-not_defined Před 6 lety

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

  • @farawell5224
    @farawell5224 Před 8 lety

    Надо налобать столько кода, чтобы потек мозг. А потом задавать вопросы. Я пока остановился на первом этапе. Спасибо за видео.

  • @TheAlatau
    @TheAlatau Před 9 lety +1

    Спасибо, Сергей!

  • @limon4ick
    @limon4ick Před 9 lety +1

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

  • @okritsky
    @okritsky Před 5 lety

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

  • @dbmongo9732
    @dbmongo9732 Před 5 lety +1

    Не лучше для каталога применить паттерн Компоновщик с итератором? Он гораздо понятнее и проще

  • @BCEMCPATb
    @BCEMCPATb Před 5 měsíci

    Завжди коли ви кажете новачки роблять так і говорите точно як би я зробив!)))

  • @asobyanin
    @asobyanin Před 6 lety +2

    А что насчет такого построения дерева, когда у объекта есть поле parent такого же класса?

  • @olegikorlov
    @olegikorlov Před 8 lety +3

    по поводу float и double для денег вы правы, а вот по поводу Integer вы зря, используют BigDecimal обычно www.javapractices.com/topic/TopicAction.do?Id=13

    • @ilyaafanasyev9714
      @ilyaafanasyev9714 Před 8 lety +1

      +Олег Орлов Хотел тоже об этом написать, но увидел Ваш коммент.

    • @olegikorlov
      @olegikorlov Před 8 lety +2

      +Ilya Afanasyev Оставил маленькое предупреждение для тех кто будут смотреть это видео с тем, чтобы не "глотали" бездумно все то о чем вещает Серёжа. Набивайте свои шишки господа. Это хоть и больно, зато учит на всю жизнь. Байки на то и байки, чтобы байками и оставаться :-)

    • @9Corvinus
      @9Corvinus Před 5 lety

      А еще Money есть

  • @9Corvinus
    @9Corvinus Před 5 lety

    Все классно, но я бы в любом случае начинал описывать классы с контрактов - интерфейсов)

  • @redmercury7194
    @redmercury7194 Před rokem +2

    Кстати, в 2023 он всё ещё Сергей Немчинский

  • @user-rj4hq2vb2n
    @user-rj4hq2vb2n Před 2 lety +1

    Писать цену в таблицу товаров - типичная ошибка всех не 1С-ных систем. Цена может отличаться в разных регионах. Цена меняется со временем. А отчётность строится за разные периоды. По разным регионам. Значит за один период с одной ценой, за другой период с другой ценой. Как пользователи обходят этот косяк в не 1С-ных системах на практике? Дублируют запись с новой ценой. Итого два товара с одинаковым названием, артикулом, но с разной ценой. Получается бардак

    • @user-qb1cw2bj1c
      @user-qb1cw2bj1c Před 2 lety

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

  • @user-wb1nl2ke5o
    @user-wb1nl2ke5o Před 8 lety +1

    красота , спасибо!

  • @burialstance
    @burialstance Před 4 lety

    Серега, ты красавчик 👍😁

  • @Constantine..
    @Constantine.. Před 9 lety

    Здравствуйте, Сергей. Спасибо за видео, как всегда интересно. Если возможность задавать вопросы ещё в силе, не могли бы вы осветить вопрос- шаблон проектирования Singleton - какой правильный вариант по вашему мнению? А то статей на этот счет достаточно много но под каждой в комментариях развиваются настоящие баталии, которые в конец запутывают. Или может укажите ресурс где по вашему мнению изложена оптимальная точка зрения.

  • @shamkhan2636
    @shamkhan2636 Před 3 lety +1

    "В котором новичок умирает..." :)))) Интересно рассказывает, хотя звук ужасный. Самому знакомо :)

  • @richandfamous1674
    @richandfamous1674 Před 9 lety

    Сергей, а наличие методов подсчета в реализациях Order не противоречит одному из первых принципов GOF паттернов "программируйте на уровне интерфейса, а не на уровне реализации"? Dependency injection напрашивается.

  • @user-pz9en1td7i
    @user-pz9en1td7i Před 9 lety +5

    "Человека декомпозировать не надо. За это срок светит." Бугагашенька :)

  • @parabola47
    @parabola47 Před 4 lety +1

    А что делать в случае, если к примеру, при покупке пары товаров на них будет идти определённая скидка? Не получится же просто вызвать goods.price()

  • @sergbo5509
    @sergbo5509 Před 7 lety

    С типом цены за товар не согласен. Цена товара может быть и менее копейки. Вот сумма товара может и да. Вот например на складах у каждого товара есть цена за лот(пачку,коробку) и есть розничная цена 1штуки того что в коробке. В коробке 1000 гвоздей стоит 2,50грн за коробку сколько будет стоить 500 гвоздей. Если посчитать в копейках(с типом интегер), то получится ровно 0))) 250/1000=0,25=0(Integer)*500=0. Если не флоат то нужно уже будет выдумывать что-то типа дополнительного поля exponent для обозначения запятой, так что тут еще нужно подумать))) Ну или создавать метод типа getGoodPcsPrice и поле pcs(кол в лоте) с возвр флоат. Зачем это нужно, ну например для вычисления конкретной стоимости изделия, а из неё что бы получить стоимость партии, а из неё сколько расходов пошло на производство и все производные. Точно знаю если в бухгалтерии не сходится 1 копейка, в любую сторону, то это целая проблема, по крайней мере когда я работал в банке так и было))).

  • @sergeyshestakov4936
    @sergeyshestakov4936 Před rokem

    Спасибо

  • @kjh4365z
    @kjh4365z Před 9 lety

    Спасибо за ваши видео, очень познавательно!
    Осветите, пожалуйста, как быть с зацыкливанием объектов друг на друга. Например, у Goods есть поле типа Group, а у Group есть поле со списком Goods. На сколько я понемаю, Goods не скомпелируется, если нет скомпилированного Group и наоборот Group не скомпелируется без Goods. Где лучше разрывать зависимость?

  • @johnconstantine6331
    @johnconstantine6331 Před 2 lety

    Не получилось ли так, что Goods зависит от Group и наоборот? Не циклическая зависимость?

  • @Char0plet
    @Char0plet Před 7 lety

    У меня вопросы по каталогу. Вот у нас есть AbstractGroup с полем children: List и Group с полем good: List.
    - я правильно понимаю что в children: List храниться ноутбук, монитор, мышка, видеокарта и т.п., а в good: List конкретные марки вышеперечисленных товаров (MSI GP62 6QE Leopard Pro)
    - как эти списки связаны? вот есть у нас 2 листа, а если нужно посмотреть какие ноутбуки у нас есть то где у нас между списками взаимосвязь (я на uml вижу что есть класс, один список он наследует, один в нем есть и все)?

  • @user-iv8cl1gp3r
    @user-iv8cl1gp3r Před 6 lety

    Какие ютуб-каналы и плейлисты есть на эту тему, чтоб подробней изучить декомпозицию предметных областей?

  • @SHURmandroid
    @SHURmandroid Před 9 lety +5

    Эх, еще бы звук записывать на микрофон-петличку... :-(

    • @SHURmandroid
      @SHURmandroid Před 9 lety +4

      ***** На хромокей не надо, тогда потеряются ламповость и уют... :-) Просто звук не всегда хорошо слышно, он слегка бубнит и эхом отдает... не всё можно разобрать... но это мои мелкие придирки... :-) Спасибо за рассказы!

  • @suxaryk
    @suxaryk Před 9 lety

    как реализовать список списков через объекты?
    например меню -> категории -> блюда.
    List listofCat
    Думаю нужно создать класс Category который состоит(агрегация) из List, и тогда
    List Menu

    • @dbmongo9732
      @dbmongo9732 Před 5 lety

      Имхо, лучше использовать паттерн Компоновщик

  • @sviatoslavvovnianko3357
    @sviatoslavvovnianko3357 Před 21 dnem

    36:00, абстрактна група знає про групу. Порушення DI принципу

  • @annakosareva8629
    @annakosareva8629 Před 3 lety

    Спасибо!

  • @LinDahai88
    @LinDahai88 Před 8 lety

    Очень интересно и полезно. Спасибо!
    Есть вопрос по поводу групп. Может быть есть смысл сделать так:
    class Catalog
    {
    public List groups;
    }
    class Group : Catalog
    {
    public List goods;
    }
    Насколько это живой вариант?

    • @LinDahai88
      @LinDahai88 Před 8 lety

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

  • @user-nj7xm1xu7o
    @user-nj7xm1xu7o Před 8 lety

    В первом случае(метод summ в нужном месте) вы применили принцип InformationExpert а во втором(вложенные группы товаров) шаблон Composite. Верно?

    • @user-nj7xm1xu7o
      @user-nj7xm1xu7o Před 8 lety +1

      Вам спасибо за ролики! Крутые

  • @stakhovskiy
    @stakhovskiy Před 3 lety

    Сергей,
    перезапишите пожалуйста. Звук! Это ужасно!

  • @user-bj7ic1lh9t
    @user-bj7ic1lh9t Před 4 lety

    Столкнулся с проблемой при установке ArgoUML. Скачал с официального сайта argouml.tigris.org, ссылка с википедии. В начале установки - сообщение: На компьютере, мол, не установлено JRE. Но как так?! Я в Intellj IDEA уже как пол года компилирую, запускаю код. Ладно, вариантов нет, жму ок - выберите компоненты программы для установки. Две галочки - JRE, ArgoUML - далее... Останавливается на connecting при установке jre. Неужели на официальном сайте глючный инсталлер?

  • @9Corvinus
    @9Corvinus Před 5 lety

    А какие средства Uml можете посоветовать, не argo?

  • @user-rj4hq2vb2n
    @user-rj4hq2vb2n Před 2 lety

    Немчинский как всегда часу ночи снимает😀

  • @maxlich9139
    @maxlich9139 Před 6 lety

    14:00 попробовал - выдает true. Вот код:
    float f1 = 1.0f;
    float f2 = 1.0f;
    System.out.println(f1 == f2);
    Имелось в виду что-то другое?

  • @vladyslavstusiak5491
    @vladyslavstusiak5491 Před 3 lety

    Это же composite.
    Ну, там где группы и каталоги.
    refactoring.guru/design-patterns/composite

  • @user-cy4js3xv7w
    @user-cy4js3xv7w Před 4 lety

    что по декомпазиции можно почитать

  • @HalizVideo
    @HalizVideo Před 2 lety

    Нихрена не понял, но ОЧЕНЬ интересно. )))

  • @siriusdiamond
    @siriusdiamond Před 7 lety

    а сточки зрения SQL методы price, sum они же не нужны для подсчета ?

    • @siriusdiamond
      @siriusdiamond Před 7 lety

      ***** это типа пример ?

    • @siriusdiamond
      @siriusdiamond Před 7 lety

      я в смысле если будет sql то, запросом быстрее будет

  • @pyjvm
    @pyjvm Před 6 lety

    Привет квадратноголовым. Надеюсь ты просто игрок? А то я теперь буду боятся что ты мой код увидишь.

  • @user-ic5dd8hy3n
    @user-ic5dd8hy3n Před 3 lety

    up

  • @LE5F0RE5T
    @LE5F0RE5T Před 9 lety

    Сергей добрый день.Скажите вы имеете какое либо отношение к Джава Раш?

  • @mckrava
    @mckrava Před 9 lety

    Подавление шума на "0", плииииизззз!

  • @jklkl782
    @jklkl782 Před 9 lety

    Софт менять нужно и со звуком беда, а так гууд.

  • @ilnurryazhapov
    @ilnurryazhapov Před 4 lety

    тут хоть более менее нормальная борода

  • @max041098
    @max041098 Před 8 lety

    6 666 просмотров

  • @shamkhan2636
    @shamkhan2636 Před 3 lety

    Ужасный звук. Невозможно слушать.

  • @alekseychaykovskiy3963

    спасибо