From: http://www.cppblog.com/prayer/archive/2009/12/24/103954.html

阅读本文章,你需要对 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 视图中。则类的成员、类的关系会在视图中显示出来。

使用 rose 将 c++代码转换为 uml 类图相关推荐

  1. java教师薪资系统_“java实验代码即UML类图”之“教师工资发放”

    实验二 2. 编写程序,实现计信学院学期末教师的奖金发放.教师有属性:编号.姓名,教学总工作量,奖金:其中奖金的计算方法为: x*30 (当职称为教授时) y= x*25 (当职称为副教授时) x*2 ...

  2. java uml 类图 加号_UML建模基础 UML类图的组成元素和关系解析

    本文和大家重点讨论一下在UML建模中UML类图的java代码表现,主要包括UML类图元素和关系两大部分内容,相信通过本文的介绍你对UML类图的概念一定会与明确的认识. 在UML建模中UML类图的jav ...

  3. Python自动绘制UML类图、函数调用图(Call Graph)

    文章目录 1. 引言 2. 绘制UML类图 2.1 安装graphviz 2.2 安装pyreverse 2.3 绘制UML类图 3. 绘制函数调用图 3.1 安装graphviz 3.2 安装pyc ...

  4. 详解UML类图(口诀记忆箭头方向)

    UML介绍: 什么是UML: UML--Unified modeling languageUML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 ...

  5. 使用Visio 2000逆向工程将代码转换为UML图表

    From: http://www.sudu.cn/info/html/website/20080508/307109.html 摘要:Microsoft Visio 2000 Professional ...

  6. start uml怎么自动生成代码_通过UML类图,自动生成相关代码

    因为去年帮我的师父开发这个小软件,所以去年整了将近一个多月的时候,把这个基本的工程弄好了.姑且就叫做 版本1.0吧. 其实,功能很好理解,就是当你把UML(这里需要注意的是,只能用在VS,所以 ros ...

  7. 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构

    版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...

  8. 23种设计模式 UML 类图及对应示例代码 (二)

    23种设计模式 UML 类图及对应示例代码 (二) 11.DoFactory.GangOfFour.Flyweight.Structural Flyweight:运用共享技术有效的支持大量细粒度的对象 ...

  9. UML类图五种关系与代码的对应关系

    UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系. 因 ...

最新文章

  1. springboot启动总是启动不起来UnsatisfiedDependencyException异常
  2. 2018-03-26
  3. LoadRunner测试下载功能点脚本(方法一)
  4. python 为什么只执行一次_python只执行一次
  5. css3 transition的各种ease效果
  6. Python 爬虫咸鱼版
  7. MySQL中Cardinality值的介绍
  8. 阿里云语音识别模型端核心技术选讲
  9. 长沙理工大学--论演员的自我修养---杨辉三角+卢卡斯定理
  10. Python爬虫实战(2) 爬取中国土壤数据库部分数据
  11. 操作系统死锁 四个必要条件
  12. 计算机组成原理选择题题库
  13. 红包裂变被动吸粉引流方法,如何通过红包裂变的方式吸粉
  14. HDU - 6070
  15. 剁手节致敬!听当年的老人讲述阿帕网(互联网前身)诞生的故事
  16. 热烈欢迎Ubuntu志愿者!
  17. Unity——两种进度条的制作
  18. uni-app animation动画
  19. Django中app的model相互引用问题
  20. Centos7安装开启BBR加速

热门文章

  1. Oracle:使用ASM自动存储管理, 严重推荐
  2. dataset.xsd的定义(vs2008)
  3. 计算机科学与技术科研论文,计算机科学与技术学院2007年度科研论文一览表
  4. 机器学习实践七----异常检测和推荐系统
  5. 基于PyTorch搭建CNN实现视频动作分类任务代码详解
  6. 5201. 给植物浇水
  7. 终端定时任务 开始缓冲_如何开始使用终端以提高生产力
  8. c++编码风格指南_带回家的编码挑战的基本指南
  9. Spring入门篇——第6章 Spring AOP的API介绍
  10. 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)