Задача о поставщиках
В прошлый раз thomas предложил задание для построения диаграмм UML.
У меня получился вот такой набор:

Сейчас уже подумала, что надо было бы нарисовать еще диаграмму последовательностей, на ней как раз хорошо было бы видно то, что я попыталась изобразить на диаграмме кооперации. Дорисую чуть позже.
Моя точка зрения. Поскольку удалось выделить в описании только один процесс, то именно его я и отразила в диаграмме деятельности. Детали проверок нас в данном случае не интересуют, главное алгоритм. В принципе его почти без изменений можно перенести в код (заполнив упомянутые проверки нужными данными). Но здесь такая задача даже не ставилась.
После того, как я почитала описание в журнале у thomas’а, мне удалось нарисовать диаграммы классов и кооперации. С последней все ясно – наше предприятие в ней будет играть роль Исполнителя (можно назвать как угодно), которое имееет отношения с Поставщиками, с одной стороны, и с Клиентами, с другой. От одних оно получает материалы, а другим поставляет услуги (работу). То и другое оплачивается и сопровождается некоторыми документами.
Что касается диаграммы классов, тут возможны разные варианты. Важно помнить о том, что чем выше уровень абстракции, тем более широкий класс задач можно описать такой диаграммой – и в то же время наш частный случай должен найти в ней отражение. Исходя из этого, я определила две роли – Поставщик и Клиент. По большому счету нас интересует только эта роль, т.к. конкретный участник (предприятие, в том числе наше) выступает всегда в одной из них. Второй момент – наследование классов Материал и Работа от общего класса Продукт. Идея такая: есть Поставщик, есть Клиент, они связаны тем, что один что-то получает от другого – это что-то в данном случае и называется Продукт. Т.к. процессы поставки материалов и выполнения работы в контексте этой задачи почти не отличаются, то мне показалось возможным их объединить таким образом. Но, повторю, тут все индивидуально.
Документ всегда сопровождает Продукт – таким образом удалось избежать дублирования связи, которое возникло бы в том случае, если бы у нас не было родительского класса. Вместо этого пришлось бы указывать связи Документа с Материалом и с Работой.