UML类图

1 UML定义的类与类之间关系

在这里插入图片描述

2 具体关系

2.1 依赖 (Dependency)
  1. 类A需要使用B的功能,但A和B一点关系没有(A不持有B的引用),所以代码中调用A的方法时,才传入B

  2. 使用场景:你是一名出租车司机,每天开着公司给你分配的车去载客,而每天出租车可能不同,我只是个司机,公司给我什么车我就开什么车,我使用这个车

  3. 代码

    class Driver {
      //通过形参方式发生依赖关系 
      public void drive1(Car car) {
        car.run();
      }
      //通过局部变量发生依赖关系
      public void drive2() {
        Car car = new Car();
        car.run();
      }
      //通过静态变量发生依赖关系
      public void drive3() {
        Car.run();
      }
    }
    
  4. 类图
    在这里插入图片描述

2.2 关联 (Association)
  1. 表示A和B之间具备很强的关系(A持有B的引用)

  2. 如果关联的两个对象有整体和部分的关系,就叫聚合或组合

  3. 类似我和我的朋友,关系一般是长期性的而不是临时的,因为,不是随便弄两个人,就可以成为朋友

  4. 代码

    class Driver {
      private Car car = new Car();
      public void drive() {
        car.run();
      }
    }
    class Car {
      public void run(){}
    }
    
  5. 类图
    在这里插入图片描述

2.2.1 聚合 (Aggregation)
  1. 是一种特殊的关联,从代码上讲,和关联没有区别,在语义上聚合表示整体与部分的关系,且整体与部分间可以分离,他们可以具有各自的生命周期,因此体现在代码中通常可以通过set来修改聚合的对象
  2. 使用场景
  3. 你与你的电脑(或者其它物品),电脑是属于你的,但是你不是一出生就拥有了电脑,电脑是某个厂商生产出来的,然后你买过来才成为了你的一部分。你死了以后,电脑也可以送给别人继续使用
  4. 类图
    在这里插入图片描述
2.2.2 组合 (Composition)
  1. 是一种特殊的关联,从代码上讲,和关联没有区别,在语义上聚合表示整体与部分的关系,但整体与部分不可分离,因此体现在代码上通常不提供set方法,而是在构造方法构造整体时,就传入了部分
  2. 使用场景:人与人的某个器官,人一出生,器官就在,人死亡,器官也就没了意义
  3. 类图
    在这里插入图片描述
2.3 继承 (Generalization)
  1. 从代码上讲,使用extends关键字关联的两个类或接口
  2. 类图
    在这里插入图片描述
2.4 实现 (Implementation)
  1. 从代码上讲,使用implements关键字关联的类和接口
  2. 类图
    在这里插入图片描述

3 UML画法总结

3.1 表示类与类间关系
  1. 虚线:通常表示关系不够牢固,可能是实现结果或依赖
  2. 实线:表示关系比较牢固,可能是继承、关联、聚合、组合
  3. 空箭头:表示语法上确实有关联,例如继承或实现
  4. 菱形:表示区分聚合和组合,聚合关系没有组合牢固,所以聚合使用空心菱形,组合使用实心菱形
3.2 符号与表示法
  1. 第一行表示类名,第二行表示属性,第三行表示方法
  2. +表示public,-表示private,#表示protected
  3. 属性表示:权限 属性名 : 类型 [ = 缺省值 ]
  4. 方法表示:权限 方法名 ( 参数列表 ) [ 返回值类型 ]
3.3 示例

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值