类和类之间的关系

一、类和类之间的关系

UML类图中,常见以下几种关系:

1、泛化(Generalization)

 是一种继承关系,比如动物类和老虎类,老虎继承动物,子类如何特化父类的所有特征和行为

 箭头指向:带三角箭头的实线,箭头指向父类

 我们使用类图如下

代码表示如下

Class Animal {}
Class Tiger extends Animal {}

 

 

 

2、实现(Realization)

 类与接口的关系,类是接口所有特征和行为的实现

 箭头指向:带三角箭头的虚线,箭头指向接口

 我们使用类图如下

  代码表示如下

interface A {}
class B implement A {}  

 

 

 

3、关联(Association)

是一种拥有(has)的关系,一个类的成员变量是另一个类的实例对象,可以双向的也可以是单向

箭头指向:带普通箭头的实心线,指向被拥有者 

类图如下,表示A类关联B类

代码表示如下

class B {}
class A {private B b;
}

 

 

 

4、依赖(Dependency)

是一种使用(use)的关系,即一个类的实现需要另一个类的协助,一般不使用双向的互相依赖.

箭头及指向:带箭头的虚线,指向被使用者

类图如下,这里表示A依赖于B

   但是这里需要注意,依赖一般可以通过形式参数局部变量、静态方法的调用、返回值来表示

  • 形式参数代码如下
    class B {}
    class A {public A() {}public void method(B b) {}
    }
  • 局部变量代码如下,一般指方法里面的局部变量
    class B {}
    class A {public A() {}public void method() {B b = new B();}
    }
  • 静态方法的调用代码如下
    class B {public static void staticMethod() {}
    }
    class A {public A() {}public void method() {B.staticMethod();}
    }
  • 返回值代码如下
    class B {}
    class A {public A() {}public B method() {return null;}
    }

 

5、聚合(Aggregation)

 整体与部分的关系,表示聚合在一起,部分可以离开整体而单独存在,车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法一样,须考察具体的逻辑关系。

箭头及指向:带空心菱形的实心线,菱形指向整体

代码实现和上面的关联是一样的。

 

 

6、组合(Composition)

是整体与部分的关系,但部分不能离开整体而单独存,比如人的肺和人体,肺不能离开人单独存在,有人肺在人体才能存活

箭头指向:带实心菱形的实线,菱形指向整体

组合关系是关联关系的一种,是比聚合关系还要强的关系

类图如下

代码实现和上面的关联是一样的。

 

 

 

二、依赖和关联之间的区别

关联是“HAS”关系,依赖是“USE”关系
A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。
A类依赖B类,指的是B的对象作为A类的方法形式参数存在,称为“use”关系。一般也包括函数参数、局部变量、返回值类型和静态方法调用这四种场景。
生命周期不同
如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。
如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。

 

 

三、关联和组合和聚合之间的关系

组合和聚合都是关联关系的一种,只不够 组合 > 聚合 > 关联

 

 

 

 

四、各种关系的强弱顺序

依赖 < 关联 < 聚合 < 组合 <  实现 = 泛化(继承)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java SpringMvc+hibernate架构中,调用Oracle中的sp,传递数组参数

一、问题 我们调用数据&#xff0c;大都是可以直接获取表中的数据&#xff0c;或者用复杂点的sql语句组成的。但是&#xff0c;有时候&#xff0c;当这样达不到我们要的全部数据的时候&#xff0c;这时&#xff0c;我们就用到了存储过程【sp】&#xff0c;如果sp需要参数是数组…

js模拟blur

<div></div> 某个事件给div加个属性 $(div).attr(wait,true); $(div).click(function() { if(false!$(this).attr(wait)) return false; })转载于:https://www.cnblogs.com/cndxk/p/4788414.html

中国第一朵企业云

本文讲的是中国第一朵企业云&#xff0c;【IT168 资讯】算起来&#xff0c;中国中化集团公司的ERP完全运行在“云”上已经一个多月了&#xff0c;每每提到这个“创举”&#xff0c;信息技术部总经理彭劲松显得有些兴奋&#xff0c;却仍然很谨慎。作为中国第一家企业云的实践者&…

查缺补漏系统学习 EF Core 6 - 实体配置

推荐关注「码侠江湖」加星标&#xff0c;时刻不忘江湖事这是 EF Core 系列的第二篇文章&#xff0c;上一篇文章讲解了 EF Core 的一些基础概念&#xff0c;这一篇文章主要围绕实体属性的配置。点击上方或后方蓝字&#xff0c;阅读 EF Core 系列合集。实体配置配置实体的目的&am…

【ArcGIS风暴】捕捉VS经典捕捉,谁更有用武之地?

几乎所有的GIS软件都具有捕捉功能!今天我们一起来聊一聊ArcGIS软件中的捕捉功能吧。 ArcGIS软件中有两个重要的捕捉工具:捕捉和经典捕捉。 目录 一、捕捉(Snapping) 1、捕捉类型 2、捕捉选项

mysql innodb 索引 延迟更新_Mysql覆盖索引与延迟关联

延迟关联&#xff1a;通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。为什innodb的索引叶子节点存的是主键&#xff0c;而不是像myisam一样存数据的物理地址指针&#xff1f;如果存的是物理地址指针不就不需要二次查找了吗&#xff0c;根据myisam和inn…

Android之在笔记本电脑adb devices识别不了oppo A9手机(设备管理器ADB Interface里面有个黄色感叹号)

