UML第一个实例
一.概念
UML是Unified Modeling Language的缩写,统一建模语言。UML为面向对象开发系统的产品进行说明、可视化和编制文档的一种标准语言。
二.类间的关系
强弱关系依次为:组合>聚合>关联>依赖
1、依赖:
表现在代码层面,为类B作为***参数***被类A在某个method方法中使用。
一个类A 使用另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。
2、关联:
表现在代码层面,为被关联类B以***类属性***的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的***全局变量***。
体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,这种关系比依赖更强,不存在依赖关系的偶然性,关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的,关联可以是单向、双向的。
3、聚合:
聚合是关联关系的一种特例,体现的是整体与部分、拥有的关系,即***has-a***的关系,此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。
举个例子:代码中有个ArrayList叫“雁群”A,用于无逻辑、无规则地存储大雁,而“雁群”其中的一只大雁叫B,此时:A可以包含B,但B不是A的一部分(个人理解:B只是刚好存放在A中,并无其他逻辑或规则上的联系。或者说缺失了大雁B的雁群依然是雁群,没有影响。即“可以包含”,但“不是一部分”的说法)。
4、组合:
组合也是关联关系的一种特例,体现的是一种***contain-a***的关系,这种关系比聚合更强,也称为强聚合;同样体现整体与部分的关系,此时整体与部分是不可分的,整体的生命周期结束也就意味着部分在生命周期结束。
三.表现形式
1.符号:
- 继承类:空心三角形+实线
- 实现接口:空心三角形+虚线
- 依赖:虚线箭头
- 关联:实线箭头
- 聚合:空心菱形+实线箭头
- 组合:实心菱形+实线箭头
- 关联、聚合、组合都可以有基数。
2.UML类图:
类图是一个矩形框,分为三层,第一层显示类的名称,如果是抽象类,则用斜体显示。第二层是类的特性,通常就是字段和属性。第三层就是类的操作,通常是方法或行为。前面的符号,“+”表示public,“-”表示private,“#”表示protected。
3.UML接口图:
与类图的区别主要是顶端有<< interface >>显示。第一层是接口名称,第二层是接口方法。接口还有另外一种表示方法,俗称“棒棒糖表示法”(见:https://wenku.baidu.com/view/fd2b4be3856a561252d36f12.html#)
四.工具推荐
亿图图示(https://www.edrawsoft.cn/)