这是我的页面头部

使用 rose 将 c++代码转换为 uml 类图

阅读本文章,你需要对 uml 有简单的了解,懂得以下术语:

类图( class diagram ) 即 c++ 中的 class 。

聚合( Aggregation ) 即我们c++中的引用。表现为 class 头文件中的一个或多个指针成员。

组合( Composition ) 即 c++ 中的成员对象。表现为class 头文件中的一个或多个对象成员。(也可以表现为指针成员,但需要在类中实例化此对象 )。

泛化( Generalization ) 即继承。

双向关联(Bidirectional Associations)  轻量级的 聚合 与 组合。的即c++中的交叉引用。

依赖( Dependency ) 从另一个维度表述 组合 和 聚合。即在class A 中使用 class B的方法或操作 class B 的成员。

 

用例视图( user case view )、逻辑视图( logical view )、组件视图( component view )、部署视图( deployment view )。

要了解相关的知识,可以参考 <UML Distilled > 一书 Chapter 3. Class Diagrams: The Essentials 。(类图:基本知识) 及 Chapter 5. Class Diagrams: Advanced Concepts (类图:高级概念)

(注:此书中译本叫<UML精粹>,不过翻译得甚为艰涩,文言文学得不错的可以考虑。繁体版叫<uml 精华>,赵光正译。熟悉台湾术语的可以考虑。)。

uml精粹详细信息

 UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition
By Martin Fowler
  
Publisher : Addison Wesley
Pub Date : September 15, 2003
ISBN : 0-321-19368-7
Pages : 208

rose 提供了 reserver engineer (逆向设计)的功能,用于将 c++ 类文件转化为类图,并描述类与类之间的关系。 

用 rose 逆向一组 c++ class 的一般步骤是:

1、新建一个空白工程

2、添加一个组件,用于容纳一组类文件。

3、设置 组件属性。指定解析 类文件使用的插件,以及逆向出的类使用的包名称。

4、解析,在 逻辑视图中的指定包( package )中生成相应的类图。

5、将关注的类拖到指定的视图中,观察其结构以及与其它成员的关系。

1、新建一个空白工程。完成后工程信息如下:

图中 untitled 表示这是一个未命名的文档。 四个大文件夹分别表示 用例视图、逻辑视图、组件视图、部署视图。每个大文件夹下面有个 main 结点。这是用来显示该视图内容的“桌布”。双击此结点,便会在主窗口中打开此桌布。结点可以添加、重命名。

2、新建组件,指定其相关属性。

在工程的 compnent view (组件视图)结点上单击,选择 new -> component。便创建了一个新的组件。右键此组件,选择"open specifition"(属性设置)。在弹出的 component (组件属性)窗口的 general 选项卡上,更改其name(名字)属性和 language 属性。name 任意, language 选择 ANSI c++。(默认为 analysys)。点“确定”。这里,我们将其名称命名为 "constol"

3、 指定相关的类文件。

右键 constol 组件,选择“open ANSI c++ specifition ”,在出现的  属性窗口中 file选项卡中,更改 Reverse engineering root package 项,(默认为 c++ reverse Engineered。)名称随意。这里我们改为 constol。指定 project files( 项目文件)。把要解析的 c++源文件都包含进来。点“确定”。

4、回到工程视图。在 component 中的 constol 上,右键,“ANSI c++”-> “reverse engineer”,点“确定”。这时会在 logical view 下生成一个新的文件夹结点,结点名称为 我们在第3步中 Reverse engineering root package 项中添的内容。结点下面包含了由源代码中解析出的类。

5、在 logical view 中,双击 main 结点。便打开了一个 main 逻辑视图。挨个把 logical view -> constol 结点下 的所有类结点拖到 main 视图中。则类的成员、类的关系会在视图中显示出来。

 

 

 

posted @ 2008-12-16 18:31  范晨鹏  阅读(4977)  评论(0编辑  收藏  举报