Как рисовать UML-диаграммы, передавая параметры через супер-конструктор - PullRequest
2 голосов
/ 17 апреля 2019

У меня есть суперкласс с именем A и подкласс с именем B, который наследуется от A. Конструктор суперкласса выглядит следующим образом:

A(String name, char displayChar, int hitPoints, Behaviour behaviour) 

{
 this.name = name;
 this.displayChar = displayChar;
 this.hitPoints = hitPoints
 addBehaviour(behaviour);
}

A имеет атрибуты name, displayChar, hitPoints, поведение и имеет метод, который вызывает addBehaviour, который добавляет поведение к объекту.

Подкласс, конструктор B выглядит так:

B(String name) {super(name, char 'b', 10, new WalkBehaviour()); }

Теперь мой вопрос, имеет ли подкласс B атрибут WalkBehaviour?

Как будет выглядеть диаграмма UML для этого сценария? Я знаю, что B наследует от A, и у A есть Поведение, но имеет ли B WalkBehaviour в этом случае? Поскольку B не имеет в своем классе переменной экземпляра типа WalkBehaviour, а только передает WalkBehaviour через конструктор своего суперкласса.

1 Ответ

2 голосов
/ 17 апреля 2019

имеет ли подкласс B атрибут WalkBehaviour?

Нет. Там нет ни одного заявленного. Суперкласс будет что-то делать с этим новым объектом, но, очевидно, он скрыт в тумане своей реализации.

Наследование - это не то, что включает создание нескольких объектов. Ваш B экземпляр - это всего лишь один экземпляр, который имеет атрибуты и операции , как своего суперкласса.

enter image description here

Таким образом, на SD вы увидите только одну линию жизни для B:

enter image description here

Как видите, экземпляр B просто вызовет самозвонок для конструктора суперкласса.

Примечание: как отметил @AxelScheithauer в комментарии, суперкласс вызовет addBehavior, который может (но не должен) отображаться в SD:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...