如何表示此演示代码段的关系?

How to represent the relationship for this demo code snippet?

为该演示代码片段绘制class图时如何表示class ResMulticlass Do_work之间的关系(参见godbolt):

#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图时,如何表示class ResMulticlass Do_work之间的关系?

ResMultiDo_work没有直接关系:

  • Do_work 可能依赖于 Res4ClassA 因为它可能需要了解该类型(在 C++ 中不是正式的,因为指针在使用时从未被取消引用,但如果可能的话在设计中,如果我们希望操作对所引用的对象有任何意义的话);
  • ResMulti 可以具有包含 Res4ClassA 组件的复合聚合,因为它具有该类型的 C++ 成员并且考虑到语言语义。
  • main()恰好做胶水。但这不是结构关系:它是从 main() 实现的行为中出现的动态关系。