类与类间的关系

【图+文】一文读懂UML图中五大关系以及其相应特点! 文章目录 文章目录文章目录图的五种关系一、依赖关系1.1、说明1.2、依赖关系图和代码的联系1.3、思考二、关联关系2.1、说明2.2、关联关系图和代码的联系2.3、思考三、聚合关系3.1、说明3.2、聚合关系图和代码的联系3.3、思考四、组合关系4.1、说明4.2、组合关系图和代码的联系(三)思考五、实现关系5.1、说明5.2、实现关系图和代码5.3、思考六、泛化关系6.1、说明6.2、泛化关... 阅读详情

博文转载自http://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html


一、继承关系      继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口。 


二、实现关系      实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性。在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。 


三、依赖关系      简单的理解,依赖就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖。表现在代码层面,为类B作为参数被类A在某个method方法中使用。在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示。 


四、关联关系  关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。 


五、聚合关系      聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,聚合关系以空心菱形加实线箭头表示。 


六、组合关系     组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。在UML类图设计中,组合关系以实心菱形加实线箭头表示。 


七、总结     对于继承、实现这两种关系没多少疑问,它们体现的是一种类和类、或者类与接口间的纵向关系。其他的四种关系体现的是类和类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准确定位是很难的。前面也提到,这四种关系都是语义级别的,所以从代码层面并不能完全区分各种关系,但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

的表示关系 一 关联关系 关联关系是对象之的一种引用关系,用于表示一对象另一对象之的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系最常用的一种关系,分为一般关联关系、聚合关系和组合关系。先介绍一般关联。 关联又可以分为单向关联,双向关联,自关联。 1 单向关联 在UML图中单向关联用一个带箭头的实线表示。上图表示每个顾客都有一个地址,这通过让Customer持有一个型为Address的成员变量实现。 2 双向关联 从上图中很容易看出,所谓的双向关联就是双方各自持有对方型的成员 阅读详情

相关推荐

Python面向对象之三:对象空关系

Python面向对象之三:对象空关系 一、对象空 1、相关定义 1、:创建一个就会创建一个的名称空,用来存储中定义的所有变量,这些变量称为的属性 2、的属性:分为静态属性和动态属性,静态属性是直接在中定义的变量,动态属性是中定义的方法 3、对象空:创建(实例化)一个对象就会创建一个对象的名称空,以对象名创建的变量,称为对象的属性。 2、和对象的添加属性及查询顺序 1、的查询顺序 class Person(): animal = '高级动物

qq_35092730的博客 858

设计模式-2.2的6种关系

1.继承关系 2.实现关系 3.依赖关系 4.关联关系 5.聚合关系 6.组合关系 7.图建模步骤 1.继承 extends (泛化)在UML中用带空心三角形的实线表示。指向父。 2.实现implements 实现接口,可多个。虚线空心三角形。 3.依赖 对于A和B,如果出现下面情况,称A依赖B(一个里面方法参数是另一个): 1.A中某个方法的形参是B型;2.A中某个方法的返回型是B型;3.A中某个方法中的局部变量是B型。 虚线箭头,箭头...

m0_50894322的博客 1493

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 MemcacheRedis的区别都有哪些? 单线程的redis为什么这么快 redis的数据型,以及每种数据型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

38万+

UML之图设计

图设计 <<abstract>>:表示SingleCore、MultiCore和CoreFactory均定义为抽象。(纯虚函数的被称为抽象(abstractclass),而只含有虚函数的(class)不能被称为抽象(abstractclass)。)。 指的是一个(称为子、子接口)继承另外的一个(称为父、父接口)的功能,并可以增加它自己的新功能的...

qq_34462436的博客 1863

的几种关系

