我们讲一个小学生在马路边捡到一分钱交给警察叔叔的故事,来分析类之间的几种关系
单独一个类的类图表示
首先定义一个简单的Person类:
public class Person {
private String name;
private int age =1;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name=name;
}
public void setAge(int age) {
this.age=age;
}
}
它的类图为:
一个单独的类包含三行:第一行类名;第二行,类的成员字段;第三行,类的成员函数
其中使用【-】表示private访问属性;【#】表示protected访问属性;【+】表示public访问属性
项目 | 描述 |
成员字段 | 访问属性 成员变量名 : 成员变量类型 = 成员变量默认值 |
成员函数 | 访问属性 成员函数名(形参列表) : 返回值类型 |
类之间的几种关系
关系 | 表示符号 | 形象化描述 |
泛化(继承)关系 | 实线空心三角形 | Person可以派生出Police、Student、Teacher等对象子类 |
实现关系 | 虚线空心三角形 | 用来描述接口与实现类之间的关系 |
依赖关系 | 虚线箭头 | 一个类使用到了另一个类,学生和警察的关系,这种关系比较弱;学生把钱交给警察他们之间就没关系了 |
关联关系 | 【单向关联】实线箭头 【双向关联】实线 | 家庭与学生的关系,每个学生都有一个家庭,但未必每个家庭都有学生 老师与学生的关系,赵老师有个学生叫小明,小明也有一个姓赵的老师 |
聚合关系 | 实线空心菱形 | 描述整体与部分的关系,部分可以脱离整体而存在;警察身穿制服,制服可以脱离警察而存在 |
组合关系 | 实线实心菱形 | 描述整体与部分的关系,部分必须依赖整体而存在;学生用手捡钱,手不能脱离学生而存在 |
上述关系的UML语言类图如下: