UML, атрибуты и типы данных
От: ObjectXplorer  
Дата: 02.05.11 16:45
Оценка:
Добрый день,

Возник вопрос по UML (диаграмма классов) — в чем разница между классами и атрибутами. На первый взгляд все просто — атрибут это характеристика объекта, являющаяся "простым" типом. Т.е. типом, состоящим из одного поля данных: дата, строка, число и т.п. Такие вещи пишем в атрибуты, что-то более сложное — как связь с другим классом.

Но как быть если атрибут является "простым" типом, но не стандартным? Возмем "День недели" — пусть это будет атрибут с возможными значениями от 1 до 7. Но при этом для него нужно определить и некоторые операции, сложения/вычитания например (смысл неважен, главное что нужны _какие-то_ операции). Вот как это изобразить в UML?

Может как-то с помошью стереотипов:

<<attribute>>
DayOfWeek
-------------
+number
-------------
+add(DayOfWeek)
+sub(DayOfWeek)

Или это все лишнее, и достаточно "нарисовать" его где-нибудь один раз в виде обычного класса, а дальше везде использовать как атрибут?

И еще, например вектор — это атрибут или объект? С одной стороны это не совсем простой тип, т.к. состоит из нескольких "координат", т.е. вроде и не атрибут. С другой — вполне логично иметь в виде атрибутов вектор скорости объекта, вектор силы тяжести и т.д... Так же возможны ситуации когда нужно задать нескольким объектам ссылки на один и тот же вектор (не одинаковые значения векторов, а именно один), т.е. тут вектор уже точно не может быть атрибутом...

Т.е. я к чему — можно ли в UML использовать "составные" атрибуты (для компактности), или все-таки в таких случаях всегда нужно рисовать объекты?

Спасибо за внимание.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.