UML_使用Astah对C++代码反向建模(a.k.a cpp代码映射为类图的教程)
来源:互联网 发布:java用sleep内存泄露 编辑:程序博客网 时间:2024/05/17 15:38
C++ Reverse Engineering - Easiest way to reverse engineer C++ into an Astah Diagram
工作环境
macOS 10.12.6
(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
准备工作
- Astah software
- Astah plug-in download link
- Doxygen download link
插件安装
简单粗暴的方法是把下载好的插件(.jar)拷贝到/Application/Astah/plugin
中然后重启Astah,或者参考官方文档link
使用Doxygen生成xml文件
- 使用默认的
[Wizard]tab
即可 - [Project]里面source code directory选择自己的C++文件所在路径,如果只有一个C++文件最好新建一个文件夹存放,防止其他文件的干扰导致xml生成不成功
- [Mode]里面选择All Entities和Optimize for C++ output
- [Output]中HTML和LaTeX全部叉掉,只选择最下面的xml
- 选择next后的页面点击Run Doxygen,生成xml,注意出现
"*** Doxygen has finished"
才算成功
C++代码生成类图
- Astah中新建一个class diagram,保存。
- 顶栏选择Tools - C++ - import C++
- 拖到画布中,类间的关系也会自动加入(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
cpp测试代码
#include <iostream> using namespace std; class Vehicle { public: Vehicle(int weight = 0) { Vehicle::weight = weight; } void SetWeight(int weight) { cout<<"重新设置重量"<<endl; Vehicle::weight = weight; } virtual void display() = 0; protected: int weight; }; class Car:virtual public Vehicle//汽车 { public: Car(int weight=0,int aird=0):Vehicle(weight) { Car::aird = aird; } void display() { cout<<"我是汽车!"<<endl; } protected: int aird; }; class Ship:virtual public Vehicle//船 { public: Ship(int weight=0,float tonnage=0):Vehicle(weight) { Ship::tonnage = tonnage; } void display() { cout<<"我是船!"<<endl; } protected: float tonnage; }; class AmphibianCar:public Car,public Ship//水陆两用汽车,多重继承的体现 { public: AmphibianCar(int weight,int aird,float tonnage) :Vehicle(weight),Car(weight,aird),Ship(weight,tonnage) //多重继承要注意调用基类构造函数 { } void display() { cout<<"我是水陆两用汽车!"<<endl; } }; int main() { AmphibianCar a(4,200,1.35f);//错误 a.SetWeight(3);//错误 system("pause"); }
cpp测试代码生成效果
(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
visitor tracker
阅读全文
0 0
- UML_使用Astah对C++代码反向建模(a.k.a cpp代码映射为类图的教程)
- 给你5个数a,b,c,d,k。x属于[a,b]y属于[c,d]。 问你有多少对(x,y)的公约数为k
- 解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码
- 轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码
- A*算法C/C++代码
- 使用maven插件反向映射generatorConfig.xml生成代码
- 使用maven插件反向映射generatorConfig.xml生成代码
- 使用maven插件反向映射generatorConfig.xml生成代码
- 使用以下映射将包含A-ZIS的字母的消息编码为数字:'A'
- A*代码
- Maray中对8259A PIC的初始化代码
- Maray中对8259A PIC的初始化代码
- ANDROID中做的全局宏定义脚本,对linux内核、uboot和android框架中的C和CPP代码有效【以展讯的android为例】
- eval(function(p,a,c,k,e,d) javascrip类型代码 解决办法
- eval(function(p,a,c,k,e,d) 加密破解和格式化JS代码最新算法
- 数据仓库的建模A
- A*搜索算法(代码为原创)
- 附录A :C++/C代码审查表
- 读取String数组内的内容
- 关于hadoop的前世与今生
- LuaFramework案例_02
- 登录注册常用JQuery逻辑
- 数据导出到excel中,出现表情包,自身数据能导出,后续数据导致空白丢失,表情过滤。
- UML_使用Astah对C++代码反向建模(a.k.a cpp代码映射为类图的教程)
- 配置mysql 主从同步(mysql版本5.7.18
- Android 实现启动页面冷启动
- springboot访问html文件
- Visual Studio Code创建C#项目
- 图像bayer格式介绍以及bayer插值原理CFA
- 教你开发jQuery插件
- bcache ssd hdd
- SpringAOP的几种配置