首页 > 其他分享 >类和类之间的关系(6种)

类和类之间的关系(6种)

时间:2024-08-02 09:52:05浏览次数:14  
标签:关系 语义 接口 关联 ii 箭头 之间 类和类

类和类之间的关系(6种)

  1. 继承关系(泛化关系 Generalization)

a) 语义:

i. 类和子类的关系,接口和子接口的关系;

ii. 一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能

b) 语法:extends

c) 符号:

i. 一条带空心三角箭头的实线,从子类指向父类,或者子接口指向父接口。

  1. 实现关系(Realization)

a) 语义:

i. 类和接口之间的关系;

ii. 一个类可以实现多个接口,实现所有接口的功能;体现了规范和实现分离的原则

b) 语法: implements

c) 符号

i. 实现用一条带空心三角箭头的虚线表示,从类指向实现的接口

  1. *依赖关系*(Dependency)

a) 语义:一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A

b) 语法:类B作为类A的方法的参数(或者局部变量)存在

c) 符号:

i. 由类A指向类B的带箭头虚线表示

  1. 关联关系(Association)

a) 语义:

i. 比依赖关系强,必然的,长期的,强烈的;

ii. 分为单向关联(只是班级中增加了学生)、双向关联(在学生中也添加班级属性)

iii. 分为一对一(学生和学生证)、一对多(班级和学生)、多对多关联(学生和课程)

iv. 有两个类的关联(客户和订单、订单和商品)、还有一个类和自身关联(领导也是员工)

b) 语法:类B作为成员变量形成存在于类A中

c) 符号:

i. 由类A指向类B的带箭头虚线表示;双向关联可以取消两个箭头

ii.

iii. 在关联的两端可以标注关联双方的角色和多重性标记

  1. 聚合关系(Aggregation)

a) 语义:

i. 关联关系的一种特例

ii. 整体和部分的关系

iii. 整体部分可分离,整体的生命周期和部分的生命周期不同,has-a的关系

iv. 计算机与CPU、公司与员工的关系、班级和学生的关系

b) 语法:同关联关系

c) 符号:空心菱形加实线箭头

  1. 组合关系(Composition)

a) 语义:

i. 关联关系的一种特例

ii. 整体和部分关系、整体部分不可分离、比聚合更强 ,contains-a的关系

iii. 整体的生命周期和部分的生命周期相同

iv. 人和四肢的关系

b) 语法:同关联关系

c) 符号:实心菱形加实线箭头

标签:关系,语义,接口,关联,ii,箭头,之间,类和类
From: https://www.cnblogs.com/N1cholas210162702016/p/18338061

相关文章

  • 因果图模型:理解因果关系的强大工具
    目录1.引言2.基本概念因果关系vs相关性节点和边的定义有向无环图(DAG)的特点3.因果图模型的组成部分节点(Variables)边(Edges)无环性(Acyclicity)组合起来的因果图模型4.因果图模型的建立如何识别变量及其关系例子:吸烟与肺癌模型验证与调整5.因果推理因果推理的定义和......
  • 正则表达式:有没有一种方法可以提取单引号之间的所有子字符串,而不提取撇号之间的子字符
    基本上,我有一个包含英语语句的数据集。有些语句包含前导/尾随标点符号,所以我想清理和标准化它们。标准化的标准是删除所有前导/尾随标点符号,语句的第一个字符大写,并且语句以句点结尾。我有一个函数可以执行此操作并将其应用于数据集中的每一行。如果有帮助的话,这里是一个代码......
  • S2P销讯通·CRM-移动的客户关系精细化管理
    S2P销讯通·CRM是一款专为医药企业设计的移动客户关系管理软件。该软件安装在手机上,集主数据管理、辖区指标管理、客户管理、SFE管理、OTC动销管理、精细化招商管理、市场活动管理以及流向采集清洗与统计分析管理等功能于一体。S2P销讯通·CRM的特色在于其针对医药行业的特点开发......
  • 2021年我因为Tab Session Manager丢失数据,好像是研究过一次leveldb的查看/解码方式 但
    Default\LocalStorage\leveldb.ldb 2023年下半年我因为chatmindai修改域名,又研究过一次,因为时间关系也没有细究 最近,我想查看一下anki的devtool的LocalStorage,即https://ankiweb.net/shared/info/31746032这个插件产生的C:\Users\xxx\AppData\Local\Anki\QtWebEngine\De......
  • 《NET CLR via C#》---第四章(System.Object,类型转换,is和as,命名空间和程序集,运行时的相
    System.ObjectCLR要求每个类型最终都从System.Object类型派生。由于所有类型最终都从System.Object派生,所以每个类型的每个对象都保证了一组最基本的方法。公共方法说明Equals如果两个对象具有相同的值,就返回trueGetHashCode返回对象的值的哈希码。如果某个类型的......
  • 关系妄想型精神分裂的我,还是待在家里开发游戏比较合适,过段时间,我继续给大家我新游戏的
    我有关系妄想型精神分裂症,例如两个事物,只有少量部分相似,我就猜疑这两个事物是一个事物。就是一阵子乱关联,过段时间后,脑子就清醒了,知道是乱关联,明白两个事物之间,根本就没关系。我也在努力治愈自己,乱关联之后,过段时间,我就会反省自己,我告诉自己,是我乱关联,是我的关系妄想型精神分......
  • 部署STONE-CRM中小企业的客户关系管理系统
    Gitee地址https://gitee.com/xpliu2166/stone-crm?skip_mobile=true环境查看#cat/etc/redhat-releaseRockyLinuxrelease9.3(BlueOnyx)#uname-aLinuxRocky9StoneCrm0030805.14.0-362.18.1.el9_3.0.1.x86_64#1SMPPREEMPT_DYNAMICSunFeb1113:49:23UTC20......
  • 有没有办法根据 Pandas GroupBy 的计数在 2 个数据帧之间重复分配值?
    我有两个结构相同但形状和值不同的Pandas数据框:importpandasaspddataframe_1=pd.DataFrame({'customer_id':['id1','id2','id3','id4','id5','id6'],'gender':[......
  • 对象关系映射---ORM
    一、什么是ORM?ORM(ObjectRelationalMapping),即对象关系映射,是一种程序设计技术,用于在面向对象编程语言中实现对象和关系型数据库之间的映射。二、ORM是干什么的?ORM的主要目的是简化数据库操作,使得开发人员可以以面向对象的方式来处理数据库中的数据,而不必直接编写复杂的SQ......
  • 越是熟人之间,越要注意这三个方面
    不管什么时候,不管与谁相处,社交的边界和底线永远都是不变的。对待陌生人的时候,我们总会按照既定的章法和礼节行事,可是在对待熟人的时候,很多人却忘了这些章法和礼节。虽然彼此熟悉了,不需要那么在乎章法和礼节,但是没有一点边界和底线,却是很要不得的,否则早晚伤害彼此之间的关系......