请选择 进入手机版 | 继续访问电脑版

平方X

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 573|回复: 0

[2515]uml

[复制链接]

414

主题

709

帖子

3464

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3464
QQ
发表于 2018-1-30 10:27:45 | 显示全部楼层 |阅读模式
[md]
# 类图
[类图](https://zh.wikipedia.org/wiki/%E9%A1%9E%E5%88%A5%E5%9C%96)  
[UML各种图总结-精华](https://www.cnblogs.com/jiangds/p/6596595.html)  
[看懂UML类图和时序图](https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html)
## 成员
```
+         公共
-         私有
#         保护(即对子类可见)
~         包(即对包内其他成员可见)
/         推导(即由其他属性推导得出,不需要直接给定其值)
下划线     静态
```

## 关系
### 泛化(Generalization)
> 即继承的反方向,指的是一个类(称为父类、父接口)具有另外的一个(或一些)类(称为子类、子接口)的共有功能。子类可视为其父类的特例,并可以增加新功能。

如老虎与动物  
空心三角形箭头,实线,指向父类

### 实现(Realization)
> 指的是一个class类实现interface接口(可以是多个)的功能;在Java中此类关系通过关键字implements明确标识。

如实现接口  
空心三角形箭头,虚线,指向接口

### 依赖(Dependency)
> 可以简单的理解为一个类A使用到了另一个类B," ... uses a ...",被依赖的对象只是作为一种工具在使用,而并不持有对它的引用。而这种使用关系是具有偶然性、临时性的、非常弱的,但是B类的变化会影响到A;表现在代码层面,为类B作为参数被类A在某个method(方法)中使用。用带燕尾箭头的虚线表示。表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系。

如局部变量、方法的参数或者对静态方法的调用  
箭头,虚线,指向被使用者

### 关联(Association)
> 代表一个家族的联系。关联可以命名,可以饰以角色名称,有权指针,多重性,可视性,以及其他属性(如相互关联和有方向的(带燕尾箭头的实线表示)关联)。在语义上是两个类之间、或类与接口之间一种强依赖关系,是一种长期的稳定的关系," ... has a ..." 。关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”、“了解”的含义。某个对象会长期的持有另一个对象的引用,关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。 在代码层面上,被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量。目前定义有五种不同类型的关联。双向(Bi-directional)和单向(uni-directional)的关联是最常见的。

成员变量,如老师与学生,学生与课程
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

### 聚合(Aggregate)
> 是表示整体与部分的一类特殊的关联关系,是“弱”的包含(" ... owns a ..." )关系,成分类可以不依靠聚合类而单独存在,可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享(sharable)。例如,池塘与(池塘中的)鸭子。再例如教授与课程就是一种聚合关系。又例如图书馆包含(owns a) 学生和书籍。即使没有图书馆,学生亦可以存在,学生和图书馆之间的关系是聚集。聚集可能不涉及两个以上的类。图形以空心的菱形箭尾与实线来表示。

部分可以离开整体而单独存在,如车和轮胎  
带空心菱形的实线,菱形指向整体

### 组合(Composition)
> 是一类“强”的整体与部分的包含关系(" ... is a part of ...")。成分类必须依靠合成类而存在。整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。合成类别完全拥有成分类别,负责创建、销毁成分类别。例如汽车与化油器,又例如公司与公司部门就是一种组成关系。图形以实心的菱形箭尾与实线表示。

部分不能离开整体而单独存在,如公司和部门  
带实心菱形的实线,菱形指向整体

## 总结一下
泛化和实现比较简单,直接区分  
表示为空心三角加实线或虚线;  

如果有部分与整体的关系,则是聚合或组合。  
如果部分不能单独存在,则是组合,否则为聚合。  
表示为空心或实心菱形。

如果没有部分与整体的关系,则为依赖或关联。  
依赖是一和临时性的关系,如局部变量,方法参数等。  
表标为实线或带箭头。[/md]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|平方X ( 冀ICP备14018164号 )

GMT+8, 2020-10-22 22:47 , Processed in 0.121872 second(s), 21 queries .

技术支持:Powered by Discuz!X3.4  © 2001-2013 Comsenz Inc.

版权所有:Copyright © 2014-2018 平方X www.pingfangx.com All rights reserved.

快速回复 返回顶部 返回列表