【问题标题】:how to generate UML class diagram from C++如何从 C++ 生成 UML 类图
【发布时间】:2021-03-22 16:53:01
【问题描述】:

我有这 2 个结构和 1 个类,我想将它们转换为 UML 类:

struct cat
{
std::string name;
int id;
};

struct dog
{
std::string name;
std::string owner;
int age;
};

class Pet
{
std::vector<cat> cats;
std::vector<dog> dogs;
//some methods
};

我做了这个: 提前谢谢你

【问题讨论】:

  • Here 你有一个非常相似的问题的答案。
  • 在@sweak 的评论中(类似问题的公认答案始于对我的工具的引用:-))如果您学习 UML,我鼓励您首先手动完成,所以请使用类图提案编辑您的问题并解释您的问题(如果有的话)。
  • 我想手动完成,但看不到 Pet 和其他 2 个结构之间的联系
  • @ben in Pet cats是cat类型的多值属性,所以类型为cat 和多重性 * 或 0..* 如果您愿意,并且因为 std::vector 是什么,您也可以说该属性是 ordered,可能猫永远不会在 cats 中重复,因此您也可以说该属性是 unique(请参阅 omg.org/spec/UML/2.5.1 的 §9.5.4)。狗当然也一样。使用类图编辑您的问题,以检查您是否理解得很好
  • 完成了,所以我的问题是:它是 Pet -> cat 之间的组合还是聚合?

标签: c++ uml


【解决方案1】:

一些备注:

  • cat 和 dog 是 C++ struct => 他们的成员是 public,而不是 private
  • 您错过了指明姓名、身份证、所有者和年龄的类型
  • 您使用了可在两个方向导航的关联,但是 cat 和 dog 不知道对应的 Pet
  • 关联端必须命名为(cats/dogs),同样通过属性显示也没用

所以,还要添加我在您问题的 cmets 中谈到的修饰符:

(我使用 cat/dog 而不是 Cat/Dog 来遵循 C++ 代码,但使用 Cat/Dog 更好)

【讨论】:

  • @ben 你欢迎。同样,当您提出问题时,请在其中包含解决方案的建议,否则人们会认为您没有做出足够的研究努力,并且您的问题可能会被否决并在没有任何答案的情况下关闭。 S.O. 的良好延续
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
相关资源
最近更新 更多