Здравствуйте, vladimir_v_l, Вы писали: __>1. Как показать на диаграмме классов связь документа со справочником? __> (чувствую, что правильно нарисовать диаграмму мне мешает привычка __> мыслить в категориях реляционных БД. Хотя ООП я применяю в приложениях __> достаточно часто, но вот UML как-то еще ни использовал). __> Рисую класс "Документ", класс "Справочник". От документа к справочнику __> рисую однонаправленную ассоциацию, устанавливаю кратность 1 к 1.
Отношение Документ — справочник всегда имеет мощность один — ко многим (с вариациями на обязательность поля 0..1 to 0..n или 1 to 1..n). __>2. Для связи классов "Документ" и "Деталь документа" создаю два класса (правильно? __> детали же представляют собой отдельный класс?
а что такое "Деталь документа"? Атрибуты класса в модели могут быть только примитивных типов. Если тип атрибута — другой класс то тут уже должна быть ассоциация или агрегация. __> а если надо, например, __> хранить комментарии к документу со временем их добавления и автором — для __> такого комментария тоже нужен отдельный класс?), от документа к детали рисую __> двунаправленную ассоциацию агрегации, со стороны документа ставлю кратность 1, __> со стороны детали — 0..n.
Так не может быть. если с одной строны мощность 1 то с другой 1..n __> стереотип "include"? Или нет? Как в Rose указать, что эта агрегация — композит?
Для агрегации в розе рисуют связь в обратном направлении чем для ассоциации, т. е. от дочернего элемента к агрегирующему.
Затем на вкладке "Role A detail" отмечаешь "Aggregate" и "By value" — вот тебе и композит.
__>3. У документа есть некий статус, который последовательно изменяется во времени. __> Надо отслеживать, кто, когда и какой статус установил. __> В реляционной модели я бы сделал связь многие-ко-многим между возможными __> видами состояний (справочник) и документом, в таблице связи фиксировал бы время __> и ссылку на пользователя. __> На диаграмме классов мне надо тоже создать класс "Состояние документа" и __> в нем все это хранить? Если да, то от класса "Документ" к классу "Состояние документа" __> рисуем двунаправленную ассоциацию агрегации, со стороны документа ставим __> кратность = 1, со стороны класса состояния документа — 1..n (статус должен быть всегда). __> От класса "Состояние документа" к классу "Вид состояния" (справочнику) __> рисуем однонаправленную ассоциацию с кратностью 1 к 1. Так или нет?
1 к 1..n __> Каким стереотипом можно обозначить эти ассоциации?
зачем тебе тут стереотип?
__>4. Есть два класса, один из которых является "коллектором" для другого класса, __> например, "Проект" является коллектором объектов класса "Задание", т.е. __> он умеет их создавать/удалять/находить и т.п. __> Связь между ними показываю двунаправленной ассоциацией (чтобы и из __> "проекта" получить доступ к "заданиям", и наоборот, из "задания" выйти на "проект". __> Для "проекта" устанавливаю кратность 1, для "задания" — 0..n. Это правильно __> или здесь нужна зависимость, а не ассоциация? __> Каким стереотипом можно обозначить эту ассоциацию?
Тут действительно скорее не ассоциация а зависимость (dependency — пунктирная линия)