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

Общий раздел => Примеры => Тема начата: djin от 29 Июня 2011, 13:59:18

Название: Вопрос к гуру по диаграмме классов
Отправлено: djin от 29 Июня 2011, 13:59:18
Уважаемые господа!

В последнее время стал использовать различные диаграммы в аналитической деятельности. Одной из которых стала диаграмма классов.
До сих пор, не могу понять, как следует трактовать и понимать диаграмму классов определенной предметной области.
В прикреплении диаграмма:
(http://s59.radikal.ru/i165/1106/98/e465ed4f5bc6.jpg)
на ней описана модель предметной области работы больницы при заборе биоматериала, для выполнения различных лабораторных анализов

Может кто проверить правильность и укажет правильное направление для дальнейшего движения (с точки зрения правильного оформления диаграммы классов).

Заранее благодарен!
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Виктор Малышко от 29 Июня 2011, 16:01:30
На первый взгляд:
ФИО главного врача лучше хранить в Сотруднике (враче), а не в КК (коммерческая клиника?).
Если Врач, Регистратор и Медсестра не имеют ничего собственного, помимо определенного в Сотруднике, то вместо наследования лучше использовать атрибут перечислимого типа (enumeration).
Есть необоснованное подозрение, что Заполненный направительный бланк и Услуга могут дублировать друг друга. Скажем, если есть услуга "первичный осмотр", то на нее выписывается направление, если есть услуга "лабораторный анализ" у неё тоже может быть связанный бланк. Бланк, как я полагаю, не является самостоятельной информационной сущностью. Могу ошибаться.
Деление на агрегации и композиции прихотливое. Например, маловероятно, чтобы один и тот же Пациент не упоминался в разных экземплярах Услуги.
Связи в тройке Пациент -> Биоматериал -> Пробирка делают возможным странные, на мой взгляд, ситуации когда в пробирке одного пациента можно обнаружить биоматериалы другого. Хотя, может быть так и задумано.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 29 Июня 2011, 16:38:18
Есть необоснованное подозрение, что Заполненный направительный бланк и Услуга могут дублировать друг друга
в направительном бланке указан перечень возможных услуг, то есть по одному направительному бланку должны быть заказаны 1..* услуг (может тут ассоциация, а не агрегация???)
маловероятно, чтобы один и тот же Пациент не упоминался в разных экземплярах Услуги
Действительно 1 пациент может заказать несколько услуг, соответственно 1 услуга может быть заказана несколькими пациентами (то есть опять многие ко многим и ассоциация, а не агрегация???)
Связи в тройке Пациент -> Биоматериал -> Пробирка
то есть как я понял, то лучше оставить связь пациент включает в себе биоматериал (композиция) и удаляется связь первичная пробирка, так как биоматериал является обязательным содержимом первичной пробирки (композиция)
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Виктор Малышко от 29 Июня 2011, 17:00:44
в направительном бланке указан перечень возможных услуг, то есть по одному направительному бланку должны быть заказаны 1..* услуг (может тут ассоциация, а не агрегация???)
Но пока у Вас бланк не связан с услугами напрямую, есть лишь неявные, и не выделяемые опосредованные связи через Пациента и Сотрудника. Если связь будет, то надо будет прикинуть каковы связи с Пациентом (например, возможно ли, что пациенту оказываются услуги по бланку, выписанному для другого пациента).
Действительно 1 пациент может заказать несколько услуг, соответственно 1 услуга может быть заказана несколькими пациентами (то есть опять многие ко многим и ассоциация, а не агрегация???)то есть как я понял, то лучше оставить связь пациент включает в себе биоматериал (композиция) и удаляется связь первичная пробирка, так как биоматериал является обязательным содержимом первичной пробирки (композиция)
Я не уверен, что рисуя модель предметной области Вам необходимо дотошно уточнять, где агрегация, а где композиция. Обычно такие уточнения делают на поздних этапах анализа или при проектировании. Но могу пояснить, что дело по сути не в мощностях связей, а в том, что объект-часть не разделяется композирующим объектом-целым с другими объектами, и объект-часть живет в пределах периода существования объекта-целого (при композиции).
Про связи внутри тройки поняли правильно. Либо биоматериал привязан к пациенту (и не связана пробирка), либо пробирка привязана к пациенту (и весь биоматериал в ней его). Но не то и другое вместе. Конечно, дублирование может быть заложено сознательно, для повышения эффективности некоторых запросов (и замедления других:). Но при анализе, обычно строятся нормализованные модели, а дальше уже решают, где стоит от этого отказываться, а где нет.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Sergasd от 29 Июня 2011, 17:25:29
По представленной диаграмме сказать можно мало:
1) Заполненный направительный бланк- забавно звучит :) еще бывает не заполненный?
2) Не понятно- чем отличается доп услуга, лаб услуга  и услуга. Возможно одного класса хватит, добавив в него тип услуги?
3) Не пытайтесь в одну диаграмму засунуть все классы, которые есть. Лучше разделите на разные диаграммы.
4) А сотрудник не может быть пациентом?  Возможно он какие то скидки на услуги может получать?
Про пробирки  и двойные связи уже сказали :)
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 29 Июня 2011, 17:55:13
1) Заполненный направительный бланк- забавно звучит :) еще бывает не заполненный?
Бланк может быть чистым не заполненным - и это обозначает, что выбранных услуг по нему 0
Бланк может быть заполненным, то есть галочками отмечены необходимые услуги 1..*
Бланк может быть электронным, после печати появляется заполненный (предыдущий)
2) Не понятно- чем отличается доп услуга, лаб услуга  и услуга. Возможно одного класса хватит, добавив в него тип услуги?
одна услуга - лаб. услуга - то что делает лаборатория, там химические реакции и прочие, то есть специалисту за это процент не полагается
а вот вторая услуга - это забор крови допустим, 100 рублей, медсестра набрала за день 10 анализов получила 10 рублей (1% например)
3) Не пытайтесь в одну диаграмму засунуть все классы, которые есть. Лучше разделите на разные диаграммы.
понял собственно это и делаю, то есть теперь будет класс заказ услуги и он уже без всяких медсестер и иже с ними
4) А сотрудник не может быть пациентом?  Возможно он какие то скидки на услуги может получать?
может, что в этом случае делать

