UML之类图

本文详细介绍了UML中的类图,包括类图的基本元素、常见关系(泛化、实现、依赖、关联、聚合、组合)及其特点,并强调了不同关系间的耦合度强弱顺序,帮助理解设计模式中的类图表示。
摘要由CSDN通过智能技术生成

前言:因为最近在看设计模式,发现UML类图知识欠缺呀,便有了这篇文章

一、概述

  • 类图(Class Diagram)用来表示不同的实体(人、事物、数据),以及他们彼此之间的关系

  • 描述了系统中对象的类型以及它们彼此之间存在的各种静态关系

  • 面向对象建模中的核心工具

二、类图的元素

1、类

是具有相似结构、行为和关系的一组对象的描述符

  • 类的示意图分为三个部分:类名、属性、方法/函数

  • 类名:类的名称,斜体则该类为抽象类

  • 属性:完整表达式 可见性 属性名称 :类型 [= 默认值]

    可见性有三种类型:

    +: 表示public

    -: 表示private

    #: 表示protected

  • 方法:完整表达式 可见性 方法名称 (入参类型列表) [:出参类型],方法为斜体则为抽象方法

    注意:

    中括号的内容表示可选

2、连接线
  • 常见的连接线
  • 数量对应关系:标注在连接线的开头或结尾(多用于关联、依赖关系,以及组合、聚合关系)

    标识含义
    11个
    *若干个
    0…10或1个
    0…*0或多个(等同于*)
    1…*1或多个

    除了两点能表示Or(或)关系,逗号(,)也能用来表示Or关系

三、常见关系简述

常见的6种关系:泛化(继承)、实现、组合、聚合、关联和依赖

1、泛化(Generalization)
  • 是一种继承关系,表示一般与特殊的关系,子类如何特殊化父类的所有特征和行为
  • 箭头方向:从子类指向父类
  • 在这里插入图片描述
2、实现(Realization)
  • 是一种类与接口的关系,表示类是接口所有特征和行为的实现
  • 箭头方向:从实现类指向接口
  • 在这里插入图片描述
3、依赖(Dependency)
  • 是一种调用的关系,即一个类的实现需要另一个类的协助,

  • 使用Java语言描述:即调用方类B中,某个方法的入参类型、局部变量类型或静态方法调用等的类型为被调用方类A

    public class ClassA{}
    
    public class ClassB{
        public void doSomething(ClassA classA) {} // 类A作为类B方法的入参
    
        public void doSomething() {
            ClassA classA;					// 类A作为类B的局部变量			
        }
        
        public String getSomething() {
            return ClassA.info();			// 	在类B调用类A的静态方法
        }
    }
    
  • 箭头方向:从被依赖者(调用方)指向依赖者(被调用者)

  • 在这里插入图片描述

4、关联(Association)
  • 是一种引用关系,它使一个类知道另一个类的属性和方法,即引用方持有一成员变量的类型为被引用方
  • 关联可分为单向关联、双向关联、自关联
  • 箭头方向:从被引有者指向引有者(双向关联可无箭头)
  • 在这里插入图片描述
5、聚合(Aggregation)
  • 也表示整体与部分的关系,但部分可以离开整体而单独存在。是关联关系中的一种。
  • 箭头方向:从部分指向整体
    - [
6、组合(Composition)
  • 表示整体与部分的关系,部分离开整体后无法单独存在。是聚合关系中的一种。
  • 箭头方向:从部分指向整体
  • 在这里插入图片描述

四、类图关系之间的总结

  • 实体之间耦合度的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
  • 关联和依赖的主要区别:依赖带有偶然性,而关联则是必然
  • 关联、依赖和聚合组合之间的区别:聚合和组合是讨论整体与组成它的部分之间的关系

五、参考资料

​ 1、人人都懂设计模式:从生活中领悟设计模式:Python实现 / 罗伟富.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值