类图详解:
1)构成形式:
举一个例子:
![](images/o_image_thumb_1_633937305932995000.png)
2)内部类:
我们使用诸如下边的方式表示内部类,定义在方法区
![](images/o_image_thumb_2_633937305937995000.png)
例如:
![](images/o_image_thumb_3_633937305944870000.png)
3)访问描述符:
对于Java,我们用如下的符号表示访问描述符:
![](images/o_image_thumb_4_633937305949713750.png)
我们在下图详细说明了各个访问描述符的一些权限设定:
4)抽象类和方法:
在类中定义的没有body 的方法称为抽象方法,至少有一个抽象方法的类是抽象类。使用斜体来描述:
5)异常:
使用虚线以及箭头表示:
![](images/o_image_thumb_7.png)
6)便签(包含限制、注释和代码解释):
只用这种dog-eared 的框框:
![](images/o_image_thumb_8.png)
7)泛化:描述一种继承关系。
![](images/o_image_thumb_9fdsg.png)
8)接口:
和类表示差不多,在前边加上<>,
![](images/o_image_thumb_10gsdf.png)
9)实现:
这是描述接口和具体实现的方式,有两种表示方法:
![](images/o_image_thumb_11.png)
或者:
![](images/o_image_thumb_12fsad.png)
10)依赖:
描述源和目的组件之间存在依赖关系,也就是说,一旦target有变,source就必须改变,而不是反之,看下边的例子。
![](images/o_image_thumb_13fdsa.png)
Order类利用DBUtil类的execute方法调用SQL语句,所以Order类依赖于DBUtil(DBUtil为target)
11)类关联:
多重性(Multiplicity ),修饰符暗示着实例之间的关系。一个类的一些实例与另一个类的实例有关,下图是表示多重性的一些符号:
![](images/o_image_thumb_14fsda.png)
下边有三种:
a)Navigability:当A包含有到达B的必须信息,也就是说A知道B,但是B不知道A。如下图:
![](images/o_image_thumb_15fsd.png)
LogAbstraction 里面有LoggerBridge类的实例。
当然这样的也可能是双向的,
b)Composition:类A包含类B
![](images/o_image_thumb_16fas.png)
这个图表达两点意思:
A line item is part of an order.
A line item cannot exist without
an order.
c)Aggregation:聚合,较之b更加轻量一些,
![](images/o_image_thumb_17gfsdag.png)
这个图有两点意思:
A Player is part of a Team.
A Player can be part of more than one Team and hence,
when a Team
is dissolved, the Player still remains.
4.时序图详解:
1)时序图对象:由类型和它前边的冒号表示:
![](images/o_image_thumb_18fdasfds.png)
2)消息:
时序图对象之间的通信,一般的,消息都是映射到类操作上的,若是并不是和类进行互动的话,比如一个用户与ATM取款机的操作,那么直接使用这样的消息就不合适了。消息也可以表示business工作流。
![](images/o_image_thumb_19gfsda.png)
3)自我调用:
时序图对象作用于自身的一种消息,
![](images/o_image_thumb_20fdsad.png)
我们在下边举一个综合的时序图小例子:
![](images/o_image_thumb_21gafda.png)
一个用户在线先填写注册表单,所有提交的信息都先被Controller对象接收,Controller创建对象Account,并且把信息都存入Account对象,Account对象创建并且使用DBManager
将数据保存到数据库中(使用自我调用)
|