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

Дисциплины => Системный Анализ и Требования => Тема начата: kirka от 15 Октября 2018, 18:27:06

Название: Как в uml указать что класс может состоять из самого себя?
Отправлено: kirka от 15 Октября 2018, 18:27:06
Есть монитор, мышь, блок питания, системный блок, компьютер и т.д.
Все это продукты, которые можно продать по отдельности либо вместе.
Пример:

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

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

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

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

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

Вопрос как указать что класс Product может состоять из самого себя? Причем в глубину несколько раз: Клавиатура->Системный Блок->Компьютер
Название: Re: Как в uml указать что класс может состоять из самого себя?
Отправлено: Galogen от 15 Октября 2018, 22:14:28
Постройте связь агрегацию Product (1) <>----(*) Product,

Подойдет?
Название: Re: Как в uml указать что класс может состоять из самого себя?
Отправлено: [прилетело НЛО и...] от 15 Октября 2018, 23:07:56
Зависит от того сколько уровней нужно.
(https://upload.wikimedia.org/wikipedia/commons/6/65/W3sDesign_Composite_Design_Pattern_UML.jpg) (https://commons.wikimedia.org/wiki/File:W3sDesign_Composite_Design_Pattern_UML.jpg)
W3sDesign Composite Design Pattern UML (https://commons.wikimedia.org/wiki/File:W3sDesign_Composite_Design_Pattern_UML.jpg) CC BY-SA 4.0, by Vanderjoe, from Wikimedia Commons
Название: Re: Как в uml указать что класс может состоять из самого себя?
Отправлено: Galogen от 15 Октября 2018, 23:26:49
Зависит от того сколько уровней нужно.
А я думал, можно агрегацией обойтись:) А справа - это диаграмма объектов?
Название: Re: Как в uml указать что класс может состоять из самого себя?
Отправлено: [прилетело НЛО и...] от 16 Октября 2018, 03:18:24
А справа - это диаграмма объектов?
Фиг знает. Википедийное творчество. Мысленно можно "яйца" заменить на прямоугольники, будет норм.
Название: Re: Как в uml указать что класс может состоять из самого себя?
Отправлено: [прилетело НЛО и...] от 27 Октября 2018, 13:00:16
Кстати, при внимательно разглядывании обоих вариантов ДК становится виден их общий недочёт. На полюсе агрегации рядом с ромбом следует писать [0..1], иначе получаются бесконечные или закольцованные древовидные структуры. При этом закольцованные структуры выглядят сомнительно в плане того, что являются графами с циклами по отношению "целое -> часть", т. е. некоторое "целое" может оказаться собственной "частью" напрямую или опосредовано. Как ни странно, стандарт в этом месте не даёт явного запрета. "Не заморачивайтесь с ромбами" (с) С. Амблер. И всё такое.)