一、继承关系 继承指的是一个(称为子、子接口)继承另外的一个(称为父、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML图设计中,继承用一条带空心三角箭头的实线表示,从子指向父,或者子接口指向父接口。 二、实现关系 实现指的是一个class实现interface接口(可以是多个)的功能,实现是接口之最常见的关系。在Java中此关系通过关键字implements明确标识,在设计时一

weixin_43149049的博客 1万+

UML中关系及实现

UML中关系及实现 在面向对象的程序设计中,主要有六种关系:继承, 组合, 聚合,关联, 依赖,实现。C属于面向过程语言,本身的语法不支持这些关系的实现,但可通过结构体和指针来实现这些关系。C++/Java/Python等语言原生支持面向对象的程序设计,可通过其语法来完成这些关系。此次结合UMLC++来掌握这些关系的实现运用。 继承(Generalization) 继承是面向对...

LinuxTaoist的博客 1047

图,以及关系

文章目录前言叙述图如何表示关系关联关系1、双向关联2、单项关联3、自关联4、多重关联5、聚合关系6、组合关系依赖关系泛化关系接口实现关系 前言 叙述 图 二者分别是什么? 封装了数据和行为,是具有相同属性,操作,关系的对象集合的总称。 图是描述系统的静态结构,用来描述不同以及他们之关系 图的种? 实体、控制、边界 如何表示 的UML表示 使用包含名...

严文文 Chris 369

关系复用

关系

pangyou3s的博客 569

java关系

Java中关系有: 1、泛化(继承)Generalization 2、依赖 Dependency 3、关联 Assocation 你和你的朋友 (关系平等) 3.1、聚合 Aggregation 你和你买的书 (可以分离而存在) 3.2、组合 Composition 你和你的心脏 (不可以单独存在)

spring123tt的专栏 770

UML六种关系表示

1.封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性,操作,关系的对象集合的总称. 图是使用频率最高的UML图之一. 图用于描述系统中所包含的以及它们之的相互关系,帮助开发人员理解系统,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据. 2.的UML表示方法 在UML图中,使用包含名,属性和方法且带有分隔线的长方形来表示. (1) 属性及方法表示形式: 可见性 名称 : 型 [=缺省值] (2) 方法表示形式为: 可见性 方法..

weixin_42121713的博客 2446

c++关系

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ A就是B的直接基A是C、D的接基......。那么上面这个写法呢,是可行的但是不好,因为每条狗里面都有一个主人,如果一个人养了多条狗,修改这个主人的信息,他的每条狗内主人的信息都需要修改,太麻烦。继承:在定义一个新B时,如果B已有的A 相似(拥有A的全部特性),那么就可以把A当作基B当作A的一个派生(也可叫做子)。

m0_62846938的博客 310

04-关系引用型总结

关系引用型做参数强化 1.关系 1.1一个包含一个 在之前所学习的内容基本都是在描述一个的事情,没有明显的关系,下面我们来研究一种的包含关系 当A的成员变量是B型(引用),那么说A包含B。 如:我们在描述一个汽车的时候,可以说汽车包含了轮胎,价格等部分.这时我们可以创建一个发动机,一个汽车.在汽车的成员变量位置可以创建发动机的引用,此时就可以称为汽车包含发动机...

汉子一枚 625

JAVA面向对象A

面向对象编程: 1、找。 2、的变量和方法。 3、关系。 一、关系 一、继承关系      继承指的是一个(称为子、子接口)继承另外的一个(称为父、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML图设计中,继承用一条带空心三角箭头的实线表示,从

zhaohaidigo的专栏 1410

的四种关系

关系有四种。 1.泛化:就是继承关系 2.依赖:一个作为另一个中某个方法的参数 3.实现:实现接口。例如比大小的都是实现了IComparable 4.关联:一个作为另一个的成员变量。

liudavi的博客 3928

UML 绘图关系

1 继承 子继承父 2 实现 实现实现接口 3 依赖 (偶然、临时、比较弱关联) A 使用了 B,如果 B 产生变化将会影响A 4 关联(长期的、平等的、双向的、强依赖关系) 强依赖关系。 5 聚合关系(关联关系特例) 体现的是整体部分、拥有的关系,即has-a的关系 6 组合关系(关联关系...

rocky_24的博客 772

UML--的五种关系

UML中的关系(Relationships)主要包括5种:关联关系、聚合关系、依赖关系、泛化关系、实现关系1.关联(Association)关系关联关系是一种结构化的关系,指一种对象和另一种对象有联系。它使一个知道另一个的属性和方法。关联关系有双向关联和单向关联。双向关联:两个都知道另一个的公共属性和操作。单向关联:只有一个知道另一个的公共属性和操作。大多数关联应该是单向的,单向关系更...

杨幂等 5030

的6种关系:继承>实现>组合>聚合>关联>依赖

----------------------------------------------------------------------------读书笔记摘自 书名:《设计模式就该这样学:基于经典框架源码和真实业务场景》(谭勇德)-----------------------------------------------------------------------------读书笔记摘自 书名:自己总结。继承>实现>组合>聚合>关联>依赖。Java程序体现的形式为。

张紫娃的博客 3994

从 ABAP 后端到 AEX,Local Integration Engine 下的 Business System 配置全景

本文围绕SAP PI AEX配置中ABAP后端系统AEX的连接问题,梳理了关键概念和技术脉络。重点指出基于ABAP 6.20及更高版本的业务系统内置了本地集成引擎(Local Integration Engine),负责AEX的消息交互。配置要点包括:1)在SM59中创建HTTP型RFC目标连接AEX;2)配置SAP_PROXY_ESR供设计时代理生成;3)通过SXMB_ADM设置业务系统角色为应用系统;4)确保SLD注册和SICF服务激活。文章特别强调运行时代理消息传递设计时代理生成的区分,以及H

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 59

各省份2023-1990初中学校数 初中招生数 初中在校学生数 初中毕业生数 初中专任教师数.xlsx

主要指标:行政区划代码地区长江经济带经度纬度年份地区生产总值(亿元)年末常住人口(万人) ......(本数据文件名上列出的指标)除了本数据文件名上列出的指标外,本数据还包含年末常住人口、地区生产总值(GDP)常用指标,便于相关指标人口、经济总量(GDP)的分析比较数据年度:1990-2023,时跨度34年数据范围:全国31个省级的数据,含自治区、直辖市excel数据文件包原始数据-宽面板(由于多年度指标不同存在缺失值)、线性插值、ARIMA填补三个版本,提供您参考使用。其中,ARIMA填补无缺失值。填补说明: 线性插值。利用数据的线性趋势,对各年份中的缺失部分进行填充,得到线性插值版数据,这也是学者最常用的插值方式。 ARIMA填补。基于ARIMA模型,利用同一地区的时序列数据,对缺失值进行预测填补。上述三个版本的数据在一个excel表中,数据真实可靠,亲测可用。

上一篇: c++设计模式之桥接模式
下一篇: c++设计模式之组合模式
BUS375
博客等级 码龄14年 105粉丝 167原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值