Форум Сообщества Аналитиков
Дисциплины => Системный Анализ и Требования => Тема начата: kirka от 15 Октября 2018, 18:27:06
-
Есть монитор, мышь, блок питания, системный блок, компьютер и т.д.
Все это продукты, которые можно продать по отдельности либо вместе.
Пример:
a. блок питания, видеокарта входят в состав системного блока, который можно продать. Также можно продать по отдельности блок питания, видеокарту
b. системный блок который состоит из видеокарты и блока питания тоже может являться частью "компьютера" который можно также продать.
В итоге выделяю класс:
public class Product{
String name;
String type;
double[] ParamList;
Пример:
Product
Мышь
Периферия
Черная
Вопрос как указать что класс Product может состоять из самого себя? Причем в глубину несколько раз: Клавиатура->Системный Блок->Компьютер
-
Постройте связь агрегацию Product (1) <>----(*) Product,
Подойдет?
-
Зависит от того сколько уровней нужно.
(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
-
Зависит от того сколько уровней нужно.
А я думал, можно агрегацией обойтись:) А справа - это диаграмма объектов?
-
А справа - это диаграмма объектов?
Фиг знает. Википедийное творчество. Мысленно можно "яйца" заменить на прямоугольники, будет норм.
-
Кстати, при внимательно разглядывании обоих вариантов ДК становится виден их общий недочёт. На полюсе агрегации рядом с ромбом следует писать [0..1], иначе получаются бесконечные или закольцованные древовидные структуры. При этом закольцованные структуры выглядят сомнительно в плане того, что являются графами с циклами по отношению "целое -> часть", т. е. некоторое "целое" может оказаться собственной "частью" напрямую или опосредовано. Как ни странно, стандарт в этом месте не даёт явного запрета. "Не заморачивайтесь с ромбами" (с) С. Амблер. И всё такое.)