在Rational中利用C++可视化
副标题#e#
IBM ®Rational®Systems Developer 的 C++ 可视化(C++ Visualization)特机可以或许让您利用 C++ 代码,操作一个雷同 UML 的标记提供与 UML 建模相似的能力。这篇文章展示了如何图形化地暗示(显示) C++ 道理,发明并显示它们在 UML 图中的干系,建设新的 C++ 组件,直接从图中编辑源代码,建设关联和导航特性。
C++ 可视化特性的先容
IBM®Rational®Systems Developer C++ 可视化特性将建模能力带到利用 Eclipse C/C++ Development Toolkit (CDT),一个开放开拓情况的 C++ 项目中来。通过为 C++ 源代码建设 Unified Modeling Language 2.0 (UML 2) 署理组件使机动建模在实况 C++ 项目上变为大概,这样答允您把它们看成 UML 组件来利用。这些署理组件仅仅存在于这个图中,它们在这里被建设,并且不需要优先的,实体 UML 模子组件。
当您建设这样一个组件时,可视化引擎只会查找那些已经被选中的代码组件和与它有直接干系的组件。因此,它不会阻挡完成源代码,除非您明晰划定这个行为。这就是与逆向工程东西的差异之处。 图形暗示(显示)的另一长处是它们老是与源代码同步,这意味着 UML 图,像 Class 可能 Topic 图一样,在变革产生时总能在代码中反应这些变革。
这篇文章描写了 C++ 可视化特性在编程和体例代码的日常勾当中是奈何起到辅佐的浸染的。
开始阶段
关于 CDT 项目索引器
Rational Systems Developer C++ 可视化特性依靠 Eclipse CDT 索引器来获取关于源组件的信息。因此,这篇文章推荐您激活项目标Full Indexing。您要么在建设这个项目标时候来配置这个选项,要么从这个项目标Properties页面来配置。您还可以从 Preferences页面为所有的 C++ 项目将完整索引器配置为默认的索引器(Main menu > Windows > Preferences > C/C++ > Indexer)。
在您的系统上安装 Rational Systems Developer。
在这篇文章中导入 Eclipse CDT 措施库项目下载的样例,导入到您的 Rational Systems Developer 事情区。
在类图上可视化 C++ 元素
Rational Systems Developer 支持这些元素:
C++ 类的可视化(图形化暗示),数据范例布局,列举以及 UML 分类符的范例界说。
Namespace 相当于一个 UML 包
文件和文件夹相当于 UML 工件
您可以在一个 UML 图上可视化地暗示这些元素,要么通过弹出式菜单,要么通过拖放处所式。
利用 C++ 元素弹出式菜单
C++ 可视化特性为 C++ 元素(拜见图1)提供了一个显示上下文菜单选项,它可以让您通过以下几个步调将C++ 元素显示在新的可能现有的类图上:
激活这个弹出式菜单。
选择 Visualize > Add to New Diagram File > Class Diagram。
图 1. 显示弹出式菜单
图 2 显示了来历于显象在一个图中的样本项目标分类 Book。图标中可视化 C++ 元素与 UML 类在利用 C++ 非凡标符和布局上有所区分,它们显示在表格 1中。
图2. 一个 C++ 类显示在 Class 图标中
<
#p#副标题#e#
P>表格 1. C++ 元素的图标和结构型
C/C++ 元素 | 图标 | 结构型 |
---|---|---|
类 | <<class>> | |
布局 | <<Struct >> | |
连系体 | <<Union >> | |
范例界说 | <<typedef>> | |
列举 | <<enum>> | |
定名空间 | <<namespace>> | |
源文件 | <<file>> | |
头文件 | <<header file>> |
利用 UML 图弹出式菜单
另一种显示现存的 C++ 元素的要领是,利用一个 UML 图的弹出式菜单。(请看 图 3)
图 3. 显示现存的弹出式菜单
譬喻,通过利用这个选项,可以显示来历于样本项目标分类 LibraryEntry,凭据下面几个步调:
从 UML 图的弹出式菜单选择Visualize Existing > C/C++ Type。
一个输入选项对话框就会弹出 (图 4),在这里您可以键入这个类最初的几个字符来使它显示。对付这个例子,可以在选择一个范例域中输入 Li。
对话框将列出相匹配的条目。从这个匹配单中选择LibraryEntry,然后点击 OK。
图 4. 输入选择对话框
图 5揭示了添加到这个图中的最新可视化类。留意 Book和 LibraryEntry之间的担任性干系将会自动显象出来。
图 5. 最新的类图
拖放成果指令
#p#分页标题#e#
Rational Systems Developer 通过将它们从 C/C++ 项目欣赏器可能 Project Explorer 拖放到这个图的方法支持带有现有图的 C++ 元素。当显示一个文件时,默认的选项是显示这个文件中所有的元素。您可以通过以下这些步调来变动这个行为:
在 C++ 建模Preferences 页面变动配置,您可以从 Windows > Preferences对它举办会见。
然后从 Preferences树 (请看 图 6)中选择 Modeling > C++ Modeling。
图 6. 从一个 C/C++ 文件中抽取元素的参数配置
欣赏这个图中的源代码
要将一个图中的元素导航到与它相关的源代码,您要么双击这个图的元素要么利用它的弹出式菜单。
双击类、布局、连系体、范例界说,可能它们的成员字段,将会定位到这个元素声明的位置。
双击类成员措施将会导航到指令确定的位置,假如大概的话,可能会导航到这个这个措施声明的位置。
C++ 可视化特性还提供了一个高级导航特性,称作 Auto-Navigation(自动导航)。通过选择这个图东西栏中的 C++ Auto-Navigation图标,可以选择可能打消它的成果 (请看 图 7a)。
图 7a. Diagram 东西栏中的 Auto-Navigation 图标
一旦激活,这个选项将把这个编辑窗口拆分为两个部门,图在上半部门,C++ 编辑器在下半部门,重点突出了在这个图中所选元素的源代码的位置(图 7b)。
图 7b. Auto-Navigation 屏幕截图
显示可能埋没类图中的彼此干系
元素之间的干系可以通过利用 Class 图中的弹出式菜单来显示可能埋没。譬喻,只想查察图上元素之间的连系干系:
右键点击这个图,并从弹出式菜单选择 Filters > Show/Hide Relationship选项。
然后选择埋没除了关联干系以外的所有干系,如图 8所示。
图 8. 显示或埋没干系对话框
显示一个关联可能属性
两个元素之间的关联要么显示为这个类中的一个属性,要么显示为这个相关元素的一个团结。譬喻,在这个图上显示这个类 Book。此刻可以将 authorName域拖出这个类,如图 9 所示。这样将会作为一个连系显示它们之间的干系。还可以通过右键点击这个属性,然后从弹出式菜单中选择 Filter > Show as Association来实现。
图9. 通过拖放来显示关联
要想作为一个属性来显示一个关联,右键点击这个关联然后从弹出式菜单中选择 Filter > Show as Attribute,如图 10所示。
图 10. 显示一个属性操纵
在 Class 图中显示相关的元素
Show Related Elements是 Rational Systems Developer 中一个十分有用的一个特性,它可以使您找到显示在类图上的 C++ 元素的相关 元素。运行这个操纵:
右键点击这个可视化元素
然后从弹出式菜单中选择 Filters > Show Related Elements(图 11)。
图 11. Show Related Elements 菜单
#p#分页标题#e#
这样发生了 Show Related Elements对话框(图 12),它预先划定了可以或许辅佐担任性树可视化进程的查询系统,包罗图等等。通过利用这个自界说查询系统,您可以节制种别,偏向,以及您想要显示的相关元素的深度。
图 12. Show Related Elements 对话框
利用 Modeling Assistant
Show Related Elements 查询系统还可以从建模助手来运行。譬喻,要查询引入的相关元素,将鼠标放在元素上,双击这个弹出的引入箭头的方框。这样将显示一个带有可以运行的查询列表的弹出式菜单(图 13)。在引出箭头上执行沟通的操纵将为引出的干系提供查询。值得留意的是这些查询都仅仅范围在一个程度,这意味着您不能选择查询的深度。
图 13. 通过利用 Modeling Assistant 显示 Related Elements(入向的)
研究 Browse 图的代码
Browse 图都长短编辑的图,这样有助于从单个的核心元素来摸索它们之间的干系。要建设一个欣赏图:
从一个元素的弹出式菜单中选择 Visualize > Explorer in Browse Diagram。从 Project Explorer和 Diagrams视图都可以做到。 图 14 展示了 Book类的 Browse 图。
图 14. Book 类的 Browse 图
要显示干系的范例和深度可以通过欣赏图东西条来节制(拜见图15)。欣赏图的核心元素可以通过双击来变动,双击欣赏图中的元素可以使它酿成新的核心,可能通过利用弹出式菜单,如先前所述,来选择这个新的核心元素。譬喻,实验双击 LibraryEntry。
图 15. 欣赏图东西条
欣赏图可以保持它所显示视图的汗青记录,因此您可以从任何一个视图向前可能向后导航。然而,您不能生存这个欣赏图,可是您可以通过利用图弹出式菜单中的 File菜单把图的副本作为新的图文档可能图片来生存。
动态图例子:Topic 图
ATopic 图是一个基于查询的非编辑性的图,它可以或许辅佐查察元素之间的干系。要建设一个 Topic 图:
从图元素中选择 Visualize > In Topic Diagram可能从 C/C++ 项目欣赏器可能从 Project Explorer中选择 Visualize > Add to New Diagram File > Topic Diagram。譬喻,要为元素建设一个与 Book 和 LibraryEntry相关的 Topic 图。
从欣赏器中选择这两者,右键点击并呈现弹出式菜单,然后选择 Visualize > Add to New Diagram File > Topic Diagram,如图 16 所示。这个操纵将会导致弹出一个对话框,询问建设这个 Topic 图的名称和位置。
对付这个操练,您可以接管默认值。这样会呈现一个 Topic 图领导。在第一个屏幕中,选择这个查询措施来运行。譬喻,选择Related Elements查询措施(图 17),然后点击 Next。
下一个领导页面将会使您自界说要显示干系的深度和种别。对付这个例子,通过点击 Finish接管默认配置。这样就会建设显示在图 18 中的 Topic 图。
图 16. 建设新的 Topic 图
图 17. Topic 图对话框
图 18. Topic 图
Topic 图仅仅会在适当的情况中举办生存:这个元素最初被选定而且查询开始运行。这个查询系统包罗彼此之间的干系,加上您所选择的查询偏向和深度。不像其它的图,每次当一个主题图被打开时,它就会自动运行查询措施,而且更新这个图来反应最新的源代码。假如当图打开后,一种干系已经变动,那么您需要从弹出式菜单中选择 Refresh,可能封锁再打开这个主题 图来使其更新。当您建设一个主题图后,可以通过利用图弹出式菜单的 Customize Query选项对它举办自界说拟定,这样可以显示 Topic Diagram 领导 图 17的第二 页面, 先前所显示的)。
可视化编辑源代码
通过利用选项板,Modeling Assistant,可能弹出式菜单,Rational Systems Developer 东西支持来自 Class 图的 C++ 元素的建设和编辑。
建设新的 C++ 元素
可以通过利用 C/C++(图 19)可能一个类图的弹出式操纵栏(图 20)来建设一个新的 C++ 类可能列举。
图 19. C/C++ 选项板
图 20. 弹出式操纵栏
譬喻,要建设一个新的源自于 LibraryEntry的名称为 ElectronicMediaC++ 的类:
从选项板中选择 C++ Class,然后点击一个类图。
这样将会弹出 CDT New Class wizard(拜见图 21)。
键入这个类的名称 ElectronicMedia。
此刻,可以选择这个基类,点击Add按钮,然后从对话框中选择 LibraryEntry。
点击 Finish。
您还可以在 New Class领导中变动建设的默认文档,确定这个类所属的字段名。
图 21. CDT New Class 领导
接下来,建设一个代表 ElectronicMedia范例的新列举,您将为它定名为 EMediaType:
将鼠标指针移到 Class 图的空缺处。
当这个操纵栏呈现时,选择这个棕色的E字母。(拜见图 20,如先前所显示。)
这将启动 New Enum 领导(图 22)。键入名称 EMediaType。
点击 Finish。
提示:
您还可以在领导中变动建设的默认文档,确定这个类所属的字段名
图 22. The New Enum 领导
添加元素
您可以通过利用这个弹出式菜单(图 23)可能弹出式操纵栏(图 24),为可视化 C++ 类添加新的域和操纵。
图 23. C/C++ 为 C++ 类添加弹出式菜单
图 24. C++ 类的弹出式操纵栏
譬喻,添加一个范例 Publisher 的 protected 域到 ElectronicMedia类:
点击类 ElectronicMedia的弹出式操纵栏中的 Add Field图标(请再次查察图 24)。
在 New C/C++ Field 领导中键入 publisher作为名称,显示在 (图 25)中。
要选择 Publisher范例,点击 Type Browse。
在 Type Selection对话框中,键入字母 P 来列出所有以 P开头的元素。
从列表中选择 Publisher,然后点击 OK。
从 Access Visibility下拉框中,选择 Protected。
点击 Finish。
图 25. 添加 Field 领导
雷同地,添加一个叫做 Publisher getPublisher()的新要领到 ElectronicMedia类:
右键点击这个类 ElectronicMedia,如图中所显示。
从弹出式菜单中选择 Add C/C++ > Method,如先前图 23所显示的那样。
在弹出的(紧接着是 图 26)New C/C++ Method 领导中,键入 getPublisher作为这个措施的名称。
选择 Publisher作为返回范例,点击 Return Type的 Browse按钮。
在弹出的 Type Selection对话框中,键入 P 列出所有以 P开头的元素。
从列表中选择 Publisher并点击 OK按钮。
点击 Finish。
图 26. Add Operation 领导
这些操纵将别离在 Add Field 领导中显示,可能在 Add Operation 领导中显示,如图 25和图 26所示。
添加列举文字
#p#分页标题#e#
您还可以添加列举文字到显示在类图中的 enum元素,可以通过弹出式操纵栏(图27)可能弹出式菜单(图 28)来实现。譬喻,添加一个新的文字 CD到 EMediaType:
将鼠标悬浮在可视化 EMediaType之上。
从弹出式操纵栏中选择 添加列举文字(图 27)
在弹出的 Enumeration Literal领导(图 29)中,键入文字名称 CD。
点击 Finish。
图 27. 添加 Enumeration Literal 弹出式操纵栏
图 28. 添加 Enumeration Literal 弹出式菜单
图 29. 添加 Enumeration Literal 领导
建设 C++ 元素之间的彼此干系
您可以通过利用点击-和-拖放的要领很容易地建设 C++ 元素之间地彼此干系。这种干系地范例可以从 C/C++ Palette(拜见图 19,先前所示)中选择。譬喻,要建设一个从 ElectronicMediaType到 Author的关联干系:
从 C/C++ 选项板中选择 Create Association(图 19,如先前所示)。
点击 ElectronicMediaType,并将这个元素拖放到 Author。
在弹出的领导中确命名称,可见度,以及其它详细的细节 (图 30)。
点击 Finish。
图 30. 建设 Association 领导
#p#分页标题#e#
假如您愿意,您可以通过利用 Modeling Assistant来取代建设它们之间的彼此干系。操作这个东西,您可以建设已经存在在图中元素可能新元素之间的干系,而且现有的元素不在这个图上 。譬喻,要建设一个由 ElectronicMedia类担任而来,叫做 EBook的新类:
将光标悬在 ElectronicMedia之上。
点击引入的箭头,从元素拖拽到一个空图位置。这将发生一个弹出式菜单(图 31)。
选择 Create Inherits (Generalization) from > New Element: C++ Class。这将启动 New Class 领导早期在图 21中有所显示。
键入 EBook作为名称,然后点击 Finish。
接下来,您将看到 Inheritance 领导,这时您可以确定可见度为 Public。
点击 Finish。
图 31. 操作 Modeling Assistant 建设一个与新类相关的担任
图 32. 建设 Inheritance 领导
要在图上建设元素之间的干系,可以操作 Modeling Assistant:
在两个元素之间要么拖拽引入的要么拖拽引出的箭头。
然后选择干系的范例,好比 Author 可能 Publisher,如图 23所示。
图 33. 操作 Modeling Assistant 建设关联
变动成员的可视性
通过利用元素的弹出式菜单,很容易就可以从这个图变动 C++ 类成员的可见度。譬喻,在 ElectronicMedia下,将 publisher域的可视性变动为 private,右键点击这个域并从弹出式菜单中选择 Visibility > Private,如图 34 所示。
图 34. 变动成员的可视性
改名重构
您可以操作元素的弹出式菜单,对显示在图中的一个元素举办重定名:Refactor > Rename。譬喻,将 ElectronicMedia的域范例 从头定名为 mediaType:
右键点击这个域范例并选择 Refactor > Rename,如图 35所示。
键入新的名称,mediaType,它将显示在 Rename Refactor 领导中 (图 36)。
选择Preview 来预览您的变动,然后点击 OK。
图 35. Rename 弹出式菜单
图 36. Rename Refactor 领导
从一个图中直接编辑
另一种对元素重定名的要领是直接从图中举办编辑。您还可以操作这种要领来变动域范例和操纵。譬喻,在 Library类下,变动 entries: int域的名称和范例为 totalEntries:long,凭据以下这些步调:
选择 Entries域。
点击这个图使图文本为可编辑范例 (图 37)。
键入新名称和输入名目为 totalEntries: long,然后按下 Enter键。
重点:
这是确命名称和范例的 UML 要领。不要利用确定这个信息的 C++ 范例。
当您看到 Edit Preview对话框(图 38)时,在谁人对话框屏幕中点击 OK。
图 37. 操纵中的图内嵌编辑
图 38. 编辑 Preview 对话框
在图中直接重定名可以是一个简朴的重定名可能重构。您需要在 C++ 建模 Preferences页面上配置这个选项。
选择 Window > Preferences。
从这个树中(图 39)选择 Modeling > C++ Modeling。
当您选择Simple rename 时,只有暗示位置在这个图中的名称才可以变动。
当您选择 Refactor rename时,所有这个名称的参考城市变动。
图 39. C++ Modeling Preference 页面
提示:
最好是操作 Preview选项来查抄这些变动。这是因为实际的源代码和变量绑定可以变动,这是成立在情况可能构建宏预处理惩罚措施指令的时间界说的基本上的。
收获 UML 元素
Harvest 特性提供了一个从可视化 C++ 元素建设 UML 元素的要领。从图中收获的 C++ 元素可以作为新的 UML 元件粘贴到一个 UML 模子中。收获的时候这些 UML 元素是 C++ 元素的副本,当源代码变动时它们不会变动。譬喻,收获 Book和 ElectronicMedia元素并将它们添加到 UML LibraryModel 模子:
选择图中您想要收获的元素,右键点击,并从弹出式菜单(图 40)中选择 Harvest。
一个对话框方框将会确认这个收获操纵,建设的这个 UML 元素将会安排在剪贴板上。
右键点击 UML 叫做 LibraryModel的模子,然后选择 Pas 图Figure 41)。
这样将会显示 Paste Objects 对话框。选择 Automatic Paste可能,假如您想要看到您正在粘贴的内容,相反就应该选择 Visual Paste。
这个元素将会粘贴到这个模子,如图 42所示。
图 40. Harvest 菜单
图 41. Harvest Paste 菜单
图 42. 从 C++ 元素收获的 UML 元素
#p#分页标题#e#
留意这个元素的所有域和措施都已经拷贝到新的 UML 元素中。参考那些没有被收获的其它元素仍然涉及到实际的 C++ 元素。譬喻,假如您在图大将 Author 域拖出收获元素 之外,它将在源代码中显示与 C++ 元素的关联,如图 43所示。
图 43. Harvest 干系
进程与收益总结
Rational Systems Developer 让您通过利用 C/C++ Development Toolkit (CDT) 得到了 C++ 项目标 UML 建模履历。它让您可以或许在 UML 图中利用 C++ 元素,好比 Class、Topic,以及 Browse 图,因此提供了一个很是有用的特机可以或许可视化地发明和研究这个项目中 C++ 元素之间地干系,与此同时,反应了此进程中任何源代码地改观。