Огромное спасибо за участие, надеюсь с Вашей помощью, смогу въехать не только в саму нотацию, но и в принцип ее использования, так как примеров с машиной и колесом недостаточно )))
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Sergasd от 29 Июня 2011, 22:10:50
Да! Что есть "первичная пробирка"? Есть еще вторичная и т.д?

Достаточно было сделать ассоциации между договором и пациентом.

Пробирка оказалась как то в стороне от договоров. Разве такое возможно? Сколько раз был в  поликлинике - ни разу не давали пробирку пока договор не заключишь :)
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: varg от 30 Июня 2011, 09:12:40
1. где кратности на ассоциациях?
2. наследники сотрудника должны иметь отличительные свойства атрибуты иначе их выделять нет смысла (есть атрибут должность в сотрудники этого хватит) это уже говорили;
3. в пациент атрибут ФИО добавить хотя бы;
4. с композициями конечно перебор тут, для начала все композиции и агрегациии я б заменил на ассоциации;
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Денис Иванов от 30 Июня 2011, 10:42:27
Может кто проверить правильность и укажет правильное направление для дальнейшего движения (с точки зрения правильного оформления диаграммы классов).
Чтобы проверить правильность диаграммы классов, постройте  по ней несколько диаграмм об'ектов.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 30 Июня 2011, 11:30:26
Уважаемые коллеги!

Прочитав некоторые главы из книги (Дж.Рамбо, М.Блаха. UML 2.0. Объектно-ориентированное моделирование и разработка. (2-е изд.)(2007)) решил пойти немного оптимизированным путем, то есть решил проводить композицию/декомпозицию, там где она действительно имеет место. То есть я решил не писать в одной диаграмме ЛПУ и участников процесса, а решил разделить на собственно заказ и участников процесса
1 часть а именно заказ получился следующим образом -> диаграмма-классов-заказа во вложении.

2 часть буду делать.

Хотелось бы получить рецензию по 1 части. Прошу указать ошибки, и в правильном ли направлении двигаюсь, заранее благодарен.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 30 Июня 2011, 11:41:44
1. где кратности на ассоциациях?
уже исправил в диаграмме классов заказа
2. наследники сотрудника должны иметь отличительные свойства атрибуты иначе их выделять нет смысла (есть атрибут должность в сотрудники этого хватит) это уже говорили;
тут возникает следующий вопрос, в атрибутах сотрудника будет находится должность, а что если врач становится пациентом? получается что нам надо отображать ассоциацию сотрудник - пациент (1-1)?
3. в пациент атрибут ФИО добавить хотя бы;
исправлю
4. с композициями конечно перебор тут, для начала все композиции и агрегациии я б заменил на ассоциации;
выполнил
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 30 Июня 2011, 13:19:53
Вот как получилась часть 2:
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: varg от 04 Июля 2011, 15:31:44
Я не гуру, просто выражаю свое мнение, которое может быть ошибочным.
по диаграмме_КК:
1. для чего композиция кабинет-сотрудник (в сотрудника включается кабинет)? простая ассоциация тут будет уместней.
2. Для чего пациент -адрес кратность много? я б отобразил ассоциацией 1-1 ну если БОМЖ то 1-0,1.
3.просто любопытно а для чего пациенту 2 дисконтных карточки скидки суммируются?

