📋 前言
- 🖱 博客主页:在下马农的碎碎念
- 🤗 欢迎关注🔎点赞👍收藏⭐️留言📝
- ✍ 本文由在下马农原创,首发于CSDN
- 📆 首发时间:2021/12/25
- 📅 最近更新时间:2021/12/25
- 🤵 此马非凡马,房星本是星。向前敲瘦骨,犹自带铜声。
- 📇 系列文章目录: 快点我呀,我是目录
- 🙏作者水平有限,如发现错误,请留言轰炸哦!万分感谢!
二十多年前,我在不足二十平米的外婆家小院里蹦跶,感觉世界美好,我早已走遍。
——赵挺《外婆》
1类图
UML类图是一种用于展示面向对象系统中类、接口、关系和行为的图形化表示法。下面是画UML类图的一些基本步骤:
- 确定类的名称:确定需要在类图中包括哪些类,以及它们的名称。
- 确定类的属性:确定每个类拥有哪些属性。属性通常包括名称和数据类型,也可以包括其他信息,例如可见性、默认值和约束条件。
- 确定类的方法:确定每个类拥有哪些方法。方法通常包括名称、参数和返回值类型。
- 确定类之间的关系:确定类之间的关系,如继承、实现、关联、聚合和组合。
- 绘制类图:使用UML类图符号绘制类图。类图中的主要符号包括类、接口、属性、方法、继承、实现、关联、聚合和组合。
- 添加文本和注释:在类图中添加文本和注释,以帮助读者理解图形表示法。
- 审查和修改:检查您的类图是否准确反映了系统的设计,并进行必要的修改。
需要注意的是,UML类图只是一种工具,它不能代替好的设计和编程实践。因此,您应该使用UML类图来帮助您理解系统的设计,并在需要时对其进行调整。
二、UML类图中类之间的关系
2.1 继承关系(Inheritance)
- 也叫泛化(Generalization)关系
表示一个类从另一个类继承了属性和方法。
在UML类图中,继承关系用一个空心三角形箭头连接父类和子类,箭头由子类指向父类。
特点:子类继承了父类的所有属性和方法
例如,Student类是Person的子类,可以表示为:
2.2 实现关系(Realization)
表示一个类实现了一个接口。
在UML类图中,实现关系用一个带空心三角形箭头的虚线连接类和接口,箭头由类指向接口。
特点:一个类只实现了另一个类的一个接口,
2.3 关联关系(Association)
表示类之间的关联关系,是一种拥有的关系, 它使得一个类知道另一个类的属性和方法。
在UML类图中,关联关系用一条直线连接两个类,可以用一个箭头来指示方向。箭头指向被拥有者。箭头可以是单向的也可以是双向的,双向的关联可以有两个箭头或者没有箭头。
2.4 聚合关系(Aggregation)
表示一个类包含了另一个类的实例,但是这些实例可以存在于其他的容器中。
通俗讲就是整体与部分的关系,且部分可以离开整体而单独存在。
聚合关系是关联关系的一种,是一种强的关联关系。
在UML类图中,聚合关系用一条带空心菱形的直线连接两个类,菱形指向被聚合的类,即指向整体。
2.5 组合关系(Composition)
表示一个类包含了另一个类的实例,并且这些实例不能存在于其他的容器中。
其实也是一种整体与部分的关系,但部分不能离开整体而单独存在
组合关系也是一种强的关联关系,是比聚合关系还要强的关系
在UML类图中,组合关系用一条带实心菱形的直线连接两个类,菱形指向被组合的类,即指向整体。
2.6 依赖关系(Dependency)
表示一个类使用了另一个类,但是这种使用关系不是强制性的,即一个类的变化不会影响到另一个类。
是一种使用关系,一个类的实现需要使用另一个类
在UML类图中,依赖关系用一条带箭头的虚线连接两个类,箭头指向被依赖的类,即被使用的类
2.7 关系的区别
2.7.1 实现与继承的区别
-
含义不同:实现关系表示一个类实现了一个接口,而继承关系表示一个类从另一个类继承了属性和方法。
-
关系强度不同:实现关系是一种较弱的关系,子类只需要实现接口中定义的方法即可,不需要继承接口中的属性和方法。而继承关系是一种较强的关系,子类继承了父类的全部属性和方法,并可以对其进行修改或扩展。
-
使用场景不同:实现关系通常用于设计接口,以便在系统中实现多态性,降低代码的耦合度,增加系统的灵活性。而继承关系通常用于实现类的继承和复用,以便在系统中减少重复代码,提高代码的可维护性和可复用性。
-
表示形式不同:在UML类图中,实现关系用一个空心三角形箭头的虚线连接实现类和接口,而继承关系用一个空心三角形箭头的实线连接子类和父类。