Как в uml указать что класс может состоять из самого себя?(Прочитано 10171 раз)
Есть монитор, мышь, блок питания, системный блок, компьютер и т.д.
Все это продукты, которые можно продать по отдельности либо вместе.
Пример:

a. блок питания, видеокарта входят в состав системного блока, который можно продать. Также можно продать по отдельности блок питания, видеокарту

b. системный блок который состоит из видеокарты и блока питания тоже может являться частью "компьютера" который можно также продать.

В итоге выделяю класс:

public class Product{
   String name;
   String type;
   double[] ParamList;
Пример:

Product
Мышь
Периферия
Черная

Вопрос как указать что класс Product может состоять из самого себя? Причем в глубину несколько раз: Клавиатура->Системный Блок->Компьютер



Постройте связь агрегацию Product (1) <>----(*) Product,

Подойдет?



Зависит от того сколько уровней нужно.

W3sDesign Composite Design Pattern UML CC BY-SA 4.0, by Vanderjoe, from Wikimedia Commons
[...и улетело НЛО.]



Зависит от того сколько уровней нужно.
А я думал, можно агрегацией обойтись:) А справа - это диаграмма объектов?



А справа - это диаграмма объектов?
Фиг знает. Википедийное творчество. Мысленно можно "яйца" заменить на прямоугольники, будет норм.
[...и улетело НЛО.]



Кстати, при внимательно разглядывании обоих вариантов ДК становится виден их общий недочёт. На полюсе агрегации рядом с ромбом следует писать [0..1], иначе получаются бесконечные или закольцованные древовидные структуры. При этом закольцованные структуры выглядят сомнительно в плане того, что являются графами с циклами по отношению "целое -> часть", т. е. некоторое "целое" может оказаться собственной "частью" напрямую или опосредовано. Как ни странно, стандарт в этом месте не даёт явного запрета. "Не заморачивайтесь с ромбами" (с) С. Амблер. И всё такое.)
[...и улетело НЛО.]




 

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