【问题标题】:Converting UML class diagram to C++ code(VS 2012)将 UML 类图转换为 C++ 代码(VS 2012)
【发布时间】:2014-03-07 12:37:41
【问题描述】:

我正在使用VS2012进行我们从头开始的课程项目,我们将使用C++创建这样的东西(我认为聚合部分是相反的):

https://www.dropbox.com/s/w2zh7yltbups6cm/class.png

嗯,我们在纸上写了,为每个类编写代码没有问题,除了我们无法测试,因为每个类都依赖于另一个当时尚未完成的类。 长话短说:每个类都有自己的未经测试的代码,VS 不会检测到任何错误,根据我们以前的经验,我们知道代码是正确的,反正没有语法错误。

当我开始编译时突然出现 500 个错误,其中一些在 "time.h" 中显示,我认为编译器有问题,尝试切换到 C::B 并查看它是否有效但是我需要一个不同的编译器,而且我没有时间下载任何大文件,严重的是,2 天内的截止日期和互联网速度很糟糕。

在这里进行一些研究(并四处搜索)我将其缩小到循环依赖项,我了解到我可以在 VS 中绘制图表并获取代码文件,不幸的是它在 C# 中完成,而我有一个 C++ 代码(它有是 C++)。

如何在 C++ 中实现此图?哪个类应该包含哪些标题? 以后如何避免这种情况?


编辑: 通过删除所有依赖项并禁用预编译的头文件来解决它(我真的不知道我是否必须这样做),然后我将每个 .h 包含在其相应的 .cpp 中,然后我在每个 .h 中包含它需要使用的每个头文件。 所有这些并没有真正解决我的问题,它是声明! 我对每个标题做了 #ifndef myclass , #define myclass 并声明了使用的类,我认为这就是所谓的“前向声明”(如果我错了,请纠正我) 无论如何它终于编译了,我将开始测试。

如果你有任何意见,那么无论如何,你可以添加。

【问题讨论】:

    标签: class uml diagram cyclic-dependency


    【解决方案1】:

    循环“依赖”即可。为什么不?因为它们不是dependencies,而是具有可见导航性的associations。但是你这里有一些问题。

    • 预订应该更好地导航到会员。倒退也可以。但是 Reservation 应该有 Member 实例作为属性。这是更简单的方法。

    • 此外,Rental 是 DVD 和客户之间关联的类表示。并且应该将它们的实例作为属性。再次,返回导航是可能的,但你需要它吗?也许吧。

    另一个问题:

    • Title-DVD 聚合方向正确,但应该是 Composite,因为没有没有 Title 的 DVD。

    测试:您可以进行单元测试,首先通过模拟将类与其他类隔离开来。调试后开始用真实的类替换模拟。之后尝试不进行模拟的单元测试,然后进行正常的自动测试,自动输入/输出/比较。

    至于代码工程,请下载 VP UML Enterprise“测试版”和/或 Enterprise Architect of Sparx,eval 专业版。他们都可以用 C++ 进行代码工程。

    【讨论】:

    • 谢谢,我最终完全按照你的描述做了。我将检查这些程序以备将来使用。原来我们遇到了语言本身的问题,一旦我们解决了这些问题,我们就设法完全测试了我们的代码,我知道这不是最佳实践,但我们的截止日期很近。整个应用程序现在正在运行,但存在一些小错误。
    • @Maverick 当心,它们并不理想。有些概念很难在其中表现出来。但他们是我们拥有的最好的。 Eclipse Papyrus 非常强大且免费,但它还处于 Beta 阶段,离就绪状态还很远。
    猜你喜欢
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2019-06-12
    • 2022-12-03
    • 2023-04-05
    相关资源
    最近更新 更多