说明
先说明一下UML是一种建模的语言, 他可以建很多图, 在我们设计程序 代码的时候, 就会建立类图。
UML从考虑系统的不同角度出发,定义了用况图、类图、对象图、包图、状态图、活动图、序列图、通信图、构件图、部署图等10种图。
博主这边使用到画图工具是starUML, 还可以, 推荐给大家。mac电脑可以使用破解版。博主这边就提供一下 StarUML下载
百度云下载地址: https://pan.baidu.com/s/1H7EZ8FocnoFWVN9Wm7sqeQ (网盘提取密码:rwob)
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
先看看UML图的基本关系表示
- 继承关系(Generalization);
- 实现关系(Realization);
- 依赖关系(Dependency);
- 关联关系(Association);
- 有方向的关联(DirectedAssociation);
- 聚合关系(Aggregation);
- 组合关系(Composition);
表示
继承关系(Realization)
【箭头指向】:带三角箭头的实线,箭头指向父类
Class2
继承Class1
实现关系
【箭头指向】:带三角箭头的虚线,箭头指向接口
表示Class3
实现了interface1
这个接口
依赖关系(Dependency)
【箭头及指向】:带箭头的虚线,指向被使用者
简单来说就是ClassA
依赖于ClassB
, 比方说ClassB
在ClassA
中作为参数, 依赖关系较弱, 但是要注意不要相互依赖
关联关系(Association)
【箭头及指向】:带普通箭头的实心线,指向被拥有者
是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。
有方向的关联(DirectedAssociation)
【箭头及指向】:带普通箭头的实心线,指向被拥有者
Class2被Class1拥有
聚合关系(Aggregation)
【箭头及指向】:带空心菱形的实心线,菱形指向整体
是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
组合关系(Composition)
【箭头及指向】:带实心菱形的实线,菱形指向整体
是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
问题
按如下描述画出一个自治机器人的类图。
这张图的焦点是聚集在那些让机器人在路上行走的机制所对应的类上。你可以发现一个虚类Motor和两个从它派生出来的类: SteeringMotor和MainMotor。这两个类都从它的父亲Motor继承了五个方法:move()、stop()、resetCounter()、statues()、distance()。这两个类又是另一个类Driver的一部分。类PathAgent 和Driver有一个1对1的关系,和CollisionSensor有1对n的关系。
- 问题答案