C++基础学习之13 - 可视化设计

news/2024/5/18 22:37:55 标签: C++, Doxgen, GraphViz, HTMLHelp, 流程图

        讲到C++的可视化设计,一般都会想到 类图、流程图、交互图、部署图等,没错,UML设计是C++代码设计之前的必选项(当然对于产品经理们更关注UI,他们更愿意使用Axure),但是这些不是我们所关心的,本节我们要谈的是系统开发完成以后的设计图、文档

        这些内容可以通过UML给出吗?当然可以,但我相信大多数人无法做到这一点,因为在开发过程中大部分的设计早已面目全非,想保持同步的更新?(做梦吧!)

        你需要三个工具:

        Doxgen 大名鼎鼎的代码文档工具,下载地址:http://www.stack.nl/~dimitri/doxygen/

        Graphviz 贝尔实验室的一个开源绘图工具,通过dot语言编写绘图脚本,下载地址:http://www.graphviz.org/Download..php

        HTMLHelp 这个是可选项了,生成HTML文档、CHM文档的辅助工具,不作为本节介绍内容。

        我们先来看 GraphicViz 的使用方式。

$ cat 1.dot

digraph G {
    main -> parse -> execute;
    main -> init;
    main -> cleanup;
    execute -> make_string;
    execute -> printf
        init -> make_string;
    main -> printf;
    execute -> compare;
}


        回头再来看 Doxgen,Linux下安装比较简单,我们可以输入命令行:

sudo apt-get install doxygen 
sudo apt-get install graphviz
        当然在 Windows 下安装更方便,只需要双击 下载下来的exe,这个就不用我教了吧,呵呵。

        那接下来让 Doxgen 生成文档图吧,打开传说中的 Doxgen


        选择你需要生成的文档,确定选项,直接进行代码生成。

        Doxgen生成文档的依据就是注释,我们来看一下常用的 注释格式:

/** 头文件定义
* @file ClassName.h
* @brief 常见类型定义
* @author Linolzhang
* @date     2017-1-1
* @version  0.1
* @copyright Linolzhang
*/

/** 代码段定义*/
#define CODE_LEVEL 2
#define NAME "Linolzhang"

const int Count = 20; /**< 单行定义-后缀方式*/

/** 函数定义
* @param[in] a 输入a,整形
* @param[in] b 输入b,整形
* @param[out] c 输出
* @return 返回值, 0正确,1错误
* @ref 参考Types.h
* @note 注意:仅支持<1024的加法
* @see 注意事项 
*/
int add(int a,int b,int& c);

http://www.niftyadmin.cn/n/904868.html

相关文章

postgresql 空间函数 随笔

1. ST_Buffer(geometry, double, [integer])buffer操作一个很有用函数&#xff0c;这个函数的第一个参数是要操作的空间几何数据&#xff0c;第二个参数长度&#xff08;距离&#xff09;&#xff0c;第三个参数为一个整型&#xff0c;这个函数返回一个空间数据类型&#xff0c…

C++基础学习之14 - 再谈指针

前面已经讲过C指针的概念&#xff0c;指针是一个特殊变量&#xff0c;里面保存了一个内存地址。 那么指针本身占了多大内存呢&#xff1f; 在32位平台上是 32位&#xff08;4字节&#xff09;&#xff0c;在64位平台上就是 64 位。 我们通过代码来看一下指针的寻址方式。 int a…

三 k-近邻算法(k-Nearest Neighbors KNN)

转载于:https://www.cnblogs.com/LUOyaXIONG/p/10698121.html

C++基础学习之15 - 消息机制

提到进程间通信&#xff08;IPC&#xff09;&#xff0c;你可能会想到很多种方式&#xff0c;比如&#xff1a; 1&#xff09;消息传递&#xff08;管道、FIFO、消息队列&#xff09;&#xff1b; 2&#xff09;同步&#xff08;互斥量、条件变量、读写锁、文件和写记录锁、信号…

Android - ActivityLifecycleCallbacks

https://blog.csdn.net/u010072711/article/details/77090313 https://www.jianshu.com/p/75a5c24174b2转载于:https://www.cnblogs.com/qlky/p/10703886.html

C++基础学习之16 - 多线程与互斥锁

熟悉Linux的童鞋都对多进程比较熟&#xff0c;Linux下的 fork也有很多教程介绍&#xff0c;但这不是我们本节的重点&#xff0c;我们在这里主要讲的是多线程。 相对于进程来讲&#xff0c;线程 是一个轻量级的概念&#xff0c;一个进程包含多个线程&#xff08;至少1个&#xf…

设计模式之1 - 抽象工厂Abstract Factory

工厂模式整体上是一个系列&#xff0c;建议 大家先看完后面的工厂方法模式&#xff0c;再回过头来看本章。 抽象工厂模式 是一种 创建类模式&#xff0c;和Factory Method类似&#xff0c;我们不去解释这个概念&#xff0c;网上能搜到的解释都很绕&#xff0c;越看越茫然&#…

Spring AOP Capabilities and Goals

Spring AOP是用纯Java实现的。不需要特殊的编译过程。Spring AOP不需要控制类加载器层次结构&#xff0c;因此适用于J2EE Web容器或应用程序服务器。 Spring AOP目前仅支持方法执行连接点&#xff08;建议在Spring bean上执行方法&#xff09;。虽然可以在不破坏核心Spring AOP…