Re: Несколько вопросов по UML и Rational Rose
От: stump http://stump-workshop.blogspot.com/
Дата: 12.01.07 14:57
Оценка:
Здравствуйте, 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 — пунктирная линия)
Понедельник начинается в субботу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.