设计模式之UML详解

1、什么是UML?

  UML是统一建模语言,是一种可视化的面向对象建模语言,是一种用来对真实世界物理进行建模的标准标记,用图形方式表现典型的面向对象系统的整个结构。它的作用域不局限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。

  UML的概念包括了UML语义(Semantics)和UML表示符(Notation)两个部分。UML语义定义了静态模型和动态模型。结构模型强调系统的对象结构,入对象的类、接口、属性和关系;行为模型关注的是系统对象的行为动作,如对象的方法、交互、协作和状态。UML表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。重要内容由9种图来定义,包括用例图、类图、对象图、状态图、构件图、部署图、协作图、交互序列图、活动图。

  UML的特点是:
   (1)UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效地消除了各种建模语言之间不必要的差异,它实际上是一种通用的建模语言。
   (2)UML建模能力比其他面向对象建模方法更强。它不仅适合于一般系统的开发,而且对并行、分布式系统的建模尤为适宜。
   (3)UML是一种建模语言,而不是一个开发过程。

2、UML图之类图

  怎么画类图?用什么工具?

  使用工具:Visio或者processon在线作图

  在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)以及类之间的关系。

2.1、类(Class)

在面向对象编程中,类是对现实世界中一组具有相同特征的物体的抽象。
在这里插入图片描述

2.2 接口(Interface)

接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。
在这里插入图片描述

2.3、类图中关系(relation)

  在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。 六种箭头表示如下:
在这里插入图片描述

1. 泛化/继承(Generalization)

   【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。

    例如:学生、老师他们都是人,都有姓名年龄。

   【箭头指向】:带三角箭头的实线,箭头指向父类

在这里插入图片描述

2. 实现(Realization)

   【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
    例如:汽车和轮船都是交通工具,而交通工具只是一个可移动工具的抽象概念,船和车实现了具体移动的功能。
   【箭头指向】:带三角箭头的虚线,箭头指向接口。
在这里插入图片描述

3.关联(Association)

   【关联关系】:关联关系是类与类之间最常用的一种关系,表示一类对象与另一类对象之间有联系。

    关联关系有四种:双向关联、单向关联、自关联、多重数关联。

    例如:汽车和司机,一辆汽车对应特定的司机,一个司机也可以开多辆车。

   【代码体现】:成员变量

   【箭头及指向】:带普通箭头的实心线,指向被拥有者

   在UML图中,双向的关联可以有两个箭头或者没有箭头,单向的关联或自关联有一个箭头。
在这里插入图片描述

在多重性关系中,可以直接在关联直线上增加一个数字,表示与之对应的另一个类的对象的个数。

1…1:仅一个

0…*:零个或多个

1…*:一个或多个

0…1:没有或只有一个

m…n:最少m、最多n个 (m<=n)

4.聚合(Aggregation)

   【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。

    如:公交车司机和工衣、工帽是整体与部分的关系,但是可以分开,工衣、工帽可以穿在别的司机身上,公交司机也可以穿别的工衣、工帽。

    聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

   【代码体现】:成员变量

   【箭头及指向】:带空心菱形的实心线,菱形指向整体

在这里插入图片描述

5.组合(Composition)

   【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。

    如:人由头部和身体组成,两者不可分割,共同存在。

    组合关系是关联关系的一种,是比聚合关系还要强的关系,

    它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

   【代码体现】:成员变量

   【箭头及指向】:带实心菱形的实线,菱形指向整体
在这里插入图片描述

6. 依赖(Dependency)

   【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

    如:汽车依赖汽油,如果没有汽油,汽车将无法行驶。

   【代码表现】:局部变量、方法的参数或者对静态方法的调用

   【箭头及指向】:带箭头的虚线,指向被使用者

在这里插入图片描述

2.4:总结

  这六种类关系中,组合、聚合和关联的代码结构一样,可以从关系的强弱来理解,各类关系从强到弱依次是: 继承→实现→组合→聚合→关联→依赖。 如下是完整的一张UML关系图。
在这里插入图片描述

  • 3
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独的偷学者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值