Ехал сегодня в авто и своим детям 6 лет рассказывал про декомпозицию из Вашего ролика.Если поймут они - то точно усвою сам. Дал им примеров парочку и всё,уже вечером дети рассказали маме - что такое декомпозиция,где применяется в жизни и почему она удобна! Спасибо за подробный ход мыслей новичка И как делать правильно.
@ШтаныАрагорна9 жыл бұрын
Сергей, большое спасибо за курсы. По поводу того, что народ интересуется даже не сомневайтесь. Жду с нетерпением следующих видео. На фоне изобилия самой разной информации очень полезно послушать выжимку от бывалого человека, так сказать наметить приоритеты, что изучать в первую очередь, а что вообще можно опустить.
@Garpunoff9 жыл бұрын
Программирую на PHP, совершенно не помню зачем подписался на ваш канал. Вдруг наткнулся на "байки" - слушаю с огромным удовольствием! Спасибо.
@tedirensmusic9 жыл бұрын
Во второй части вы рассказываете про древовидные структуры. И говорите, что правильным решением сделать дерево групп - это записывать в группу список его дочерних групп или список товаров. А почему нельзя, например, хранить в группе просто ссылку на ее предка или NULL если это корневая группа? А в товаре как раз хранить ссылку группу, которой принадлежит товар либо NULL, если товар вне групп. Спасибо.
@MrGrechman7 жыл бұрын
Сергей, огромное спасибо! Вы очень понятно преподносите материал, очень полезно.
@НиколайМорщаков9 жыл бұрын
Вы очень похожи на моего учителя информатики и когда я смотрю на Вас вспоминаю свою молодость.( Сначала он преподавал нам в школе а ещё вел факультативный кружок) Манера говорить один в один .Даже внешне похожи. Спасибо.
@ronrcf9 жыл бұрын
Спасибо большое за ваши байки! =) Очень хотелось бы посмотреть видео о том каким образом можно развернуть код написанный на if-ах в ООП стиль, либо о методиках уменьшения использования if конструкций в коде.
@ishtain63049 жыл бұрын
Отличные байки, приятно слушать!
@Neander05316 жыл бұрын
Сергей, здравствуйте. В вашем примере с чеком я бы поместил метод, вычисляющий стоимость товара в Goods. То есть, этот метод должен получать количество купленного товара и вычислять по нему стоимость. А OrderItem будет пользоваться этим методом. Дело в том, что цена товара зачастую не фиксирована, а зависит от разных факторов, и в том числе, от размера закупки. Цена за один купленный компьютер может быть значительно выше чем за 10. Так что, со стоимостью должна разбираться сущность Goods.
@ViktorVdovichenko5 жыл бұрын
За декомпозицию человека, большой лайк!
@lexzcq9 жыл бұрын
Спасибо за очередную порцию полезной информации, единственный маленький совет - попробуйте брать звуковую дорожку камеры, а не с микрофона, по-крайней мере не будет пропаданий звука.
@suxaryk9 жыл бұрын
как реализовать список списков через объекты? например меню -> категории -> блюда. List listofCat Думаю нужно создать класс Category который состоит(агрегация) из List, и тогда List Menu
@TheAlatau9 жыл бұрын
Спасибо, Сергей!
@gor68219 жыл бұрын
Спасибо, полезная лекция. Про деревья интересно. Расскажите о разнице в обработке и хранении товаров таких типов (пример): 1) болт М3 - все одинаковые, имеет свой код в каталоге, все просто 2) главная пара редуктора - вроде все одинаковые, но имеют каждая уникальный номер (их может быть очень много). Как быть? Как с болтом не получится так как при продаже клиенту должен быть указан уникальный номер проданного товара. И возможен возврат или обмен по этому номеру. Нужно поддерживать товары этих двух типов одновременно.
@Shide939 жыл бұрын
+Sergey Nemchinsky Предположу, что можно создать класс, унаследованный от товара, в котором будет дополнительное поле "уникальный номер" и в переопределенном методе getItemId добавлять этот номер к id товара
@ssurrokk9 жыл бұрын
звук с ужасными разрывами. В остальном спасибо
@user-not_defined7 жыл бұрын
Насчёт древовидной структуры не очень понял, а про декомпозицию шикарно обьяснили
@burialstance4 жыл бұрын
Серега, ты красавчик 👍😁
@ВолодимирКостерін-щ4ш9 жыл бұрын
красота , спасибо!
@Char0plet8 жыл бұрын
У меня вопросы по каталогу. Вот у нас есть AbstractGroup с полем children: List и Group с полем good: List. - я правильно понимаю что в children: List храниться ноутбук, монитор, мышка, видеокарта и т.п., а в good: List конкретные марки вышеперечисленных товаров (MSI GP62 6QE Leopard Pro) - как эти списки связаны? вот есть у нас 2 листа, а если нужно посмотреть какие ноутбуки у нас есть то где у нас между списками взаимосвязь (я на uml вижу что есть класс, один список он наследует, один в нем есть и все)?
@Alellas8 жыл бұрын
эх... (смайлик боли) надеюсь на этот раз я таки новый проект весь разрисую. спасибо за лекции! не первый год канал смотрю. и данный плейлист тоже не в первый раз слушаю ) жалко что многие вещи быстро забываются. прямо как у Рейстлина Маджере из ДрегонЛейнс проблема - ему постоянно надо было читать книги с заклинаниями потому что после произнесения они стирались из головы )))
@asobyanin6 жыл бұрын
А что насчет такого построения дерева, когда у объекта есть поле parent такого же класса?
@ИмяФамилия-у2у4л9 жыл бұрын
Требуем ещё подобных видео! Очень полезную тему Вы задели. Сергей, а можно вопрос: В программировании под веб, часто ли приходится использовать многопоточность? или это в основном удел ГУИшных приложений? Просто сейчас с потоками вожусь. Спасибо!
@kjh4365z9 жыл бұрын
Спасибо за ваши видео, очень познавательно! Осветите, пожалуйста, как быть с зацыкливанием объектов друг на друга. Например, у Goods есть поле типа Group, а у Group есть поле со списком Goods. На сколько я понемаю, Goods не скомпелируется, если нет скомпилированного Group и наоборот Group не скомпелируется без Goods. Где лучше разрывать зависимость?
@richandfamous16749 жыл бұрын
Сергей, а наличие методов подсчета в реализациях Order не противоречит одному из первых принципов GOF паттернов "программируйте на уровне интерфейса, а не на уровне реализации"? Dependency injection напрашивается.
@sviatoslavvovnianko33574 ай бұрын
36:00, абстрактна група знає про групу. Порушення DI принципу
@annakosareva86293 жыл бұрын
Спасибо!
@parabola475 жыл бұрын
А что делать в случае, если к примеру, при покупке пары товаров на них будет идти определённая скидка? Не получится же просто вызвать goods.price()
@johnconstantine63312 жыл бұрын
Не получилось ли так, что Goods зависит от Group и наоборот? Не циклическая зависимость?
@farawell52248 жыл бұрын
Надо налобать столько кода, чтобы потек мозг. А потом задавать вопросы. Я пока остановился на первом этапе. Спасибо за видео.
@ОлегЛитвиненко-о5з3 жыл бұрын
Писать цену в таблицу товаров - типичная ошибка всех не 1С-ных систем. Цена может отличаться в разных регионах. Цена меняется со временем. А отчётность строится за разные периоды. По разным регионам. Значит за один период с одной ценой, за другой период с другой ценой. Как пользователи обходят этот косяк в не 1С-ных системах на практике? Дублируют запись с новой ценой. Итого два товара с одинаковым названием, артикулом, но с разной ценой. Получается бардак
@AndreyN-y5o3 жыл бұрын
Согласен, цену надо дублировать в списке товаров в заказе, т.к. Она может меняться со временем в каталоге товаров, или на нее может быть отдельная скидка например.
@okritsky5 жыл бұрын
Спасибо, хорошо, полезно. но. Нумерация занятий обязательно должна быть в названии роликов! Это же в том числе и показывает классность программиста - умение грамотно именовать переменные, файлы... Если нет структуры в именовании роликов, то о каком курсе декомпозиции может идти речь... Это тоже: как может управлять чем-то большим (заводом, страной например) человек, который в собственной семье порядок навести не может...
@Constantine..9 жыл бұрын
Здравствуйте, Сергей. Спасибо за видео, как всегда интересно. Если возможность задавать вопросы ещё в силе, не могли бы вы осветить вопрос- шаблон проектирования Singleton - какой правильный вариант по вашему мнению? А то статей на этот счет достаточно много но под каждой в комментариях развиваются настоящие баталии, которые в конец запутывают. Или может укажите ресурс где по вашему мнению изложена оптимальная точка зрения.
@Constantine..9 жыл бұрын
***** Спасибо.
@НастяТумашова-д4к6 жыл бұрын
Какие ютуб-каналы и плейлисты есть на эту тему, чтоб подробней изучить декомпозицию предметных областей?
@maxlich91397 жыл бұрын
14:00 попробовал - выдает true. Вот код: float f1 = 1.0f; float f2 = 1.0f; System.out.println(f1 == f2); Имелось в виду что-то другое?
@HowItWorks5 жыл бұрын
По группам всё ожидал когда прозвучит фраза: Шаблон проектирования "Компоновщик". Так и не дождался.
@alexxx44345 жыл бұрын
Молодой был, не опытный. ))) Какую хрень с каталогом сморозил.
@olegikorlov8 жыл бұрын
по поводу float и double для денег вы правы, а вот по поводу Integer вы зря, используют BigDecimal обычно www.javapractices.com/topic/TopicAction.do?Id=13
@ilyaafanasyev97148 жыл бұрын
+Олег Орлов Хотел тоже об этом написать, но увидел Ваш коммент.
@olegikorlov8 жыл бұрын
+Ilya Afanasyev Оставил маленькое предупреждение для тех кто будут смотреть это видео с тем, чтобы не "глотали" бездумно все то о чем вещает Серёжа. Набивайте свои шишки господа. Это хоть и больно, зато учит на всю жизнь. Байки на то и байки, чтобы байками и оставаться :-)
@9Corvinus6 жыл бұрын
А еще Money есть
@АртемАртеменко-й8б4 жыл бұрын
что по декомпазиции можно почитать
@АлександрМирошниченко-е2м4 жыл бұрын
Столкнулся с проблемой при установке ArgoUML. Скачал с официального сайта argouml.tigris.org, ссылка с википедии. В начале установки - сообщение: На компьютере, мол, не установлено JRE. Но как так?! Я в Intellj IDEA уже как пол года компилирую, запускаю код. Ладно, вариантов нет, жму ок - выберите компоненты программы для установки. Две галочки - JRE, ArgoUML - далее... Останавливается на connecting при установке jre. Неужели на официальном сайте глючный инсталлер?
@BCEMCPATb8 ай бұрын
Завжди коли ви кажете новачки роблять так і говорите точно як би я зробив!)))
@9Corvinus6 жыл бұрын
А какие средства Uml можете посоветовать, не argo?
@ВиталийРомашкин-б6б8 жыл бұрын
В первом случае(метод summ в нужном месте) вы применили принцип InformationExpert а во втором(вложенные группы товаров) шаблон Composite. Верно?
@ВиталийРомашкин-б6б8 жыл бұрын
Вам спасибо за ролики! Крутые
@LinDahai888 жыл бұрын
Очень интересно и полезно. Спасибо! Есть вопрос по поводу групп. Может быть есть смысл сделать так: class Catalog { public List groups; } class Group : Catalog { public List goods; } Насколько это живой вариант?
@LinDahai888 жыл бұрын
ну.. тогда не нужен абстрактный класс каталог и семантически вроде понятнее, мол каталог - это список групп, а группа - это тот же каталог только у него еще есть список товаров. Да и вроде как понятие каталог и так уже достаточно абстрактное.. Ну в общем это так просто мысли вслух.. Хотел узнать Ваше мнение по поводу такой конструкции. Реально ли такое встретить в работающем решении?
@siriusdiamond8 жыл бұрын
а сточки зрения SQL методы price, sum они же не нужны для подсчета ?
@siriusdiamond8 жыл бұрын
***** это типа пример ?
@siriusdiamond8 жыл бұрын
я в смысле если будет sql то, запросом быстрее будет
@limon4ick9 жыл бұрын
Отличные видео, только сделайте что то со звуком... просто мозг выносит его пропадание
@sergbo55097 жыл бұрын
С типом цены за товар не согласен. Цена товара может быть и менее копейки. Вот сумма товара может и да. Вот например на складах у каждого товара есть цена за лот(пачку,коробку) и есть розничная цена 1штуки того что в коробке. В коробке 1000 гвоздей стоит 2,50грн за коробку сколько будет стоить 500 гвоздей. Если посчитать в копейках(с типом интегер), то получится ровно 0))) 250/1000=0,25=0(Integer)*500=0. Если не флоат то нужно уже будет выдумывать что-то типа дополнительного поля exponent для обозначения запятой, так что тут еще нужно подумать))) Ну или создавать метод типа getGoodPcsPrice и поле pcs(кол в лоте) с возвр флоат. Зачем это нужно, ну например для вычисления конкретной стоимости изделия, а из неё что бы получить стоимость партии, а из неё сколько расходов пошло на производство и все производные. Точно знаю если в бухгалтерии не сходится 1 копейка, в любую сторону, то это целая проблема, по крайней мере когда я работал в банке так и было))).
@alekseychaykovskiy39634 жыл бұрын
спасибо
@9Corvinus6 жыл бұрын
Все классно, но я бы в любом случае начинал описывать классы с контрактов - интерфейсов)
@redmercury7194 Жыл бұрын
Кстати, в 2023 он всё ещё Сергей Немчинский
@vladyslavstusiak54913 жыл бұрын
Это же composite. Ну, там где группы и каталоги. refactoring.guru/design-patterns/composite
@stakhovskiy4 жыл бұрын
Сергей, перезапишите пожалуйста. Звук! Это ужасно!
@SHURmandroid9 жыл бұрын
Эх, еще бы звук записывать на микрофон-петличку... :-(
@SHURmandroid9 жыл бұрын
***** На хромокей не надо, тогда потеряются ламповость и уют... :-) Просто звук не всегда хорошо слышно, он слегка бубнит и эхом отдает... не всё можно разобрать... но это мои мелкие придирки... :-) Спасибо за рассказы!
@LE5F0RE5T9 жыл бұрын
Сергей добрый день.Скажите вы имеете какое либо отношение к Джава Раш?
@ОлегЛитвиненко-о5з3 жыл бұрын
Немчинский как всегда часу ночи снимает😀
@АндрейМорзе-ъ9ы9 жыл бұрын
"Человека декомпозировать не надо. За это срок светит." Бугагашенька :)
@HalizVideo3 жыл бұрын
Нихрена не понял, но ОЧЕНЬ интересно. )))
@shamkhan26363 жыл бұрын
"В котором новичок умирает..." :)))) Интересно рассказывает, хотя звук ужасный. Самому знакомо :)
@Гість-у8э3 жыл бұрын
up
@mckrava9 жыл бұрын
Подавление шума на "0", плииииизззз!
@pyjvm6 жыл бұрын
Привет квадратноголовым. Надеюсь ты просто игрок? А то я теперь буду боятся что ты мой код увидишь.