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

  Рет қаралды 37,194

Sergey Nemchinskiy

Sergey Nemchinskiy

Күн бұрын

Пікірлер: 81
@fkyduckwarsaw691
@fkyduckwarsaw691 7 жыл бұрын
Ехал сегодня в авто и своим детям 6 лет рассказывал про декомпозицию из Вашего ролика.Если поймут они - то точно усвою сам. Дал им примеров парочку и всё,уже вечером дети рассказали маме - что такое декомпозиция,где применяется в жизни и почему она удобна! Спасибо за подробный ход мыслей новичка И как делать правильно.
@АлексейБирюков-ь8р
@АлексейБирюков-ь8р 9 жыл бұрын
Сергей, большое спасибо за курсы. По поводу того, что народ интересуется даже не сомневайтесь. Жду с нетерпением следующих видео. На фоне изобилия самой разной информации очень полезно послушать выжимку от бывалого человека, так сказать наметить приоритеты, что изучать в первую очередь, а что вообще можно опустить.
@Garpunoff
@Garpunoff 9 жыл бұрын
Программирую на PHP, совершенно не помню зачем подписался на ваш канал. Вдруг наткнулся на "байки" - слушаю с огромным удовольствием! Спасибо.
@ronrcf
@ronrcf 9 жыл бұрын
Спасибо большое за ваши байки! =) Очень хотелось бы посмотреть видео о том каким образом можно развернуть код написанный на if-ах в ООП стиль, либо о методиках уменьшения использования if конструкций в коде.
@НиколайМорщаков
@НиколайМорщаков 9 жыл бұрын
Вы очень похожи на моего учителя информатики и когда я смотрю на Вас вспоминаю свою молодость.( Сначала он преподавал нам в школе а ещё вел факультативный кружок) Манера говорить один в один .Даже внешне похожи. Спасибо.
@ssurrokk
@ssurrokk 9 жыл бұрын
звук с ужасными разрывами. В остальном спасибо
@ishtain6304
@ishtain6304 9 жыл бұрын
Отличные байки, приятно слушать!
@tedirensmusic
@tedirensmusic 9 жыл бұрын
Во второй части вы рассказываете про древовидные структуры. И говорите, что правильным решением сделать дерево групп - это записывать в группу список его дочерних групп или список товаров. А почему нельзя, например, хранить в группе просто ссылку на ее предка или NULL если это корневая группа? А в товаре как раз хранить ссылку группу, которой принадлежит товар либо NULL, если товар вне групп. Спасибо.
@Neander0531
@Neander0531 6 жыл бұрын
Сергей, здравствуйте. В вашем примере с чеком я бы поместил метод, вычисляющий стоимость товара в Goods. То есть, этот метод должен получать количество купленного товара и вычислять по нему стоимость. А OrderItem будет пользоваться этим методом. Дело в том, что цена товара зачастую не фиксирована, а зависит от разных факторов, и в том числе, от размера закупки. Цена за один купленный компьютер может быть значительно выше чем за 10. Так что, со стоимостью должна разбираться сущность Goods.
@dbmongo9732
@dbmongo9732 5 жыл бұрын
Сергей, ты хороший человек, а вот микрофон твой - редиска!
@user-not_defined
@user-not_defined 6 жыл бұрын
Насчёт древовидной структуры не очень понял, а про декомпозицию шикарно обьяснили
@gor6821
@gor6821 9 жыл бұрын
Спасибо, полезная лекция. Про деревья интересно. Расскажите о разнице в обработке и хранении товаров таких типов (пример): 1) болт М3 - все одинаковые, имеет свой код в каталоге, все просто 2) главная пара редуктора - вроде все одинаковые, но имеют каждая уникальный номер (их может быть очень много). Как быть? Как с болтом не получится так как при продаже клиенту должен быть указан уникальный номер проданного товара. И возможен возврат или обмен по этому номеру. Нужно поддерживать товары этих двух типов одновременно.
@Shide93
@Shide93 8 жыл бұрын
+Sergey Nemchinsky Предположу, что можно создать класс, унаследованный от товара, в котором будет дополнительное поле "уникальный номер" и в переопределенном методе getItemId добавлять этот номер к id товара
@HowItWorks
@HowItWorks 5 жыл бұрын
По группам всё ожидал когда прозвучит фраза: Шаблон проектирования "Компоновщик". Так и не дождался.
@alexxx4434
@alexxx4434 4 жыл бұрын
Молодой был, не опытный. ))) Какую хрень с каталогом сморозил.
@ИмяФамилия-у2у4л
@ИмяФамилия-у2у4л 9 жыл бұрын
Требуем ещё подобных видео! Очень полезную тему Вы задели. Сергей, а можно вопрос: В программировании под веб, часто ли приходится использовать многопоточность? или это в основном удел ГУИшных приложений? Просто сейчас с потоками вожусь. Спасибо!
@BCEMCPATb
@BCEMCPATb 5 ай бұрын
Завжди коли ви кажете новачки роблять так і говорите точно як би я зробив!)))
@farawell5224
@farawell5224 8 жыл бұрын
Надо налобать столько кода, чтобы потек мозг. А потом задавать вопросы. Я пока остановился на первом этапе. Спасибо за видео.
@TheAlatau
@TheAlatau 9 жыл бұрын
Спасибо, Сергей!
@limon4ick
@limon4ick 9 жыл бұрын
Отличные видео, только сделайте что то со звуком... просто мозг выносит его пропадание
@asobyanin
@asobyanin 6 жыл бұрын
А что насчет такого построения дерева, когда у объекта есть поле parent такого же класса?
@dbmongo9732
@dbmongo9732 5 жыл бұрын
Не лучше для каталога применить паттерн Компоновщик с итератором? Он гораздо понятнее и проще
@redmercury7194
@redmercury7194 Жыл бұрын
Кстати, в 2023 он всё ещё Сергей Немчинский
@okritsky
@okritsky 5 жыл бұрын
Спасибо, хорошо, полезно. но. Нумерация занятий обязательно должна быть в названии роликов! Это же в том числе и показывает классность программиста - умение грамотно именовать переменные, файлы... Если нет структуры в именовании роликов, то о каком курсе декомпозиции может идти речь... Это тоже: как может управлять чем-то большим (заводом, страной например) человек, который в собственной семье порядок навести не может...
@olegikorlov
@olegikorlov 8 жыл бұрын
по поводу float и double для денег вы правы, а вот по поводу Integer вы зря, используют BigDecimal обычно www.javapractices.com/topic/TopicAction.do?Id=13
@ilyaafanasyev9714
@ilyaafanasyev9714 8 жыл бұрын
+Олег Орлов Хотел тоже об этом написать, но увидел Ваш коммент.
@olegikorlov
@olegikorlov 8 жыл бұрын
+Ilya Afanasyev Оставил маленькое предупреждение для тех кто будут смотреть это видео с тем, чтобы не "глотали" бездумно все то о чем вещает Серёжа. Набивайте свои шишки господа. Это хоть и больно, зато учит на всю жизнь. Байки на то и байки, чтобы байками и оставаться :-)
@9Corvinus
@9Corvinus 5 жыл бұрын
А еще Money есть
@ОлегЛитвиненко-о5з
@ОлегЛитвиненко-о5з 3 жыл бұрын
Писать цену в таблицу товаров - типичная ошибка всех не 1С-ных систем. Цена может отличаться в разных регионах. Цена меняется со временем. А отчётность строится за разные периоды. По разным регионам. Значит за один период с одной ценой, за другой период с другой ценой. Как пользователи обходят этот косяк в не 1С-ных системах на практике? Дублируют запись с новой ценой. Итого два товара с одинаковым названием, артикулом, но с разной ценой. Получается бардак
@AndreyN-y5o
@AndreyN-y5o 2 жыл бұрын
Согласен, цену надо дублировать в списке товаров в заказе, т.к. Она может меняться со временем в каталоге товаров, или на нее может быть отдельная скидка например.
@richandfamous1674
@richandfamous1674 9 жыл бұрын
Сергей, а наличие методов подсчета в реализациях Order не противоречит одному из первых принципов GOF паттернов "программируйте на уровне интерфейса, а не на уровне реализации"? Dependency injection напрашивается.
@sergeyshestakov4936
@sergeyshestakov4936 Жыл бұрын
Спасибо
@9Corvinus
@9Corvinus 5 жыл бұрын
Все классно, но я бы в любом случае начинал описывать классы с контрактов - интерфейсов)
@burialstance
@burialstance 4 жыл бұрын
Серега, ты красавчик 👍😁
@parabola47
@parabola47 4 жыл бұрын
А что делать в случае, если к примеру, при покупке пары товаров на них будет идти определённая скидка? Не получится же просто вызвать goods.price()
@Char0plet
@Char0plet 7 жыл бұрын
У меня вопросы по каталогу. Вот у нас есть AbstractGroup с полем children: List и Group с полем good: List. - я правильно понимаю что в children: List храниться ноутбук, монитор, мышка, видеокарта и т.п., а в good: List конкретные марки вышеперечисленных товаров (MSI GP62 6QE Leopard Pro) - как эти списки связаны? вот есть у нас 2 листа, а если нужно посмотреть какие ноутбуки у нас есть то где у нас между списками взаимосвязь (я на uml вижу что есть класс, один список он наследует, один в нем есть и все)?
@SHURmandroid
@SHURmandroid 9 жыл бұрын
Эх, еще бы звук записывать на микрофон-петличку... :-(
@SHURmandroid
@SHURmandroid 9 жыл бұрын
***** На хромокей не надо, тогда потеряются ламповость и уют... :-) Просто звук не всегда хорошо слышно, он слегка бубнит и эхом отдает... не всё можно разобрать... но это мои мелкие придирки... :-) Спасибо за рассказы!
@Constantine..
@Constantine.. 9 жыл бұрын
Здравствуйте, Сергей. Спасибо за видео, как всегда интересно. Если возможность задавать вопросы ещё в силе, не могли бы вы осветить вопрос- шаблон проектирования Singleton - какой правильный вариант по вашему мнению? А то статей на этот счет достаточно много но под каждой в комментариях развиваются настоящие баталии, которые в конец запутывают. Или может укажите ресурс где по вашему мнению изложена оптимальная точка зрения.
@Constantine..
@Constantine.. 9 жыл бұрын
***** Спасибо.
@НастяТумашова-д4к
@НастяТумашова-д4к 6 жыл бұрын
Какие ютуб-каналы и плейлисты есть на эту тему, чтоб подробней изучить декомпозицию предметных областей?
@suxaryk
@suxaryk 9 жыл бұрын
как реализовать список списков через объекты? например меню -> категории -> блюда. List listofCat Думаю нужно создать класс Category который состоит(агрегация) из List, и тогда List Menu
@dbmongo9732
@dbmongo9732 5 жыл бұрын
Имхо, лучше использовать паттерн Компоновщик
@kjh4365z
@kjh4365z 9 жыл бұрын
Спасибо за ваши видео, очень познавательно! Осветите, пожалуйста, как быть с зацыкливанием объектов друг на друга. Например, у Goods есть поле типа Group, а у Group есть поле со списком Goods. На сколько я понемаю, Goods не скомпелируется, если нет скомпилированного Group и наоборот Group не скомпелируется без Goods. Где лучше разрывать зависимость?
@sergbo5509
@sergbo5509 7 жыл бұрын
С типом цены за товар не согласен. Цена товара может быть и менее копейки. Вот сумма товара может и да. Вот например на складах у каждого товара есть цена за лот(пачку,коробку) и есть розничная цена 1штуки того что в коробке. В коробке 1000 гвоздей стоит 2,50грн за коробку сколько будет стоить 500 гвоздей. Если посчитать в копейках(с типом интегер), то получится ровно 0))) 250/1000=0,25=0(Integer)*500=0. Если не флоат то нужно уже будет выдумывать что-то типа дополнительного поля exponent для обозначения запятой, так что тут еще нужно подумать))) Ну или создавать метод типа getGoodPcsPrice и поле pcs(кол в лоте) с возвр флоат. Зачем это нужно, ну например для вычисления конкретной стоимости изделия, а из неё что бы получить стоимость партии, а из неё сколько расходов пошло на производство и все производные. Точно знаю если в бухгалтерии не сходится 1 копейка, в любую сторону, то это целая проблема, по крайней мере когда я работал в банке так и было))).
@shamkhan2636
@shamkhan2636 3 жыл бұрын
"В котором новичок умирает..." :)))) Интересно рассказывает, хотя звук ужасный. Самому знакомо :)
@ВиталийРомашкин-б6б
@ВиталийРомашкин-б6б 8 жыл бұрын
В первом случае(метод summ в нужном месте) вы применили принцип InformationExpert а во втором(вложенные группы товаров) шаблон Composite. Верно?
@ВиталийРомашкин-б6б
@ВиталийРомашкин-б6б 8 жыл бұрын
Вам спасибо за ролики! Крутые
@annakosareva8629
@annakosareva8629 3 жыл бұрын
Спасибо!
@LinDahai88
@LinDahai88 8 жыл бұрын
Очень интересно и полезно. Спасибо! Есть вопрос по поводу групп. Может быть есть смысл сделать так: class Catalog { public List groups; } class Group : Catalog { public List goods; } Насколько это живой вариант?
@LinDahai88
@LinDahai88 8 жыл бұрын
ну.. тогда не нужен абстрактный класс каталог и семантически вроде понятнее, мол каталог - это список групп, а группа - это тот же каталог только у него еще есть список товаров. Да и вроде как понятие каталог и так уже достаточно абстрактное.. Ну в общем это так просто мысли вслух.. Хотел узнать Ваше мнение по поводу такой конструкции. Реально ли такое встретить в работающем решении?
@9Corvinus
@9Corvinus 5 жыл бұрын
А какие средства Uml можете посоветовать, не argo?
@ОлегЛитвиненко-о5з
@ОлегЛитвиненко-о5з 3 жыл бұрын
Немчинский как всегда часу ночи снимает😀
@stakhovskiy
@stakhovskiy 3 жыл бұрын
Сергей, перезапишите пожалуйста. Звук! Это ужасно!
@maxlich9139
@maxlich9139 7 жыл бұрын
14:00 попробовал - выдает true. Вот код: float f1 = 1.0f; float f2 = 1.0f; System.out.println(f1 == f2); Имелось в виду что-то другое?
@АндрейМорзе-ъ9ы
@АндрейМорзе-ъ9ы 9 жыл бұрын
"Человека декомпозировать не надо. За это срок светит." Бугагашенька :)
@siriusdiamond
@siriusdiamond 7 жыл бұрын
а сточки зрения SQL методы price, sum они же не нужны для подсчета ?
@siriusdiamond
@siriusdiamond 7 жыл бұрын
***** это типа пример ?
@siriusdiamond
@siriusdiamond 7 жыл бұрын
я в смысле если будет sql то, запросом быстрее будет
@HalizVideo
@HalizVideo 2 жыл бұрын
Нихрена не понял, но ОЧЕНЬ интересно. )))
@pyjvm
@pyjvm 6 жыл бұрын
Привет квадратноголовым. Надеюсь ты просто игрок? А то я теперь буду боятся что ты мой код увидишь.
@jklkl782
@jklkl782 9 жыл бұрын
Софт менять нужно и со звуком беда, а так гууд.
@ilnurryazhapov
@ilnurryazhapov 4 жыл бұрын
тут хоть более менее нормальная борода
@max041098
@max041098 8 жыл бұрын
6 666 просмотров
@shamkhan2636
@shamkhan2636 3 жыл бұрын
Ужасный звук. Невозможно слушать.
@sviatoslavvovnianko3357
@sviatoslavvovnianko3357 Ай бұрын
36:00, абстрактна група знає про групу. Порушення DI принципу
@MrGrechman
@MrGrechman 7 жыл бұрын
Сергей, огромное спасибо! Вы очень понятно преподносите материал, очень полезно.
@johnconstantine6331
@johnconstantine6331 2 жыл бұрын
Не получилось ли так, что Goods зависит от Group и наоборот? Не циклическая зависимость?
@lexzcq
@lexzcq 9 жыл бұрын
Спасибо за очередную порцию полезной информации, единственный маленький совет - попробуйте брать звуковую дорожку камеры, а не с микрофона, по-крайней мере не будет пропаданий звука.
@ViktorVdovichenko
@ViktorVdovichenko 4 жыл бұрын
За декомпозицию человека, большой лайк!
@Alellas
@Alellas 8 жыл бұрын
эх... (смайлик боли) надеюсь на этот раз я таки новый проект весь разрисую. спасибо за лекции! не первый год канал смотрю. и данный плейлист тоже не в первый раз слушаю ) жалко что многие вещи быстро забываются. прямо как у Рейстлина Маджере из ДрегонЛейнс проблема - ему постоянно надо было читать книги с заклинаниями потому что после произнесения они стирались из головы )))
@АлександрМирошниченко-е2м
@АлександрМирошниченко-е2м 4 жыл бұрын
Столкнулся с проблемой при установке ArgoUML. Скачал с официального сайта argouml.tigris.org, ссылка с википедии. В начале установки - сообщение: На компьютере, мол, не установлено JRE. Но как так?! Я в Intellj IDEA уже как пол года компилирую, запускаю код. Ладно, вариантов нет, жму ок - выберите компоненты программы для установки. Две галочки - JRE, ArgoUML - далее... Останавливается на connecting при установке jre. Неужели на официальном сайте глючный инсталлер?
@vladyslavstusiak5491
@vladyslavstusiak5491 3 жыл бұрын
Это же composite. Ну, там где группы и каталоги. refactoring.guru/design-patterns/composite
@Гість-у8э
@Гість-у8э 3 жыл бұрын
up
@ВолодимирКостерін-щ4ш
@ВолодимирКостерін-щ4ш 8 жыл бұрын
красота , спасибо!
@АртемАртеменко-й8б
@АртемАртеменко-й8б 4 жыл бұрын
что по декомпазиции можно почитать
@mckrava
@mckrava 9 жыл бұрын
Подавление шума на "0", плииииизззз!
@alekseychaykovskiy3963
@alekseychaykovskiy3963 4 жыл бұрын
спасибо
@LE5F0RE5T
@LE5F0RE5T 9 жыл бұрын
Сергей добрый день.Скажите вы имеете какое либо отношение к Джава Раш?
Трехтировое (трехслойное) приложение
15:04
Sergey Nemchinskiy
Рет қаралды 22 М.
Как мы играем в игры 😂
00:20
МЯТНАЯ ФАНТА
Рет қаралды 3,1 МЛН
Cute
00:16
Oyuncak Avı
Рет қаралды 12 МЛН
My daughter is creative when it comes to eating food #funny #comedy #cute #baby#smart girl
00:17
Шаблоны разработки ПО. Шаблоны GRASP
1:05:12
Sergey Nemchinskiy
Рет қаралды 31 М.
Шаблоны разработки. ООП и основы UML
59:13
Sergey Nemchinskiy
Рет қаралды 78 М.
code или no-code? Неделя разработки на FlutterFlow - сложности.
16:10
Разбор кода DAO Layer на Java
30:06
Sergey Nemchinskiy
Рет қаралды 34 М.
Основы архитектуры Java приложения. UML
27:33
Sergey Nemchinskiy
Рет қаралды 50 М.
Docker - Полный курс Docker Для Начинающих [3 ЧАСА]
3:01:51
Как мы играем в игры 😂
00:20
МЯТНАЯ ФАНТА
Рет қаралды 3,1 МЛН