UML:类关系

一、依赖

1、介绍

A类使用到了B类,那就可以描述为A依赖于B。

如果A类没有B类,则无法通过编译

2、UML

3、代码

  1. /**
  2. * 人
  3. */
  4. public class Person {
  5. /**
  6. * 吃
  7. */
  8. public void eat(Food food){
  9. System.out.printf("人吃"+food.createFood());
  10. }
  11. }
  1. /**
  2. * 食物
  3. */
  4. public class Food {
  5. /**
  6. * 创建食物
  7. */
  8. public String createFood(){
  9. return "食物";
  10. }
  11. }

4、总结

类A依赖于类B:

  • 类B是类A的成员属性
  • 类B是接收的参数类型
  • 类B是方法的返回类型
  • 类A方法中使用到了类B

二、泛化

1、介绍

泛化关系实际上就是继承关系,它是依赖关系的特例

2、UML

3、代码

  1. /**
  2. * 图形
  3. */
  4. public class Graph {
  5. }
  1. /**
  2. * 三角形
  3. */
  4. public class Triangle extends Graph{
  5. }

4、总结

泛化关系实际上就是继承关系

如果B类继承了A类,那么就可以说B和A存在泛化关系

三、实现

1、介绍

实现关系实际上就是B类实现了A接口。实现是依赖关系的特例

2、UML

3、代码

  1. /**
  2. * 用户接口
  3. */
  4. public interface UserService {
  5. /**
  6. * 获取用户
  7. */
  8. void getUser();
  9. }
  1. /**
  2. * 用户接口实现类
  3. */
  4. public class UserServiceImpl implements UserService{
  5. /**
  6. * 获取用户
  7. */
  8. @Override
  9. public void getUser() {
  10. }
  11. }

四、关联

1、介绍

关联关系是类与类之间的联系,关联关系是依赖关系的特例

关联关系具有导航性:即双向关系和单向关系

关系具有多重性:

  • “1”,表示有且仅有一个
  • “0…”,表示0个或多个
  • “0,1”,表示0个或一个
  • “n…m”,表示n到m个都可以
  • “n…”,表示至少n个

2、UML

3、代码

  1. /**
  2. * 人
  3. */
  4. public class Person {
  5. private IdCard idCard;
  6. }
  1. /**
  2. * 身份证
  3. */
  4. public class IdCard {
  5. }
  1. /**
  2. * 身份证
  3. */
  4. public class IdCard {
  5. private Person person;
  6. }

五、聚合

1、介绍

聚合关系表示的是整体和部分的关系,整体与部分可以分开。

2、UML

3、代码

  1. /**
  2. * 电脑
  3. */
  4. public class Computer {
  5. private Keyboard keyboard;
  6. private Mouse mouse;
  7. public void setKeyboard(Keyboard keyboard) {
  8. this.keyboard = keyboard;
  9. }
  10. public void setMouse(Mouse mouse) {
  11. this.mouse = mouse;
  12. }
  13. }
  1. /**
  2. * 键盘
  3. */
  4. public class Keyboard {
  5. }
  1. /**
  2. * 鼠标
  3. */
  4. public class Mouse {
  5. }

六、组合

1、介绍

组合关系:也是整体与部分的关系,但是整体和部分不可以分开

2、UML

3、代码

  1. /**
  2. * 人
  3. */
  4. public class Person {
  5. private Head head;
  6. public void setHead(Head head) {
  7. this.head = head;
  8. }
  9. }
  1. /**
  2. * 头
  3. */
  4. public class Head {
  5. }