Декомпозиция, типовые решения
Vložit
- čas přidán 11. 09. 2024
- В этот раз видео посвящено двум типовым задачам декомпозиции - заказу (и его деталям) и древовидной структуре
Полный плейлист: • Основы архитектуры при...
Курсы Front-End bit.ly/2Aq6zEr
Курсы Solidity developer bit.ly/2QpsNjC
Сайт учебного центра: bit.ly/2NJCnNM
Ехал сегодня в авто и своим детям 6 лет рассказывал про декомпозицию из Вашего ролика.Если поймут они - то точно усвою сам.
Дал им примеров парочку и всё,уже вечером дети рассказали маме - что такое декомпозиция,где применяется в жизни и почему она удобна!
Спасибо за подробный ход мыслей новичка И как делать правильно.
Сергей, большое спасибо за курсы. По поводу того, что народ интересуется даже не сомневайтесь. Жду с нетерпением следующих видео. На фоне изобилия самой разной информации очень полезно послушать выжимку от бывалого человека, так сказать наметить приоритеты, что изучать в первую очередь, а что вообще можно опустить.
Программирую на PHP, совершенно не помню зачем подписался на ваш канал. Вдруг наткнулся на "байки" - слушаю с огромным удовольствием! Спасибо.
Спасибо большое за ваши байки! =)
Очень хотелось бы посмотреть видео о том каким образом можно развернуть код написанный на if-ах в ООП стиль, либо о методиках уменьшения использования if конструкций в коде.
Вы очень похожи на моего учителя информатики и когда я смотрю на Вас вспоминаю свою молодость.( Сначала он преподавал нам в школе а ещё вел факультативный кружок) Манера говорить один в один .Даже внешне похожи. Спасибо.
Сергей, огромное спасибо! Вы очень понятно преподносите материал, очень полезно.
Во второй части вы рассказываете про древовидные структуры. И говорите, что правильным решением сделать дерево групп - это записывать в группу список его дочерних групп или список товаров. А почему нельзя, например, хранить в группе просто ссылку на ее предка или NULL если это корневая группа? А в товаре как раз хранить ссылку группу, которой принадлежит товар либо NULL, если товар вне групп. Спасибо.
звук с ужасными разрывами. В остальном спасибо
Сергей, здравствуйте.
В вашем примере с чеком я бы поместил метод, вычисляющий стоимость товара в Goods. То есть, этот метод должен получать количество купленного товара и вычислять по нему стоимость. А OrderItem будет пользоваться этим методом.
Дело в том, что цена товара зачастую не фиксирована, а зависит от разных факторов, и в том числе, от размера закупки. Цена за один купленный компьютер может быть значительно выше чем за 10. Так что, со стоимостью должна разбираться сущность Goods.
Отличные байки, приятно слушать!
Спасибо за очередную порцию полезной информации, единственный маленький совет - попробуйте брать звуковую дорожку камеры, а не с микрофона, по-крайней мере не будет пропаданий звука.
За декомпозицию человека, большой лайк!
Сергей, ты хороший человек, а вот микрофон твой - редиска!
По группам всё ожидал когда прозвучит фраза: Шаблон проектирования "Компоновщик". Так и не дождался.
Молодой был, не опытный. ))) Какую хрень с каталогом сморозил.
Спасибо, полезная лекция. Про деревья интересно. Расскажите о разнице в обработке и хранении товаров таких типов (пример):
1) болт М3 - все одинаковые, имеет свой код в каталоге, все просто
2) главная пара редуктора - вроде все одинаковые, но имеют каждая уникальный номер (их может быть очень много).
Как быть? Как с болтом не получится так как при продаже клиенту должен быть указан уникальный номер проданного товара. И возможен возврат или обмен по этому номеру. Нужно поддерживать товары этих двух типов одновременно.
+Sergey Nemchinsky Предположу, что можно создать класс, унаследованный от товара, в котором будет дополнительное поле "уникальный номер" и в переопределенном методе getItemId добавлять этот номер к id товара
эх...
(смайлик боли)
надеюсь на этот раз я таки новый проект весь разрисую.
спасибо за лекции! не первый год канал смотрю. и данный плейлист тоже не в первый раз слушаю )
жалко что многие вещи быстро забываются.
прямо как у Рейстлина Маджере из ДрегонЛейнс проблема - ему постоянно надо было читать книги с заклинаниями потому что после произнесения они стирались из головы )))
Требуем ещё подобных видео! Очень полезную тему Вы задели.
Сергей, а можно вопрос:
В программировании под веб, часто ли приходится использовать многопоточность? или это в основном удел ГУИшных приложений?
Просто сейчас с потоками вожусь.
Спасибо!
Насчёт древовидной структуры не очень понял, а про декомпозицию шикарно обьяснили
Надо налобать столько кода, чтобы потек мозг. А потом задавать вопросы. Я пока остановился на первом этапе. Спасибо за видео.
Спасибо, Сергей!
Отличные видео, только сделайте что то со звуком... просто мозг выносит его пропадание
Спасибо, хорошо, полезно. но. Нумерация занятий обязательно должна быть в названии роликов! Это же в том числе и показывает классность программиста - умение грамотно именовать переменные, файлы... Если нет структуры в именовании роликов, то о каком курсе декомпозиции может идти речь... Это тоже: как может управлять чем-то большим (заводом, страной например) человек, который в собственной семье порядок навести не может...
Не лучше для каталога применить паттерн Компоновщик с итератором? Он гораздо понятнее и проще
Завжди коли ви кажете новачки роблять так і говорите точно як би я зробив!)))
А что насчет такого построения дерева, когда у объекта есть поле parent такого же класса?
по поводу float и double для денег вы правы, а вот по поводу Integer вы зря, используют BigDecimal обычно www.javapractices.com/topic/TopicAction.do?Id=13
+Олег Орлов Хотел тоже об этом написать, но увидел Ваш коммент.
+Ilya Afanasyev Оставил маленькое предупреждение для тех кто будут смотреть это видео с тем, чтобы не "глотали" бездумно все то о чем вещает Серёжа. Набивайте свои шишки господа. Это хоть и больно, зато учит на всю жизнь. Байки на то и байки, чтобы байками и оставаться :-)
А еще Money есть
Все классно, но я бы в любом случае начинал описывать классы с контрактов - интерфейсов)
Кстати, в 2023 он всё ещё Сергей Немчинский
Писать цену в таблицу товаров - типичная ошибка всех не 1С-ных систем. Цена может отличаться в разных регионах. Цена меняется со временем. А отчётность строится за разные периоды. По разным регионам. Значит за один период с одной ценой, за другой период с другой ценой. Как пользователи обходят этот косяк в не 1С-ных системах на практике? Дублируют запись с новой ценой. Итого два товара с одинаковым названием, артикулом, но с разной ценой. Получается бардак
Согласен, цену надо дублировать в списке товаров в заказе, т.к. Она может меняться со временем в каталоге товаров, или на нее может быть отдельная скидка например.
красота , спасибо!
Серега, ты красавчик 👍😁
Здравствуйте, Сергей. Спасибо за видео, как всегда интересно. Если возможность задавать вопросы ещё в силе, не могли бы вы осветить вопрос- шаблон проектирования Singleton - какой правильный вариант по вашему мнению? А то статей на этот счет достаточно много но под каждой в комментариях развиваются настоящие баталии, которые в конец запутывают. Или может укажите ресурс где по вашему мнению изложена оптимальная точка зрения.
***** Спасибо.
"В котором новичок умирает..." :)))) Интересно рассказывает, хотя звук ужасный. Самому знакомо :)
Сергей, а наличие методов подсчета в реализациях Order не противоречит одному из первых принципов GOF паттернов "программируйте на уровне интерфейса, а не на уровне реализации"? Dependency injection напрашивается.
"Человека декомпозировать не надо. За это срок светит." Бугагашенька :)
А что делать в случае, если к примеру, при покупке пары товаров на них будет идти определённая скидка? Не получится же просто вызвать goods.price()
С типом цены за товар не согласен. Цена товара может быть и менее копейки. Вот сумма товара может и да. Вот например на складах у каждого товара есть цена за лот(пачку,коробку) и есть розничная цена 1штуки того что в коробке. В коробке 1000 гвоздей стоит 2,50грн за коробку сколько будет стоить 500 гвоздей. Если посчитать в копейках(с типом интегер), то получится ровно 0))) 250/1000=0,25=0(Integer)*500=0. Если не флоат то нужно уже будет выдумывать что-то типа дополнительного поля exponent для обозначения запятой, так что тут еще нужно подумать))) Ну или создавать метод типа getGoodPcsPrice и поле pcs(кол в лоте) с возвр флоат. Зачем это нужно, ну например для вычисления конкретной стоимости изделия, а из неё что бы получить стоимость партии, а из неё сколько расходов пошло на производство и все производные. Точно знаю если в бухгалтерии не сходится 1 копейка, в любую сторону, то это целая проблема, по крайней мере когда я работал в банке так и было))).
Спасибо
Спасибо за ваши видео, очень познавательно!
Осветите, пожалуйста, как быть с зацыкливанием объектов друг на друга. Например, у Goods есть поле типа Group, а у Group есть поле со списком Goods. На сколько я понемаю, Goods не скомпелируется, если нет скомпилированного Group и наоборот Group не скомпелируется без Goods. Где лучше разрывать зависимость?
Не получилось ли так, что Goods зависит от Group и наоборот? Не циклическая зависимость?
У меня вопросы по каталогу. Вот у нас есть AbstractGroup с полем children: List и Group с полем good: List.
- я правильно понимаю что в children: List храниться ноутбук, монитор, мышка, видеокарта и т.п., а в good: List конкретные марки вышеперечисленных товаров (MSI GP62 6QE Leopard Pro)
- как эти списки связаны? вот есть у нас 2 листа, а если нужно посмотреть какие ноутбуки у нас есть то где у нас между списками взаимосвязь (я на uml вижу что есть класс, один список он наследует, один в нем есть и все)?
Какие ютуб-каналы и плейлисты есть на эту тему, чтоб подробней изучить декомпозицию предметных областей?
Эх, еще бы звук записывать на микрофон-петличку... :-(
***** На хромокей не надо, тогда потеряются ламповость и уют... :-) Просто звук не всегда хорошо слышно, он слегка бубнит и эхом отдает... не всё можно разобрать... но это мои мелкие придирки... :-) Спасибо за рассказы!
как реализовать список списков через объекты?
например меню -> категории -> блюда.
List listofCat
Думаю нужно создать класс Category который состоит(агрегация) из List, и тогда
List Menu
Имхо, лучше использовать паттерн Компоновщик
36:00, абстрактна група знає про групу. Порушення DI принципу
Спасибо!
Очень интересно и полезно. Спасибо!
Есть вопрос по поводу групп. Может быть есть смысл сделать так:
class Catalog
{
public List groups;
}
class Group : Catalog
{
public List goods;
}
Насколько это живой вариант?
ну.. тогда не нужен абстрактный класс каталог и семантически вроде понятнее, мол каталог - это список групп, а группа - это тот же каталог только у него еще есть список товаров. Да и вроде как понятие каталог и так уже достаточно абстрактное..
Ну в общем это так просто мысли вслух.. Хотел узнать Ваше мнение по поводу такой конструкции. Реально ли такое встретить в работающем решении?
В первом случае(метод summ в нужном месте) вы применили принцип InformationExpert а во втором(вложенные группы товаров) шаблон Composite. Верно?
Вам спасибо за ролики! Крутые
Сергей,
перезапишите пожалуйста. Звук! Это ужасно!
Столкнулся с проблемой при установке ArgoUML. Скачал с официального сайта argouml.tigris.org, ссылка с википедии. В начале установки - сообщение: На компьютере, мол, не установлено JRE. Но как так?! Я в Intellj IDEA уже как пол года компилирую, запускаю код. Ладно, вариантов нет, жму ок - выберите компоненты программы для установки. Две галочки - JRE, ArgoUML - далее... Останавливается на connecting при установке jre. Неужели на официальном сайте глючный инсталлер?
А какие средства Uml можете посоветовать, не argo?
Немчинский как всегда часу ночи снимает😀
14:00 попробовал - выдает true. Вот код:
float f1 = 1.0f;
float f2 = 1.0f;
System.out.println(f1 == f2);
Имелось в виду что-то другое?
Это же composite.
Ну, там где группы и каталоги.
refactoring.guru/design-patterns/composite
что по декомпазиции можно почитать
Нихрена не понял, но ОЧЕНЬ интересно. )))
а сточки зрения SQL методы price, sum они же не нужны для подсчета ?
***** это типа пример ?
я в смысле если будет sql то, запросом быстрее будет
Привет квадратноголовым. Надеюсь ты просто игрок? А то я теперь буду боятся что ты мой код увидишь.
up
Сергей добрый день.Скажите вы имеете какое либо отношение к Джава Раш?
Подавление шума на "0", плииииизззз!
Софт менять нужно и со звуком беда, а так гууд.
тут хоть более менее нормальная борода
6 666 просмотров
Ужасный звук. Невозможно слушать.
спасибо