"тут возникает следующий вопрос, в атрибутах сотрудника будет находится должность, а что если врач становится пациентом? получается что нам надо отображать ассоциацию сотрудник - пациент (1-1)?"
не очень понял вопроса, если врач стал пациентом для этого никаких доп ассоциаций не требуется.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: varg от 04 Июля 2011, 15:43:35
по диаграмме заказов:
общее замечание дать название ассоциациям (композиции и агрегации понятны а простым ассоциациям имена только помогут)
Теперь с кратностями подзапутался:
1. чек-договор
один договор может содержать несколько чеков, а как один чек может прикрепляться к нескольким договорам?
2.   договор-услуга по одному договору оказывается несколько услуг да, но одна услуга по разным договорам...? думается это будут разные однотипные услуги.
3. ассоциация бланк-пробирка неясная.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Galogen от 04 Июля 2011, 16:49:54
djin, ну замечания тебе уже дали. Мы тут, конечно, не гуру, скорее приближаемся медлеными шажками. Однако:

в чем задача использования агрегации и композиции? Скаже что любая ассоциация может и возможно должна быть уточнена до агрегации и композиции, но это становится важным лишь при реализации. Да и агрегация и композиция есть связь has a, т.е. связь принадлежности. Агрегация или композиция - зависит о того, какие сущности находятся в отношениях сильные или слабые. агрегация - типичная неидентифицирующая связь
принадлежности из IDEF1x, а композиция идентифицирующая. Согласно такой парадигме рассмотрим твои классы и связи между оными:
- КК  - сотрудники - это дейстивтельно так, что сотрудник определяется через наличие КК и только КК определяет есть это сотрудник? Что происходит если КК удалить? Как это между КК и Сотрудниками кратнсть М-М? Композит, это отношение часть-целое - отношение строгой иерархии. а М-М - это граф, сетевое соединение.
- связи многи-ко многим вообще не могут быть агрегациями или композициями - это противроречит здравому смыслу
- класс - есть сущность. сущность она одна. именуется в единственном числе


