Форум Сообщества Аналитиков

×


Вопрос по диаграмме классов(Прочитано 37360 раз)
Добрый день!

Строю диаграмму классов предметной области (не уровня разработки - только описываю область в целом).
Всегда мучает вопрос - к какому классу правильней и логичней относить функции?

Так:


или так:


Прошу дать совет. Спасибо.



Re: Вопрос по диаграмме классов Ответ #1 : 18 Марта 2010, 11:57:17
На уровне предметной области операции классов обычно не отображаются.

Тем не менее при моделировании нужно опираться на понятие ответственности класса.

Исходя из этого принципа, очевидно, что первая диаграмма более корректна.

Кто регистирует заказ - очевидно это делает скажем клиент (хотя я бы лучше написал разместить заказ, все-таки регистрирует заказ сама система или какой-то служащий)
Кто подтверждает заказ - очевидно клиент.

Правда в данном случае это некоторые внешние события идущие от клиента - как я понимаю некоторого участника процесса заказа

Добавить элемент заказа - в принципе тоже ответственность клиента, хотя действительно эту операцию можно разместить в заказе



Re: Вопрос по диаграмме классов Ответ #2 : 18 Марта 2010, 12:07:43
Спасибо, Galogen! Как всегда быстро и убедительно )



Re: Вопрос по диаграмме классов Ответ #3 : 18 Марта 2010, 12:21:38
Позволю себе задать еще один вопрос:
Есть магазин, который со временем меняет режим работы.
Можно ли сможелитьвать это так:


При этом какой класс должен иметь функцию смены режима? Видимо, класс "магазин"?



Re: Вопрос по диаграмме классов Ответ #4 : 18 Марта 2010, 12:56:53
... добавлю, что необходимо вести журнал изменений режима работы.



Re: Вопрос по диаграмме классов Ответ #5 : 18 Марта 2010, 13:01:06
если я правильно понимаю то для этого можно применять привязку сущности к связи. так называемая триарная связь получается. В вашем случае эта третья сущность будет отражать период актуальности связи Магазин-РежимРаботы



Re: Вопрос по диаграмме классов Ответ #6 : 18 Марта 2010, 13:48:26
Позволю себе задать еще один вопрос:
Есть магазин, который со временем меняет режим работы.
Я бы сделал Режим работы - перечислением.
Сделал бы просто атрибут типа это перечесление или класс - со связью заморачиваться не стоит в таком контексте

Насчет журнала - т.е. необходимо вести историю типа: Дата - Режим работы.
На концептуальной модели я бы ввел класс Журнал и две ассоциации к магазину и к режиму соотвественно. Кратность на стороне журнала много.

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



Re: Вопрос по диаграмме классов Ответ #7 : 18 Марта 2010, 14:30:43
Можно и с промежуточной сущностью, можно и атрибутом
Но тем не менее вариант привязки сущности к связи мне нравится больше изза того что он передает семантику и не подразумевает как это будет решено на физической модели. в случаях же с промежуточной связью и с атрибутом вас могут неправильно понять при переходе к ER модели.

Впрочем, на вкус и цвет....



Re: Вопрос по диаграмме классов Ответ #8 : 18 Марта 2010, 14:33:42
Всегда мучает вопрос - к какому классу правильней и логичней относить функции?
Не совсем согласен с Эдом, скорее надо нарисовать Д Последовательности и сразу станет понятно у кого какая операция.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Re: Вопрос по диаграмме классов Ответ #9 : 18 Марта 2010, 16:10:21
Прочитал у Фаулера, что двум участвующим в ассоциации объектам может соответствовать ТОЛЬКО ОДИН экземпляр класса-ассоциации. То есть магазин не сможет перейти на круглосуточный режим, потом вернуться на 12-ти часовой, и потом снова на круглосуточный.
Буду испольовать три класса - "магазин", "режим работы" и "журнал работы"



Re: Вопрос по диаграмме классов Ответ #10 : 18 Марта 2010, 16:24:39
Можно и с промежуточной сущностью, можно и атрибутом
Но тем не менее вариант привязки сущности к связи мне нравится больше изза того что он передает семантику и не подразумевает как это будет решено на физической модели. в случаях же с промежуточной связью и с атрибутом вас могут неправильно понять при переходе к ER модели.

Впрочем, на вкус и цвет....

Прочитал у Фаулера, что двум участвующим в ассоциации объектам может соответствовать ТОЛЬКО ОДИН экземпляр класса-ассоциации. То есть магазин не сможет перейти на круглосуточный режим, потом вернуться на 12-ти часовой, и потом снова на круглосуточный.
Буду испольовать три класса - "магазин", "режим работы" и "журнал работы"
Молодец idaxebrn, именно это я хотел ответить kirillss. Кстати ничего в моих рассуждениях от реализации то и нет



Re: Вопрос по диаграмме классов Ответ #11 : 18 Марта 2010, 16:25:00
Не совсем согласен с Эдом, скорее надо нарисовать Д Последовательности и сразу станет понятно у кого какая операция.
Не понял с чем ты не согласен в данном случае?



Re: Вопрос по диаграмме классов Ответ #12 : 18 Марта 2010, 16:28:48
если я правильно понимаю то для этого можно применять привязку сущности к связи. так называемая триарная связь получается. В вашем случае эта третья сущность будет отражать период актуальности связи Магазин-РежимРаботы
Описываемая Вами ситуация не есть N-арная ассоциация, а есть класс-ассоциации. Как сказано было (ниже или выше) класс-ассоциации тут может и не подойти



Re: Вопрос по диаграмме классов Ответ #13 : 18 Марта 2010, 16:35:50
 
Прочитал у Фаулера, что двум участвующим в ассоциации объектам может соответствовать ТОЛЬКО ОДИН экземпляр класса-ассоциации. То есть магазин не сможет перейти на круглосуточный режим, потом вернуться на 12-ти часовой, и потом снова на круглосуточный.

Не очень понял в чем проблема. Связь Магазин-режим работы многие-ко-многим так что не виже проблемы в том что каждому экземпляру такой связки  соответствует ровно один экземпляр класса Журнал. НИКАКИХ ПРОТИВОРЕЧИЙ ТО НЕТ!!!!!!!!!



Re: Вопрос по диаграмме классов Ответ #14 : 18 Марта 2010, 16:39:20
Речь про использоватние класса-ассоциации "Журнал" - он тут не подходит. Нужно использовать обычный класс.




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19