2016-08-01 2 views
1

У меня есть два класса A и B. Если конструктор class A требует указатель на объект class B,Если конструктору класса требуется объект-указатель второго объекта, каково будет отношение UML?

   `A(B* b)`. 

В этом случае, что бы отношения между UML класса А и В?

Редактировать

Более подробно, я следующие ситуации:

У меня есть три класса A, B и C. Здесь C наследуется от B.

class A код конструктора выглядит так: A(B* b).

class C создает экземпляр объекта A в своем конструкторе с кодом: A* a = new A(this).

Деструктор class C уничтожает pointer a с кодом: delete a.

Разве у этого не было бы никаких отношений состава, зависимости и обобщения, как показано на прилагаемом рисунке?

enter image description here

+1

Если 'DependantPart' требует' RequiredPart' то это зависимость отношения. –

+0

_ @ skyaakash_ Обратите внимание, что UML предназначен, прежде всего, для графического представления, поэтому вы должны представить свою схему диаграммы здесь. –

+0

Ваш вопрос неполный, и на него нельзя ответить значимым образом. Обычно, если конструктор берет указатель на объект другого класса, этот параметр конструктора соответствует свойству класса, которое ссылается на этот класс и представляет собой ассоциацию, как это описано в ответ Кристофа. Это структура, на которую вы ссылаетесь в своем вопросе? Ответ @ πάντα ῥεῖ не является удовлетворительным, так как зависимость в UML является очень слабым видом отношений без особого смысла. –

ответ

2

Прямые отношениями является Зависимости (показано пунктирной линией, направленного разъем):

enter image description here

Вы можете украсить, что с более конкретными стереотипами, как, например, «Использование»:

enter image description here

+0

спасибо за ответ и отзыв. – skyaakash

3

Конечно, если указатель B должен быть обеспечен при строительстве, есть без обсуждения зависимость, как и πάντα ῥεῖ указал.

Однако указатели в классах - это способ реализации судоходной связи между классами. Поэтому, если указатель хранится в A (например, как член), это будет больше, чем простая зависимость; было бы связь между классами (простой линией между точками А и В):

  • , если указатель может быть nullptr это необязательная связь с кратностью 0..1, если не было бы обязательным объединение 1
  • если указатель будет добавлен к члену контейнера, к которому могут быть добавлены и другие указатели, это будет одна из многих ассоциаций (кратность 0..n или 1 ..п в зависимости, если nullptr допускаются при строительстве или нет)
  • как указатель позволит вам перемещаться от А до В (но не обязательно от В к А), вы можете показать эту ассоциацию, как судоходная со стрелкой:

    enter image description here

Смежные вопросы