Неясно отношение между заказом исследования и сотрудниками.
1. дай атрибуты  заказа
2. сотрудник может выполнять? множество заказов, но каждый заказ исполняется также множеством сотрудников?
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 05 Июля 2011, 10:54:17
1. для чего композиция кабинет-сотрудник (в сотрудника включается кабинет)? простая ассоциация тут будет уместней.
хотелось подчеркнуть, что у сотрудника обязательно есть кабинет, но тем не менее с ассоциацией согласен
2. Для чего пациент -адрес кратность много? я б отобразил ассоциацией 1-1 ну если БОМЖ то 1-0,1.
дело в том, что у пациента может быть адрес прописки, регистрации и проживания (у бомжа вообще нет), то есть несколько адресов
3.просто любопытно а для чего пациенту 2 дисконтных карточки скидки суммируются?
у пациента может быть две ДК - предыдущего и последующего номинала в зависимости от накопленной суммы. Так как ДК не именная, то она может передаваться третьим лицам. Вероятно тут тоже ассоциация?
если врач стал пациентом для этого никаких доп ассоциаций не требуется.
но тут возникает вопрос, ведь у врача-пациента также появляются договоры заказы, производится забор биоматериала и тд, то есть из сотрудника он становится новым человеком регистрируемым на пробирке. (некрасиво выразился но тем не менее). он становится составляющим другой сущности не сотрудника, а пациента?
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 05 Июля 2011, 11:03:15
1. чек-договор
один договор может содержать несколько чеков, а как один чек может прикрепляться к нескольким договорам?
один договор может содержать несколько чеков - да
один чек может прикрепляться к нескольким договорам - да, когда я заключаю дополнительное соглашение, расширяю перечень услуг, когда уехал из КК. звоню и говорю добавьте мне еще одну услугу, по факту получения результатов оплачу все
2.   договор-услуга по одному договору оказывается несколько услуг да, но одна услуга по разным договорам...? думается это будут разные однотипные услуги.
в данном случае я понимаю, что допустим биохимия крови - есть одна услуга, за день их могут заказать 10 человек, то есть 1 услуга находится в 10 договорах. Вероятно я что то не так понял в диаграмме классов? просьба наставить на путь истинный!
3. ассоциация бланк-пробирка неясная.
дело в том что на одной пробирке могут быть выполнены различные анализы, биохимия крови, и протромбиновый индекс (извините за ругательства :)), а эти исследования располагаются в разных бланках, то есть ассоциация 1 пробирка - несколько бланков - оправдана. Тут еще есть обратная ассоциация (М-М общая) для определения допустим готовности человека к операции берется один бланк - допустим услуга называется исследования для госпитализации, в нее входит несколько пробирок, кровь моча и тд. то есть 1 бланк - несколько пробирок. По сему М-М ассоциация! Как я понял тут указано верно при таких объяснениях?
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: IAFedorov от 05 Июля 2011, 11:05:48
Цитата: djin
дело в том, что у пациента может быть адрес прописки, регистрации и проживания (у бомжа вообще нет), то есть несколько адресов
При этом адреса разных видов могут с течением времени меняться как сами адреса так и их типы (например после регистрации по месту проживания), в этом случае дополнительно вводят "периодичность"
Цитата: djin
но тут возникает вопрос, ведь у врача-пациента также появляются договоры заказы, производится забор биоматериала и тд, то есть из сотрудника он становится новым человеком регистрируемым на пробирке. (некрасиво выразился но тем не менее). он становится составляющим другой сущности не сотрудника, а пациента?
Это обычно реализуется вводом сущности Физические лица.
с ассоциацией один к одному с сущностями Пациент, Сотрудник.
В вашем примере на объект ФИЗЛИЦО Петров будут ссылки как в из объекте Сотрудник так и из Пациент.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 05 Июля 2011, 11:11:22
- связи многи-ко многим вообще не могут быть агрегациями или композициями - это противроречит здравому смыслу
то есть для себя нужно понять правило. Если отношение многие ко многим, то это только ассоциация
1. дай атрибуты  заказа
то есть необходимо указать атрибуты присущие заказу. тут вопрос, что если атрибуты заказа состоят из значений атрибутов входящих в него сущностей. по диаграмме-классов-заказа.gif атрибутами заказа будет и номера договора-заказа и номера первичной пробирки и некое количество направительных бланков.
как это отразить в диаграмме, то есть в атрибутах?
2. сотрудник может выполнять? множество заказов, но каждый заказ исполняется также множеством сотрудников?
сотрудник может выполнять множество заказов - да
каждый заказ исполняется также множеством сотрудников - да, один производит регистрацию договора-заказа, другой производит прием денег, третий произоводит забор биоматериала. Ассоциация в данном случае поставлена правильно как я понял?
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 05 Июля 2011, 11:16:15
в этом случае дополнительно вводят "периодичность"
это отдельная сущность?
В вашем примере на объект ФИЗЛИЦО Петров будут ссылки как в из объекте Сотрудник так и из Пациент.
может тогда данную связь можно организовать обобщением?
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: IAFedorov от 05 Июля 2011, 12:08:50
это отдельная сущность?
Обычно добавляют атрибут дата начала действия и в алгоритмах ищут последний действующий объект.
может тогда данную связь можно организовать обобщением?
может тогда данную связь можно организовать обобщением?
В принципе такой вариант тоже возможен. Но для начала нужно четко понять для чего это нужно.
Мне кажется что классически это будет не совсем правильно.


Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: IAFedorov от 05 Июля 2011, 12:18:20
Цитата: djin
тут вопрос, что если атрибуты заказа состоят из значений атрибутов входящих в него сущностей атрибутами заказа будет и номера договора-заказа и номера первичной пробирки и некое количество направительных бланков.
Атрибут не номер пробирки, а пробирка, тип класс Пробирка.
Для хранения перечней (бланков) объектов другой сущности:
либо отдельный класс на каждый перечень с атрибутами ссылками на соответствующие классы.
либо в бланке атрибут Заказ, ссылка на класс Заказ.
Вариант зависит о того что первично что вторично.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: varg от 05 Июля 2011, 12:33:44
1. не совсем по теме, а для чего КК набор всех адресов?
2. Вопрос про ДК: для  КК, какой прок 2 или 22 у пациента ДК если сумма по ним не суммируется. важно знать есть ли ДК и какого номинала кратность 0..1 если опять же я все правильно понял.
3."дело в том что на одной пробирке могут быть выполнены различные анализы, биохимия крови, и протромбиновый индекс (извините за ругательства ), а эти исследования располагаются в разных бланках, то есть ассоциация 1 пробирка - несколько бланков - оправдана. Тут еще есть обратная ассоциация (М-М общая) для определения допустим готовности человека к операции берется один бланк - допустим услуга называется исследования для госпитализации, в нее входит несколько пробирок, кровь моча и тд. то есть 1 бланк - несколько пробирок."
по моему она лишняя и дублирует существующие, даже по вашим описанием: есть исследование на госпитализацию, может быть один бланк, несколько пробирок в бланке прописаны услуги услуги связаны с пробирками.
по одной пробирке несколько анализов (пробирка-услуга) могут располагаться как в одлном так и в разных бланках (услуга-бланк), остается непонятным для чего ассоциация бланк-пробирка.
PS. на что ответы не привел, того сам не знаю или объяснить доходчиво не могу.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: djin от 05 Июля 2011, 13:11:10
1. не совсем по теме, а для чего КК набор всех адресов?
1. куда доставлять результаты
2. для ОМС и ДМС
2. Вопрос про ДК: для  КК, какой прок 2 или 22 у пациента ДК
так как карта не именованная, чтобы не выдавалась новая карта
остается непонятным для чего ассоциация бланк-пробирка.
без бланка исследование не производится, а пробирка является неидентифицированной, так как не известно что с этой пробиркой делать
тут если капнуть то все еще сложнее:
услуга - это набор тестов, например, общий анализ крови: лейкоцитарная формула, СОЭ, эритроциты и тд, услуга одна, то есть существует справочник услуг, есть услуга по забору биоматериала, делают укольчик и забирают кровь, это тоже услуга, но она штучная и в бланк не попадает,  то есть тут получается так, для договора-заказа - услуга с ценой, для бланка - услуга с перечнем тестов в этом различие и соответственно разные сущности, а проба - это контейнер с биоматериалом специально идентифицирован чтобы бабушка лаборант могла понять по бланку, на котором написан номер пробирки(ок), что с пробой делать, парить, сушить варить и тд
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Galogen от 05 Июля 2011, 13:48:56
то есть для себя нужно понять правило. Если отношение многие ко многим, то это только ассоциация
да не, реально есть 4 типа отношения:
1 обобщение
2 ассоциация
3 зависимость
4 реализация

