【面向对象】 —— UML类图

一、UML是什么?

UML,即Unified Modeling Language,翻译的意思是统一建模语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的建模工具,独立于任何程序设计语言,包括Java语言。

UML描述和反映是事物的实体、性质、关系、结构、状态和动态变化过程,同时作为建模语言,它也有着严格的语法和语义规范。

UML采用一组图形符号来描述软件模型,这些图形符号具有简单、直观和规范的特点,开发人员学习和掌握起来比较简单。所描述的软件模型,可以直观地理解和阅读,由于具有规范性,所以能够保证模型的准确、一致。

推荐一款名为process on的免费在线作图、实时协作的可视化编辑工具,它包含了UML的图例类型及组成要素,如图所示:

在这里插入图片描述

本文重点说明UML类图,顾名思义它是用来表示类或接口,及类或接口之间关系的一种图例类型。

二、UML类图的成员表示

先举个例子,创建一个Producer类,它有若干个成员属性和成员方法,代码如下:

public class Producer{
	/** 成员属性 */
	public String name;
	protected Integer number;
	private Order order;
	
	/** 构造方法 */
	public static int save(Order order){
		return order
	}
	/** 其他方法 */
	protected String getName(){
		return name;
	}
	protected void setName(String name){
		this.name = name;
	}
}

用UML类图来描述上面的代码:

在这里插入图片描述
使用UML类图中的“接口或类”组件来表示Producer类,说明如下:

  • 组成结构:第一层表示接口或类的名称,接口名称需要用<<>>表示,第二层表示“修饰符 属性变量名称 数据类型”,第三层表示“修饰符 属性方法名称(c参数列表) 返回值类型”;
  • 修饰符:+ 指public、# 指protected、- 指private ;
  • 默认值:若成员变量有默认值,写法为 —— # number:Integer = 1 。
三、UML类图的类之间关系表示

在软件系统中,类并不是孤立存在的,它们之间存在各种关系。根据类之间的耦合度,可以从弱到强进行排列,大致有以下六种,如图所示:

在这里插入图片描述

1、依赖(Dependence)

含义:体现了类之间的弱作用关系,是一种临时性的使用关系,通常用虚线+箭头表示。

举例:依赖关系是类之间最弱的关系,比如,类A的一些方法参数中使用了类B的实例;类A的一些方法逻辑中调用了类B的方法或变量等等。

在这里插入图片描述

2、关联(Association)

含义:体现了类之间的强作用关系,通常用实线或实线+箭头表示,这里的关联关系指的是一般关联关系,后面的聚合和组合也属于关联关系。

举例:关联关系是类之间的引用关系,生活中的常见,比如有:手机和充电线,老师和学生,生产者和消费者等。可以通过成员变量来实现关联关系,比如类A中使用了类B的对象引用,A和B之间就是一种关联关系。

类型:一般关联关系又可以分为单向关联、双向关联、自关联,画图表示。

在这里插入图片描述

3、聚合(Aggregation)

含义:体现了类之间的强作用关系,也属于关联关系的一种,是整体和局部之间的关系,是 has-a 的关系,通常用实线+虚心菱形箭头表示。

举例:聚合关系强调了整体和局部的关系,比如学校和教师,工厂和工人等,注意的是局部可以独立于整体而存在,比如工厂没了但工人还是可以存在的!通过成员属性来实现聚合关系。

在这里插入图片描述

4、组合(Composition)

含义:体现了类之间的强作用关系,也属于关联关系的一种,也是整体和局部之间的关系,是 cxmtains-a 的关系,通常用实线+实心菱形箭头表示。

举例:组合关系是一种耦合度更高的聚合关系,整体对象可以控制部分对象的生命周期,部分对象不能脱离整体对象而存在,比如电脑和CPU,如果CPU没了,电脑就失去了基本的运算能力等同于电脑报废。

在这里插入图片描述

5、泛化(Generalization)

含义:体现了类之间的继承关系,是一种耦合度最高的关系,是 is-a 的关系,通常用实线+空心三角箭头表示。

举例:泛化关系强调了一般与特殊的关系,通过Java的类继承机制实现类之间的泛化关系,比如:手机工厂,与华为手机工厂,小米手机工厂之间的关系。

在这里插入图片描述

6、实现(Realization)

含义:体现了接口和类之间的关系,通常用虚线+空心三角箭头表示。

举例:实现关系,通过Java的实现机制实现的,比如:手机工厂接口,与华为手机工厂实现类,小米手机工厂实现类之间的关系。

在这里插入图片描述

参考

  • 百度百科
  • C语言中文网
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值