我是下个季度将使用C++的学生.我非常喜欢使用Eclipse的Galileo版本和Java,我想继续使用Eclipse进行C++开发.
我现在正在试验Eclipse上的C++开发.我正在运行带有CDT 6.02的Eclipse 3.5 SR2.我的操作系统是Windows 7,我安装了MinGW-5.1.6.安装了GDB 6.3版.
我有它编译和单步执行代码.然而,我怀疑我只是在爬行并且尚未"将汽车从一档换出".我花了大约一个星期的时间在网上闲聊,以了解构成什么和"最佳"的C++ Eclipse体验.特别是,我对UML和单元测试的往返感兴趣.
我对网络的探索成了一个考古挖掘.我发现了2003年的方法文章,替代MinGW发行版,插件参考,死链接,插件的更多参考,关于gdb错误的热情讨论,以及对插件的更多参考.
我不再知道什么可能构成最佳的C++ Eclipse环境.社区成员是否愿意权衡他们认为当前使用Eclipse进行C++开发的最佳体验?
我正在寻找一种可以产生漂亮外观的图表软件.它不需要支持UML的所有(甚至更多),不需要具有代码工程功能或任何东西,它只需要产生视觉上有趣的输出.
以下是我认为丑陋/不够好的几个产品样本:具有默认UML模板的Visio(没有找到更好看的模板),Enterprise Architect,Dia,ArgoUML和许多其他"专业"UML工具.
我考虑过几个视觉上引人注目的工具(但发现问题):
我会感激任何好的提示.
我已经切换到一家新公司,我正在开发一个拥有巨大代码库但没有文档的产品.我想快速熟悉产品的设计和代码流程,以便尽快成为高效的会员
慢慢地,稳定地了解代码,但应该是最好和最聪明的方法应该接近代码库,以便他能够快速理解代码并开始交付?
注意:我尝试使用Star UML,并尝试对类图进行逆向工程,以便我可能对产品内部设计有一个大概的想法,但却失败了.
编辑:问题不在于了解产品的作用,而是如何设计内部结构.
使用断点修复错误和调试确实提供了实现此目的的一种方法,但我在寻找是否有更快的方法来实现这一点
在凯斯的话中:
这可能适用于某些代码库,但总的来说,我认为这是一个坏主意.你往往过于专注于细节,而一开始你想要了解大局:类是什么,通信模式是什么,等等.另外,如果你有一个分布式应用程序(客户端 - 服务器,n层)等等,或者需要很长时间才能运行它的代码可能不适合通过调试器运行它
实际上,做一些业余的UML问题!在创建UML图来模拟某些域概念时,您遇到了一个"保存"某个有关另一个概念的信息的域概念,是否更好地保存对该实体的戳记/引用或将整个实体保存在模型本身中?请记住,这与创建一个简单的高级模型有关 - 我确信在实现阶段,事情会略有不同.
例如,下面两个模型中的哪一个实际上是正确的?第一个有一个组合关系,FlightBooking持有整个Flight.在第二个中,FlightBooking只是对Flight的引用.

其次,在创建高级UML图建模领域概念时,您真正想要了解多少细节?例如,在下图中,航班可以将有关原点/目的地的详细信息保存为字符串,或者我可以为这些概念建模单独的类并创建组合关系.哪两个是可取的?

另外,另外一件事,当上面的模型将飞行"保持"原始/目的地作为另一个类而不是字符串时,这两种方式中的哪一种是正确的建模方法?我很困惑什么时候展示assosciation和什么时候显示组成.
UML用例图允许两种看似等效的方式来表明给定的用例可能以几种不同的方式实现,即用例概括而不是用例扩展.我已经看到以下基本示例使用相同频率的任一方法建模,有时在单个源中.


在我看来,扩展是一种比一般化更弱的关系,因为基本情况的专用用例的直接替换必须是概括的,但不一定是扩展.
在我看来,泛化意味着需要多态实现,而扩展意味着要使用一些分支结构.
void makePayment(const PaymentDetails* pd)
{
pd->pay();
}
Run Code Online (Sandbox Code Playgroud)
而不是
void makePayment(const PaymentDetails* pd)
{
switch(pd->type)
{
case EFT:
payViaEFT(pd);
break;
case PAYPAL:
payViaPayPal(pd);
break;
case CREDITCARD:
payViaCreditCard(pd);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
针对此类实现特定问题的建模是否过早的用例阶段?有更合适的UML图表.关于两者中的哪一个使用是否存在硬性规定?如果是,那么它是什么?
我在UML活动图中建模循环.它适用于简单的条件节点(图1),但我正在寻找一种更具表现力的方式来强调循环语义.所以我来到这里和那里展示的"地区"或"可中断地区" ,但我找不到很多令人满意的例子.
我的例子是一个处理给定列表的消息的函数.一旦找到第一个有效消息,循环就会中止,然后处理消息并且函数返回true.否则,它返回false(请不要对意义或废话进行评论,这只是为了样本).
图1:使用一个好的旧活动图条件节点.顺便说一句,遵循箭头的控制流更容易,但没有"循环",只有"如果".
图2:
两个图的功能应该是等效的:


编辑:另一个实现Steph建议的图表:

我想一劳永逸地知道如何编写UML基数,因为我经常不得不对它们进行辩论(因此非常欢迎证明和来源:)
如果我想解释一个Mother可以有几个Child人,但一个Child只有一个Mother,我应该写:
Mother * ---------- 1 Child
Run Code Online (Sandbox Code Playgroud)
要么
Mother 1 ---------- * Child
Run Code Online (Sandbox Code Playgroud)
?
我想逆向工程我的工作区的注册包,所以我去模型浏览器,点击鼠标右键,我应该看到一个带有选项导入的菜单,菜单选项:
但这就是我所看到的:
这是纸莎草纸的版本
我还试图将包从包浏览器中反向设计的包拖放到类图中,但它没有用完..
uml ×10
c++ ×2
eclipse ×2
cardinality ×1
composition ×1
diagramming ×1
eclipse-cdt ×1
java ×1
loops ×1
oop ×1
papyrus ×1
qt ×1
relationship ×1
tool-uml ×1
unit-testing ×1
use-case ×1