UML Design Via Visual Studio-Class Diagram

用过几个建模设计工具,小的有staruml,大的有rational rose,EA。最后发现还是Visual Studio建模比较舒服(个人观点,不要争论)。

打算对自己经常用的几个建模图做一个介绍,类图(Class Diagram),时序图(sequence diagram),用例图(use case giagram),组件图(component diagram),分层图(layer diagram)。

本文主要介绍在Visual Studio中设计类图,主要包含一下内容:

  1. VS Modeling Project介绍
  2. 类图创建
  3. 类之间关系说明
  4. 根据类图自动生成代码

VS Modeling Project介绍

想使用Visual Studio进行建模,首先得创建一个Modeling Project。

创建后Project如下:

接下来所有在VS下面的建模都可以在这个Project中进行了。在Project中右键=》Add new item, 就可以创建所有VS支持的模型了。

在上图中选择 UML Class diagram就可以创建类图画布进行类设计了。

类图创建

可以通过左侧的tool box进行类图的创建,上图演示了,接口,类,类的关系:继承,依赖,聚合,组合。Enum就不再演示,package是分包设计类图,把类图设计在package里面,个人觉得用处不大,如果需要分包就新建个类图文件吧。屏幕大小有限,把整个系统的类图按包放到一个画板是不现实的,也不再演示。

类之间关系说明

上面的类图展示了“继承(inheritance),依赖(dependence),聚合(aggregation),组合(composition)”这三类关系,其实还有一个关联(association)(people to country),这是类之间非常弱的关系,仅仅从视觉上告诉人,类之间有关联。继承都了解,下面着重介绍另外三个。

依赖:A类依赖B,是指在A类中有方法的参数、方法体内或者方法的返回值用到了B。上图中Person依赖Mail

聚合:A类和B类聚合,是只A类是B类的一个属性,但是B类可以单独存在,上图中Person和Book,Book是person的属性,但是Book可以单独存在

组合:组合类似于聚合也是整体部分的关系,上图中Person和Hand的关系,hand作为Person的属性存在,区别在于Person和Hand的生命周期一样。

聚合和组合在程序结构上本身是一样的,但是分开来从图上可以搞清楚的理解设计,以及对象的生命周期。

根据类图自动生成代码

在VS下面完全可以根据上面的类图生成代码,画板上右键:

生成代码如下(类的生成目录自己是可以选择的):

可以看到如类图所示Book,Hand,Country都作为Person的属性而存在。

以上就是我对VS下面创建类图的一些总结,这个非常有用,便于team沟通。最终版一键生成代码,生产力也上去了。

另外一些修改属性,比如是否是abstract、public等这些就不再演示了。

最新文章

  1. 自动备份SQL数据库到云存储Storage
  2. HDU 5742 It's All In The Mind (贪心) 2016杭电多校联合第二场
  3. codeforces 630B Moore's Law
  4. 【剑指offer】面试题41:和为 s 的两个数字 VS 和为 s 的连续正数序列
  5. sgu To xor or not to xor
  6. Docker镜像压缩
  7. 使用MethodType函数将方法绑定到类或实例上
  8. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用【补充】
  9. Drying POJ - 3104
  10. Swagger: 一个restful接口文档在线生成+功能测试软件
  11. AutoHotkey 自动化脚本工具实例
  12. shullfe机制详解
  13. Python2.0 与 3.0 的区别
  14. cmd下的一些小技巧
  15. 【代码笔记】Web-JavaScript-JavaScript 条件语句
  16. aspectj 简单的模拟权限检查、事务、日志记录
  17. Unity 琐碎5 : 利用反射设置编辑器参数
  18. Java并发编程之ThreadGroup
  19. grafana配置
  20. docker 怎么下载指定版本的镜像文件

热门文章

  1. HttpLuaModule——翻译(Nginx API for Lua) (转)
  2. JAVA card 应用程序开发(七) JAVA 卡数据(永久数据/)时间数据
  3. TCP/IP 网络精讲:OSI七层模型(第二课)
  4. 原产地政策,jsonp跨域
  5. TabbedPaneDemo
  6. RH253读书笔记(8)-Lab 8 Securing Data
  7. java项目导出为一个可执行文件jar包
  8. 修改Hosts不生效的一个场景-web(转)
  9. Java之旅(三)--- JSTL和EL表情
  10. Xenomai 3 和 PREEMPT_RT 有哪些优势相比,