用例图(包含、扩展) 类图(泛化(继承关系)、实现、关联《聚合、组合》、依赖)
一、用例图
用例图中元素包括:参与者、用例。
1、 参与者表示与应用程序或系统进行交互的用户或外部系统,用小人表示。
2、用例表示对系统提供的服务进行描述,用椭圆表示。
3、用例图中涉及的关系:包含、扩展、泛化、关联,其中包含用《include》表示,扩展用《extend》表示,包含和扩展都是虚线箭头,包含是指向被分解出来的功能用例,扩展是指向基础用例。如下图所示
二、类图
类图中最基本元素就是类和接口,类图是显示类、接口及它们之间静态结构和关系的图。
1、类图的三层结构:第一层为类名,第二层为属性名,第三层为方法名
2、类图中的关系:关联关系(聚合、组合)、依赖及一般关系,这几种都是静态关系。
2.1 一般关系:泛化(实线三角)、实现(虚线三角)
2.2 关联关系:关联可以是单向也可以是双向的,单向的话需要有一个实线箭头,双向是可以不用箭头的,类与类之间的连接,它使一个类知道另一个类的属性和方法。
相当于下面的java代码:
class Driver{
priavte Car car;//在Driver类中出现了一个类型为Car的实例变量
}
class Car{
}
在每一关联的端点还可以有一个基数,表名一端的类可以有几个实例,n..m中间只有两个点,不多不少。
2.3 聚合和组合
聚合和组合是关联关系中强关联关系,聚合关系中的属性是可以共享的,就相当于一个显示器并不是只对应一个主机,它这个显示器可以作为不同主机的外设。与关联关系一样,聚合也是通过实例变量来实现的 。在聚合中,整体没有了,部分依然可以使用。聚合是一个空心菱形指向整体。
组合和聚合不一样的就是组合的关联性更强,整体与部分是不可拆的,没有了整体,部分也是不能存活的,是不可共享的,照正常来说一般,人死了,它的四肢也就死了。组合是一个实心菱形指向整体。
2.4 依赖
依赖关系总是单向的,依赖关系表示一个依赖于另一个类的定义。
与关联关系不一样,Person类中并没有Car和House类的属性。Car和House的实例以参数的方式存入buy()方法中去。
java代码:
class Person{
public void buy(Car car){
......
}
public void buy(House house){
......
}
}
一般而言,依赖关系体现在java语言中为局部变量、方法的参数,以及对静态方法的调用。换言之,一个类A的某一个局部变量类型是另一类B,那么类A就依赖于类B。如果一个方法的参量是另一类B,那么这个方法所在的类A依赖于类B。或者如果一个类A调用另一个类B的静态方法,那么类A依赖于类B。