用过几个建模设计工具,小的有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等这些就不再演示了。

UML Design Via Visual Studio-Class Diagram的更多相关文章

  1. UML Design Via Visual Studio-Sequence Diagram

    本文主要介绍在Visual Studio中设计时序图,内容如下: 何时使用时序图 时序图元素介绍 条件.循环在时序图中的使用 直接通过代码生成时序图 一.何时使用时序图 当要查看单个用例内若干对象的行 ...

  2. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

    Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...

  3. visual studio 2017无建模项目?

    教一跨行同事学C#,我想从基础的讲一下,也就是最基本的面象对象分析与设计(OOAD),我直接打开我最新安装的 visual studio 2017.准备建一个“建模项目”.结果发现死活找不到?打开一个 ...

  4. [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图

    [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图 1.活动图简介 定义:是阐明了业务用例实现的工作流程. 业务工作流程说明了业务为向 ...

  5. [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图

    [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图  1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...

  6. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

  7. 微软移除Visual Studio 2015中的UML

    微软已经在Visual Studio 2015中移除了UML(Unified Modeling Language,统一建模语言),原因是该语言使用率过低.因此微软要优化产品结构,把好钢用在刀刃上. V ...

  8. 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)

    前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...

  9. 如何在Visual Studio中开发自己的代码生成器插件

     Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等,且所写的目标代码适用于微 ...

随机推荐

  1. 【BZOJ4320】ShangHai2006 Homework 分段+并查集

    [BZOJ4320]ShangHai2006 Homework Description   1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在.    2:在当前的人 ...

  2. Zookeeper数据与存储

    一.前言 前面分析了Zookeeper对请求的处理,本篇博文接着分析Zookeeper中如何对底层数据进行存储,数据存储被分为内存数据存储于磁盘数据存储. 二.数据与存储 2.1 内存数据 Zooke ...

  3. iOS9 3D Touch使用

    http://www.cnblogs.com/zhanglinfeng/p/5133939.html

  4. Frobenius Norm

    http://mathworld.wolfram.com/FrobeniusNorm.html

  5. SQLServer将一个表内指定列的所有值插入另一个表

    insert into records_resolve_bak(resolve_save_addr,resolve_time,resolve_status) select  resolve_save_ ...

  6. MySQL时间函数-获取当前时间-时间差

    MySQL中获取当前时间为now(),不同于sqlserver getdate(). SQLServer转MySQL除变化top 1 -> limit 1之后报错: limit [Err] 15 ...

  7. Dubbo,ZooKeeper,Redis,FastDFS,ActiveMQ,Keepalived,Nginx,Hudson

    获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手 ...

  8. Android异步载入全解析之使用AsyncTask

    Android异步载入全解析之使用AsyncTask 概述 既然前面提到了多线程,就不得不提到线程池,通过线程池,不仅能够对并发线程进行管理.更能够提高他们运行的效率.优化整个App.当然我们能够自己 ...

  9. tool class

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  10. setTimeout解决循环值的几种方法

    for(var i=0;i<5;i++){ setTimeout(function(){ console.log(`错误 ${i}`); },0) } for(var i=0;i<5;i+ ...