Агрегация и композиция - уточненная ассоциация. Ассоциация многие - ко многим трудно представлять как часть-целое, потому не стоит усложнять без меры. При этом Многие-ко-многим можно понижать за счет введения квалификаторов

Цитировать
то есть необходимо указать атрибуты присущие заказу. тут вопрос, что если атрибуты заказа состоят из значений атрибутов входящих в него сущностей. по диаграмме-классов-заказа.gif атрибутами заказа будет и номера договора-заказа и номера первичной пробирки и некое количество направительных бланков.
Любой класс характеризуется списком атрибутов и отношений с другими классами. Отношения с другими классами могут моделироваться по-разному, в простейшем случае как атрибуты типа класс. Получается, что заказ в твоем случае полностью определяется из отношения с другими классами. Но так ли это? Мой опыт отрицает это. У заказа есть номер, дата, статус, тип и каки-то другие отличающие го от всех остальных объектов признаки.

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


Цитировать
сотрудник может выполнять множество заказов - да
каждый заказ исполняется также множеством сотрудников - да, один производит регистрацию договора-заказа, другой производит прием денег, третий произоводит забор биоматериала. Ассоциация в данном случае поставлена правильно как я понял?
неправильно, то что ты перечислил, если разные роли, возможно одного сотрудника, передается это не кратностью связи, а количество бинарных отношений. Представь себе документ, в нем  будет: Регистратор - Сидоров А.П.; Бухгалтер - Петрова А.К.; Лаборант: - Пугачев М.П. - Как ты это сумеешь передать только кратностью связи?
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: [прилетело НЛО и...] от 14 Сентября 2017, 22:22:33
[Кручу-верчу, запутать хочу.]

Многие ко многим может быть часть-целое, если это агрегация. Например, Группа◇-0..2---2..7-Работник. То, что две группы могут расшаривать между собой работника (работников) агрегация допускает.
Название: Re: Вопрос к гуру по диаграмме классов
Отправлено: Galogen от 15 Сентября 2017, 22:57:54
[Кручу-верчу, запутать хочу.]

Многие ко многим может быть часть-целое, если это агрегация. Например, Группа◇-0..2---2..7-Работник. То, что две группы могут расшаривать между собой работника (работников) агрегация допускает.

Верно