1 问题 记本电脑adb devices识别不了oppo A9手机&#xff08;设备管理器ADB Interface里面有个黄色感叹号&#xff09; 图片如下 2 分析 很明显这里是驱动问题&#xff0c;ADB Interface有感叹号提示&#xff0c;所以这里需要解决驱动问题 3 解决办法 1&#xff09;可以尝试…

《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大

学习目标 了解对相似逻辑的简化编写——循环 推荐 1.《备受好评的看得懂的C语言入门教程》 目录 第一篇&#xff1a;《假如编程是魔法之零基础看得懂的Python入门教程 》——&#xff08;一&#xff09;既然你选择了这系列教程那么我就要让你听得懂 第二篇&#xff1a;《假…

Tiny模板语言(VelocityPlus)初步入门

2019独角兽企业重金招聘Python工程师标准>>> 1 关于用户手册 本文主要介绍如何在模板中使用Tiny模板语言&#xff0c;通过查阅本手册&#xff0c;可以对Tiny模板语言 TTL(Tiny Template Language)的用法有一个较全面的认识&#xff0c;并学会如何有效地使用Tiny模板…

第十二周学习进度表

第十二周所花时间&#xff08;包括上课&#xff09;上课&#xff1a;4小时&#xff08;2小时的实验&#xff09;&#xff0c;周一&#xff1a;2小时&#xff0c;周三&#xff1a;3小时&#xff0c;周四&#xff1a;2小时&#xff0c;周五&#xff1a;2小时&#xff0c;周六、日…

『技术群里聊些啥』.NET 如何计算文件 MD5 哈希

前言有网友在交流群中询问&#xff0c;文件 MD5 是全部读取到内存后计算出来的&#xff0c;还是拿到流就可以计算出来了&#xff1a;原理上来说&#xff0c;MD5 需要对全部内容做运算&#xff0c;所以应该是获取所有内容后再计算的。但是&#xff0c;如果全部读取到内存后再计算…

【空间数据库】ArcGIS地理空间数据库GeoDatabase(GDB)概述及建立过程图文详解

地理数据库(Geodatabase)是一种面向对象的数据模型,它对于地理空间特征的表达更接近我们对现实世界的认识。地理数据库在一个公共模型框架下,对GIS处理和表达的空间特征,如适量、栅格、Tin、网络等进行统一描述和存储,是目前最先进的数据管理模式,本文介绍地理数据库的概…

探索发现:平台云——云的新风向

本文讲的是探索发现&#xff1a;平台云——云的新风向&#xff0c;云主机&#xff0c;自2011年火热崛起之后&#xff0c;成为IDC行业替代VPS的完美系列&#xff0c;它的成功在于其相对于VPS的压倒性优势;而平台云凭借其的便捷的操作、实时监控和可视化服务&#xff0c;让站长们…

Android之运行app提示The application could not be installed: INSTALL_FAILED_TEST_ONLY

1、问题 笔记本新安装的Android studio&#xff08;版本3.5.2&#xff09;运行最简单的程序&#xff0c;错误提示如下 The application could not be installed: INSTALL_FAILED_TEST_ONLY 2、分析 高版本的Android studio里面AndroidManifest.xml文件默认如下 android:tes…

windows下配置mysql主从复制_Windows下MySQL主从复制的配置方法

MySQL主从复制允许将来自一个数据库(主数据库)的数据复制到一个或多个数据库(从数据库)。主数据库一般是实时的业务数据写入和更新操作&#xff0c;从数据库常用的读取为主。主从复制过程&#xff1a;1、主服务器上面的任何修改都会通过自己的 I/O tread(I/O 线程)保存在二进制…

【ArcGIS风暴】全国1:100万基础地理数据库获取及ArcGIS图幅完美拼接---以甘肃省为例

在日常工作中,如第三次全国国土调查、不动产登记等,我们总需要对图斑、线状等数据进行数据分幅、图幅拼接等操作。另外,日常学习工作中,无论是制图还是进行分析,都不可避免的需要使用一些基础地理数据,像行政边界、水系、道路、居民地等等,那么,这些基础地理数据有没有…

体验 .NET MAUI RC3 ,马上就要发布RTM

前言.NET MAUI 已经传了很久了&#xff0c; 5月10日&#xff0c;微软终于跟随 VS2022 17.3 预览版 发布了MAUI的候选版本 &#xff0c;今天我们来体验一波。环境运行环境&#xff1a;.Net 6开发环境&#xff1a;VS2022 17.3 &#xff08;必须是预览3&#xff09;使用在安装了V…

WebApi的调用-3.Basic验证

webapi里的特性 /// <summary>/// Basic验证 /// </summary>/// <remarks>/// /// </remarks>public class BasicAuthorizeAttibute : AuthorizeAttribute{public override void OnAuthorization(HttpActionContext actionContext){var authori…

ats 字符集问题

2019独角兽企业重金招聘Python工程师标准>>> 架构很简单&#xff0c;nginx->ats->nginx 后端nginx有做内容替换&#xff0c;字符编码为gb2312&#xff0c;因为ats为utf8编码导致前端内容展示时进行了错误的替换&#xff0c;导致内容错乱。 如 治疗鼻窦炎---&g…

《零基础看得懂的C语言入门教程 》——(十三)socket服务端编写

一、学习目标 了解C语言的socket的概念了解C语言socket的使用方法完成C语言socket服务端 目录 C语言真的很难吗&#xff1f;那是你没看这张图&#xff0c;化整为零轻松学习C语言。 第一篇&#xff1a;&#xff08;一&#xff09;脱离学习误区 第二篇&#xff1a;&#xff0…