• UML模型和类的六大关系


    UML基本介绍

    在这里插入图片描述

    UML图

    1. 用例图
    2. 静态结构图:类图、对象图、包图、组件图、部署图
    3. 动态行为图:交互图(时序图和协作图)、状态图、活动图

    类间关系

    依赖关系

    只要是在类需要用到对方,那么他们之间就存在依赖关系,如果不存在用到的类,无法通过编译

    1. 类的成员变量
    2. 类中方法的返回类型
    3. 类中方法接收的参数类型
    4. 方法中使用到
    class B{
    	private C c;
    	public C getC(){
    		return c;
    	}
    }
    class C{
    }
    class A{
    	private B b;
    	public C getC(){
    		return b.getC();
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这里就表示A依赖B和C,B依赖C

    泛化关系

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

    class B{
    }
    class A extends B{
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里A泛化(继承)了B

    实现关系

    实现关系实际上就是A实现了B中抽象的方法,它是依赖关系的特例

    interface B{}
    class A implements B{}
    
    • 1
    • 2

    这里A实现了B

    关联关系

    关联关系实际上就是类与类之间的联系,他是依赖关系的特例
    关联具有导航性:即双向关系和单向关系
    关系具有多重性,如1表示一个,0…表示0个或多个,“0,1”表示0个或者一个,“n,m”表示n到m个都可以,m…表示至少m个

    class B{
    }
    class A{
    	private B b;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这是单向关联

    class B{
    	private A a;
    }
    class A{
    	private B b;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这是双向关联

    聚合关系

    聚合关系表示的是整体和部分的关系,整体和部分可以分开聚合关系是关联关系的特例,所以它具有方向性和多重性(类中某个属性,可以为null,也可以通过set方法来设置值,则表示聚合)

    class A{
    	private B b;
    	public void setB(B b){
    		this.b = b;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里B聚合于A

    组合关系

    组合关系也是整体和部分的关系,但是整体和部分不可以分开,因为整体是由部分组成的,不可或缺,(类中某个属性,有非空默认值,或者该值在构造器中赋值,表示组合关系)

    class A{
    	private B b =  new B();
    }
    
    • 1
    • 2
    • 3

    这里B组合于A

  • 相关阅读:
    【Linux】文件操作
    基于Python实现汽车销售数据可视化【500010086】
    直接插入排序、希尔排序详解。及性能比较
    MiniDump
    leetcode 2867. 统计树中的合法路径数目【筛质数+贡献法】
    【前端开发基础知识&快速入门】
    docker-compose Install rustdesk
    在线通过dd命令备份分区
    持续部署:提高敏捷加速软件交付(内含教程)
    前端面试官:你能实现js数组原型上的方法吗?
  • 原文地址:https://blog.csdn.net/m0_48468380/article/details/125879780