使用 rose 将 c++代码转换为 uml 类图
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 类图相关推荐
- java教师薪资系统_“java实验代码即UML类图”之“教师工资发放”
实验二 2. 编写程序,实现计信学院学期末教师的奖金发放.教师有属性:编号.姓名,教学总工作量,奖金:其中奖金的计算方法为: x*30 (当职称为教授时) y= x*25 (当职称为副教授时) x*2 ...
- java uml 类图 加号_UML建模基础 UML类图的组成元素和关系解析
本文和大家重点讨论一下在UML建模中UML类图的java代码表现,主要包括UML类图元素和关系两大部分内容,相信通过本文的介绍你对UML类图的概念一定会与明确的认识. 在UML建模中UML类图的jav ...
- Python自动绘制UML类图、函数调用图(Call Graph)
文章目录 1. 引言 2. 绘制UML类图 2.1 安装graphviz 2.2 安装pyreverse 2.3 绘制UML类图 3. 绘制函数调用图 3.1 安装graphviz 3.2 安装pyc ...
- 详解UML类图(口诀记忆箭头方向)
UML介绍: 什么是UML: UML--Unified modeling languageUML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 ...
- 使用Visio 2000逆向工程将代码转换为UML图表
From: http://www.sudu.cn/info/html/website/20080508/307109.html 摘要:Microsoft Visio 2000 Professional ...
- start uml怎么自动生成代码_通过UML类图,自动生成相关代码
因为去年帮我的师父开发这个小软件,所以去年整了将近一个多月的时候,把这个基本的工程弄好了.姑且就叫做 版本1.0吧. 其实,功能很好理解,就是当你把UML(这里需要注意的是,只能用在VS,所以 ros ...
- 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构
版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...
- 23种设计模式 UML 类图及对应示例代码 (二)
23种设计模式 UML 类图及对应示例代码 (二) 11.DoFactory.GangOfFour.Flyweight.Structural Flyweight:运用共享技术有效的支持大量细粒度的对象 ...
- UML类图五种关系与代码的对应关系
UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系. 因 ...
最新文章
- springboot启动总是启动不起来UnsatisfiedDependencyException异常
- 2018-03-26
- LoadRunner测试下载功能点脚本(方法一)
- python 为什么只执行一次_python只执行一次
- css3 transition的各种ease效果
- Python 爬虫咸鱼版
- MySQL中Cardinality值的介绍
- 阿里云语音识别模型端核心技术选讲
- 长沙理工大学--论演员的自我修养---杨辉三角+卢卡斯定理
- Python爬虫实战(2) 爬取中国土壤数据库部分数据
- 操作系统死锁 四个必要条件
- 计算机组成原理选择题题库
- 红包裂变被动吸粉引流方法,如何通过红包裂变的方式吸粉
- HDU - 6070
- 剁手节致敬!听当年的老人讲述阿帕网(互联网前身)诞生的故事
- 热烈欢迎Ubuntu志愿者!
- Unity——两种进度条的制作
- uni-app animation动画
- Django中app的model相互引用问题
- Centos7安装开启BBR加速
热门文章
- Oracle:使用ASM自动存储管理, 严重推荐
- dataset.xsd的定义(vs2008)
- 计算机科学与技术科研论文,计算机科学与技术学院2007年度科研论文一览表
- 机器学习实践七----异常检测和推荐系统
- 基于PyTorch搭建CNN实现视频动作分类任务代码详解
- 5201. 给植物浇水
- 终端定时任务 开始缓冲_如何开始使用终端以提高生产力
- c++编码风格指南_带回家的编码挑战的基本指南
- Spring入门篇——第6章 Spring AOP的API介绍
- 【MySQL】Java对SQL时间类型的操作(获得当前、昨天、前年。。时间)