Как представить взаимосвязь между class ResMulti
и class Do_work
при рисовании диаграммы классов для этого демонстрационного фрагмента кода (см. божественная стрела):
#include <thread>
#include <future>
#include <functional>
class Res4ClassA{};
class Res4ClassB{};
Res4ClassA Calculate_A(){return Res4ClassA{};}
Res4ClassB Calculate_B(){return Res4ClassB{};}
class ResMulti
{
public:
void SetRes4ClassA (const Res4ClassA& res_a)
{
res_a_ = res_a;
}
void SetRes4ClassB (const Res4ClassB& res_b)
{
res_b_ = res_b;
}
const Res4ClassA& GetRes4ClassA ()
{
return res_a_;
}
const Res4ClassB& GetRes4ClassB ()
{
return res_b_;
}
private:
Res4ClassA res_a_;
Res4ClassB res_b_;
};
class Do_work
{
public:
void Run(const Res4ClassA* res){}
};
int main()
{
Res4ClassA res_a = Calculate_A();
ResMulti res_multi;
res_multi.SetRes4ClassA(res_a);
Do_work work;
work.Run(&res_multi.GetRes4ClassA());
}
Вопрос: Как представить взаимосвязь между class ResMulti
и class Do_work
при рисовании диаграммы классов для этого демонстрационного фрагмента кода?
Прямой связи между ResMulti
и Do_work
нет:
Do_work
может зависеть от Res4ClassA
, потому что ему может потребоваться знать об этом типе (формально не в C++, потому что указатель используется без разыменования, но, возможно, в дизайне, если мы ожидаем, что операция будет выполнять какие-либо операции с указанный объект);ResMulti
может иметь составную агрегацию с компонентом Res4ClassA
, поскольку он имеет член C++ этого типа и с учетом семантики языка.main()
случается делать клей. Но это не структурная связь: это динамическая связь, возникающая из поведения реализации main().