首页 > 其他分享 >类与类之间的关系

类与类之间的关系

时间:2024-08-02 16:50:46浏览次数:13  
标签:关系 Monitor 实例 Computer 之间 Mouse monitor

类与类之间的关系

1. 依赖关系(Dependency)

如果在一个A类中用到了另一个B类,那么就说A类依赖B类。类图表示如下:

img

只要B类满足下面条件中的任意一个,就说A类依赖B类:

  1. A类中用到了B类
  2. A类中有B类型的成员变量
  3. B类是A类方法的返回类型
  4. B类是A类方法的参数类型
  5. A类的方法中用到了B类

2. 泛化关系(generalization)

泛化关系可以说是继承关系,是依赖关系的特例。

用类图表示:

在这里插入图片描述

3. 实现关系(Implementation)

B类实现了A接口,就说A接口和B类之间有实现关系,实现关系是依赖关系的特例。

用类图表示:

在这里插入图片描述

4. 关联关系(Association)

关联关系表示的是类与类之间的联系,例如:

在这里插入图片描述

在上面的代码中,我们说Person和IdCard是双向一对一的关系。

  1. 聚合关系(Aggregation)
    聚合关系表示的是整体和部分的关系,整体和部分是可以分开的,它是关联关系的特例。可以将聚合关系比喻为班级这样一个概念,班级由学生组成,学生可以和班级分开,离开了班级依然能够独立存在。

    class Computer {
        //Computer和Monitor、Mouse是可以分离的
        private Monitor monitor;
        private Mouse mouse;
    
        public Computer(Monitor monitor, Mouse mouse) {
            this.monitor = monitor;
            this.mouse = mouse;
        }
    
    }
    
    class Monitor {
        
    
    }
    
    class Mouse {
    
    }
    
    

    上面的例子中,创建一个 Computer 示例需要传入一个 Monitor 实例以及一个 Mouse 实例,至于 Monitor 和 Mouse 实例在什么地方创建,什么时候创建的,和 Computer 没有关系,Computer 和 Monitor、Mouse 没有共同的生命周期。Computer 实例被销毁,Monitor 和 Mouse 实例也有可能没有销毁,因为他们是外界传入的。

    用类图表示:

在这里插入图片描述

6. 组合关系(Composite)

和聚合关系类似,组合关系关系也是用来描述整体和部分的关系,但是,它规定了部分和整体是不能分开的。可以将组合关系比喻成人和大脑、心脏的关系,在人出生的时候,必须有健康的大脑和心脏,人和大脑、心脏是患难与共的,人没了,大脑也没了。

class Computer {
    //Computer这个整体和Monitor、Mouse这两个部分是不能分离的
    private Monitor monitor = new Monitor();
    private Mouse mouse = new Mouse();
	
	public Computer(){
		monitor = new Monitor();
		mouse = new Mouse();
	} 
}

class Monitor {
    

}

class Mouse {

}

在上面的例子中,创建 Computer 实例时,就创建了 Monitor、Mouse 实例,Computer 实例和 Monitor、Mouse 实例就连为一体了,Computer 实例被销毁了,Monitor、Mouse 实例也就没了。

用类图描述:

在这里插入图片描述

7. 总结

实现关系和泛化关系很好理解,对应于java中的实现和继承。而依赖、关联、聚合、组合这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

标签:关系,Monitor,实例,Computer,之间,Mouse,monitor
From: https://www.cnblogs.com/yhy373286277/p/18339110

相关文章

  • 抽象和多态的关系
    接口和多态的关系多态性的基础:接口是实现多态性的关键机制之一。通过接口,不同的类可以实现相同的方法,但具体的实现可以各不相同。方法重载:多态性允许同一个方法名在不同的类中有不同的实现。接口定义了这些方法的统一签名,而实现类提供了具体的实现细节。动态绑定......
  • 数据类型之间的优先级
    数据类型之间的优先级在Java中,数据类型确实有优先级和大小的概念。这主要影响运算时的类型提升规则,以及在进行类型转换时的规则。以下是Java基本数据类型的大小和优先级:大小byte:8位,-128到127short:16位,-32,768到32,767int:32位,-2^31到2^31-1long:64位,-2^63到2^63-......
  • 数据类型之间的强制性转换
    数据类型之间的强制性转换在Java中,数据类型之间的转换主要分为两种:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。自动类型转换通常发生在更宽泛的数据类型向更狭窄的数据类型转换时,而强制类型转换则需要程序员显式地进行。自动类型转换(隐式类型转换)自动......
  • 几个典型运算符之间的区别
    几个典型运算符之间的区别1.i++与++ii++(后缀递增运算符):这被称为后缀递增运算符。它首先返回变量i的当前值,然后将i的值增加1。通常用于循环计数器的递增。++i(前缀递增运算符):这被称为前缀递增运算符。它首先将i的值增加1,然后返回新的值。通常用于确保变量的值......
  • 接口和多态的关系
    接口和多态的关系多态性的基础:接口是实现多态性的关键机制之一。通过接口,不同的类可以实现相同的方法,但具体的实现可以各不相同。方法重载:多态性允许同一个方法名在不同的类中有不同的实现。接口定义了这些方法的统一签名,而实现类提供了具体的实现细节。动态绑......
  • 类与类之间的关系
    类与类之间的六种关系继承关系定义:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类......
  • 类和类之间的关系(6种)
    类和类之间的关系(6种)继承关系(泛化关系Generalization)a)语义:i.类和子类的关系,接口和子接口的关系;ii.一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能b)语法:extendsc)符号:i.一条带空心三角箭头的实线,从子类指向父类,或者子接......
  • 因果图模型:理解因果关系的强大工具
    目录1.引言2.基本概念因果关系vs相关性节点和边的定义有向无环图(DAG)的特点3.因果图模型的组成部分节点(Variables)边(Edges)无环性(Acyclicity)组合起来的因果图模型4.因果图模型的建立如何识别变量及其关系例子:吸烟与肺癌模型验证与调整5.因果推理因果推理的定义和......
  • 正则表达式:有没有一种方法可以提取单引号之间的所有子字符串,而不提取撇号之间的子字符
    基本上,我有一个包含英语语句的数据集。有些语句包含前导/尾随标点符号,所以我想清理和标准化它们。标准化的标准是删除所有前导/尾随标点符号,语句的第一个字符大写,并且语句以句点结尾。我有一个函数可以执行此操作并将其应用于数据集中的每一行。如果有帮助的话,这里是一个代码......
  • S2P销讯通·CRM-移动的客户关系精细化管理
    S2P销讯通·CRM是一款专为医药企业设计的移动客户关系管理软件。该软件安装在手机上,集主数据管理、辖区指标管理、客户管理、SFE管理、OTC动销管理、精细化招商管理、市场活动管理以及流向采集清洗与统计分析管理等功能于一体。S2P销讯通·CRM的特色在于其针对医药行业的特点开发......