UML类图详解

类图

类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。 常用来描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解。

在这里插入图片描述
类名Dog

  • 代表 public 公共,- 代表 private 私有,# 代表 protected
  • 成员变量类型写在前,参数名称写在后
  • 两个类之间若存在关系,可使用箭头进行关联,具体关联规则在下文介绍

类间关系

类与类之间主要有 6 种关系,这些关系在 java 代码中的体现总结下,他们的耦合度依次增强:
(1) 依赖关系:关系对象出现在局部变量或者方法的参数里,或者关系类的静态方法被调用
(2) 关联关系:关系对象出现在实例变量中
(3) 聚合关系:关系对象出现在实例变量中
(4) 组合关系:关系对象出现在实例变量中
(5) 泛化关系: extends
(6) 实现: implements

1、依赖(Dependency)

具体理解:类A使用类B(关系具偶然性、临时性、动态性)
场景举例:
场景一:学生用笔写字,【学生】这个类要实现write()这个方法必须依赖【笔】这个类,但用笔写字这个关系具动态性、偶然性
场景二:出租车司机,每天开着公司分配的车去载客,而每天出租车可能不同。 我只是个司机,公司给我什么车我就开什么车,我使用这个车。
类图表示:
在这里插入图片描述
箭头指向:带箭头的虚线,指向被使用者
Java代码:

class Driver{
   public void drive(Car car){
       car.run();
   }
}
class Car{
   public void run(){}
}

依赖关系的三种表现形式:

class Driver{
   //通过形参方式发生依赖关系
   public void drive1(Car car){
       car.run();
   } 
   //通过局部变量发生依赖关系
   public void drive2(){
       Car car=new Car();
       car.run();
   } 
   //通过静态变量发生依赖关系
   public void drive3(){
       Car.run();
   } 
}
2、关联(Association)

具体理解:两个独立对象的一些特定实例存在固定的对应关系(关系具偶然性,一般是长期性)
单向关联:类 A 当中使用了类 B,其中类 B 是作为类 A 的成员变量。
双向关联: 类 A 当中使用类 B 作为成员变量,同时类 B 中也使用了类 A 作 为成员变量。
场景举例
我是一名老司机,车是我自己的,我拥有这辆车,平时也会用这辆车去载客人。
类图表示:
在这里插入图片描述
箭头指向:带普通箭头的实心线,指向被拥有/使用者

3、聚合(Aggregation)

关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

聚合关系中作为成员变量的类一般使用 set 方法赋值。
如下类图所示,司机通过set车,可以set很多辆车。 在这里插入图片描述
箭头指向:带空心菱形的实心线,菱形指向整体

4、组合 (Composition)

相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且 “部分”单独存在时没有任何意义。
场景举例
车是一辆私家车,是司机财产的一部分,强调的是人财产的部分性,则相同的代码即可表示组合关系。 车是司机必须有的财产,要想成为一个司机必须要现有财产,车要是没了,司机也不想活了。而且司机要是不干司机了,这车也就没了。
在这里插入图片描述
箭头指向:带实心菱形的实线,菱形指向整体

5、泛化(Generalization)

是一种继承关系, 表示一般与特殊的关系, 它指定了子类如何特化父类的所有非 private 修饰的特征和行为,比如说人有男人和女人,男人和女人即有共性的地方也有差异的地方
箭头指向:带三角箭头的实线,箭头指向父类

6、实现(Realization)

实现和我们 java 中的实现是一个意思,是一种类与接口的关系, 表示类是接口所有特征和行为的实现。
箭头指向:带三角箭头的虚线 ,箭头指向接口

实例解析

画出动物(定义为接口)、人、车、轮胎、司机、公路、停车场、汽油、加油站、4s 店等的类图
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值