博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
团队沟通利器之UML——类图
阅读量:6888 次
发布时间:2019-06-27

本文共 1636 字,大约阅读时间需要 5 分钟。

一:用途

     用于描述系统的静态结构,或许在所有的uml图中,类图是我们最熟悉不过的,在我们没有接触uml的时候,可能都看过

类图,早在vs2005里面“解决方案资源管理器”的下边有一个“查看类图”的小图标,并且还能支持“正向“和”反向“工程。

 

<1>反向工程

  首先我们定义两个类:User和Product

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {        }    }    ///     /// 用户类    ///     public class User    {        public string Name { get; set; }        public int Age { get; set; }        public string Sex { get; set; }    }    ///     /// 产品类    ///     public class Product    {        public string Name { get; set; }        public DateTime CreateTime { get; set; }    }}

然后我们点击”查看类图“,看看给我们生成的类图是咋样的。

<2> 正向工程

      既然是正向工程,那我们就可以在”类设计器“上面随便拖一些元素看看效果,细节的大家可以自己玩一玩。

 

二:基本元素

1:类图,枚举,接口,抽象类,结构,委托

    这几个元素我想学OO的都已经烂熟于心了,也没有什么好解释的。

2:关联关系

    关联关系一般作为类与类之间的一种强依赖关系,这种关系具有稳定和长期性,比如在C#中的代码实现为:将一个类作为

另一个类中的属性,比如这里我新建一个Order类,将User类作为Order类的一个属性。

先看类图:

然后看下是否为我们需要的代码:

3:继承关系

   在OO的三大特性中就有继承,我们都知道继承这么个概念,那么在类图中该如何展现呢?我们发现在User和Product

中都有一个Name属性,根据OO原则我们需要将Name属性单独提出来,然后让其他类继承。

下面我们看下生成代码,是否真如类图描述一样,(双击)任意类图即可,嘿嘿,是不是有点意思。

好,到现在为止,在类图这一块,我们已经掌握了20%,只要多练习练习即可,当然你可能觉得这些代码比较死,是的,

实际开发中,我们常会用CodeSmith来解决这些枯燥无味的代码。

在uml的类图中还有几个关系需要表达一下,只不过实际应用比较少而已,好,下面我们看看”建模项目“里面的UML类图

4:依赖关系

    同样它也是类与类之间的关系,只不过这种关系比较弱,具有临时性和特定环境下的偶然性,可能大家不是很容易理解,

如果用C#解释就一目了然了,在代码中一般是一个类作为另一个类中方法的参数,既然是参数,那么它的生命周期你懂的。

5:聚合关系

    在官方文档中它描述的是一种”has-a“的关系,也就是整体与局部的关系,整体挂了,局部不见得就挂了,比如:你的大功率

电器挂了,不见得里面的电池就挂了,其次我们要注意”空心菱形“是整体端,“箭头”端是局部端。

6:组合关系

    在官方文档中它描述的是一种”contains-a“的关系,同样也是表示整体和局部的关系,整体挂了,局部也挂了,因为他们享有

共同的生命周期,比如:你挂了,你的心脏肯定挂了,同样"实心菱形“是整体端。

 

下面我们看看稍微复杂一点的”画图软件“的类图设计,大家也可以看看自己手头的项目类图,是否符合OO规范。

转载地址:http://chabl.baihongyu.com/

你可能感兴趣的文章
Pulsar本地单机(伪)集群 (裸机安装与docker方式安装) 2.2.0
查看>>
利用H5的css3制作动画
查看>>
Android View 事件分发源码分析
查看>>
vue 2.0 - props
查看>>
RustCon Asia 实录 | Rust 在国内某视频网站的应用
查看>>
Vue遇上Analytics
查看>>
修改max_allowed_packet(允许执行的sql最大长度)
查看>>
node js 处理时间分析
查看>>
判断数据库、表和字段是否存在
查看>>
新手安装postgreSQL后无法连接服务器
查看>>
递归和动态规划
查看>>
java实现简单的控制台管理系统
查看>>
建造模式
查看>>
BZOJ 4025: 二分图
查看>>
openNebula rgister img instance vms error collections
查看>>
error Infos
查看>>
PL/sql配置相关
查看>>
[New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
查看>>
字体随着ProgressBar的加载而滚动
查看>>
Handler 机制再了解
查看>>