设计模式-2-UML中的类图及类图之间的关系

关联和依赖的区别 最近研究设计模式,看类图有点发虚!有些关系搞的不是很清楚。所以整理一下:    类与类之间由弱到强关系是:    没关系 > 依赖 > 关联 > 聚合 > 组合。   类和类之间八竿子打不着那就是没关系,这个没啥歧义。       依赖(dependency)     可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但.. 阅读详情

目录

定义

类

接口

类图

类之间的关系

依赖关系

关联关系

关联关系

聚合关系

组合关系

泛化关系

实现关系

个人总结


定义

统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。

设计模式主要用到的就是类图,以及类之间的关系。

类

类(Class)是指具有属性、方法和关系对象的抽象,它封装了数据和行为,是面向对象程序设计(OOP)的基础,具有封装性、继承性和多态性等三大特性。在UML中,类使用包含类名、属性和操作且带有分隔线的矩形来表示。

①类名(Name):是一个字符串,例如,Student。

②属性(Attribute):是指类的特性,即类的成员变量。UML 按以下格式表示:[可见性]属性名:类型[=默认值]

例如:-name:String

“可见性”表示该属性对类外的元素是否可见,包括公有(Public+)、私有(Private-)、受保护(Protected#)和朋友(Friendly~)4 种,在类图中分别用符号+、-、#、~表示。

③操作(Operations):是类的任意一个实例对象都可以使用的行为,是类的成员方法。UML 按以下格式表示:[可见性]名称(参数列表)[:返回类型]

例如:+display():void。

接口

接口(Interface)是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。在UML中,接口使用一个带有名称的小圆圈来进行表示。

类图

类图(ClassDiagram)是用来显示系统中的类、接口、协作以及它们之间的静态结构和关系的一种静态模型。它主要用于描述软件系统的结构化设计,帮助人们简化对软件系统的理解,它是系统分析与设计阶段的重要产物,也是系统编码与测试的重要模型依据。类图中的类可以通过某种编程 语言直接实现。类图在软件系统开发的整个生命周期都是有效的,它是面向对象系统的建模中最常见的图。

类之间的关系

根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

依赖关系

依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。在UML类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类

关联关系

关联(Association)关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。

关联关系

先说说一般关联关系,一般关联可以是双向的,也可以是单向的。在UML类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。

聚合关系

聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,是has-a的关系。

聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。

在UML类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。

组合关系

组合(Composition)关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 cxmtains-a 关系。

在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。

在UML类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。

泛化关系

泛化(Generalization)关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是is-a的关系。

在UML类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类,在代码实现时,使用面向对象的继承机制来实现泛化关系。

实现关系

实现(Realization)关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。

在UML类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。

个人总结

依赖关系

(通俗来讲,就是A调用B的方法就是这种关系)

带箭头的虚线来表示,箭头从使用类指向被依赖的类

关联关系

对象之间的一种引用关系:将一个类的对象作为另一个类的成员变量来实现关联关系(通俗来讲,就是A持有B类型的成员变量,这里从方法调用,过渡到成员变量)

双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类

聚合关系

对象之间的一种引用关系:成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在

(通俗来讲,就是A、B组合成C,这里A和B都是可以独立存在的,这里从方法调用、成员变量,过渡到组合成新类型)

带空心菱形的实线来表示,菱形指向整体

组合关系

整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在(通俗来讲,就是A、B组合成C,但这里C直接控制A和B的整个生命周期,这里从方法调用、成员变量、组合,过渡到直接插手A和B的内部生命周期)

带实心菱形的实线来表示,菱形指向整体

泛化关系

父类与子类之间的关系(从直接插手A和B的内部生命周期,更上一层楼,到了继承)

带空心三角箭头的实线来表示,箭头从子类指向父类

实现关系

接口与实现类之间的关系(从继承更上一层楼,到了接口与实现类)

带空心三角箭头的虚线来表示,箭头从实现类指向接口

 

依赖关系-箭头的虚线

关联关系-箭头的实线

 

聚合关系-空心菱形的实线

组合关系-实心菱形的实线

 

泛化关系-空心三角箭头的实线

实现关系-空心三角箭头的虚线

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

相关推荐

C2 稳定性契约,SAP 远程 API 背后的那条升级安全线

摘要:SAP S/4HANA系统中,远程API的长期稳定性关键在于建立清晰的C2稳定性契约,而非仅关注技术实现。C2契约与内部复用的C1契约不同,专门保障外部系统通过OData等服务访问时的接口稳定性。远程API最危险的不是调用失败,而是升级后语义的隐性变化。真正的稳定API需要多维度设计:控制字段范围、明确业务语义、稳定授权机制和规范错误处理。项目实践中应避免直接暴露底层CDS视图,而要通过通信场景等SAP标准机制构建可维护的公共接口。

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

UML类图和类之间的关系

目录1. 类和接口的UML表示类接口2. 类之间的关系泛化(继承)实现依赖关联聚合组合区别 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,一种用于软件系统分析和设计的工具。UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系。 1. 类和接口的UML表示 类 使用三层矩形框表示 第一层是类的名称 第二层是属性 格式: [可见性]属性名:类型[=默认值] 例如:- name: String

sun10367的博客 818

设计模式(二)——UML类图介绍

在正式介绍设计模式之前,我们有必要学习一下UML类图,因为我们需要一种直观的表示方法来描述设计模式,这种方法即是UML类图。在Jungle之前的一篇博客里,已经介绍到UML类图UML类图关系与符号简介。这里,不妨我们再次学习一遍。 1.UML是什么? UML-Unified Model Language统一建模语言,是在开发阶段,说明、可视化、构建和书写一个面向对象软件的开放方法。统一建模语...

冯Jungle的个人博客 2万+

UML类图详解

UML类图详解 类图用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合 一 依赖关系 基本介绍 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了。 案例代码 public class PersonServiceBean { private PersonDao personDao;//类 public void save(Person person){} public IDCard get

hcyxsh的博客 752

国产大模型 coding plan 实战决策指南:GLM、Kimi、豆包、abab 四大模型分层选型与工程落地

大模型辅助编程(coding assistant)正从概念验证走向规模化工程落地,其核心已不再是‘能否生成代码’,而是‘如何在真实开发流程中精准赋能’。理解模型能力边界、匹配技术栈特征、构建分层工作流(L1行级补全/L2函数生成/L3模块重构),是实现稳定提效的关键。GLM系列以工程稳定性见长,适合代码审计与测试生成;Kimi-Max凭借200K超长上下文胜任深度重构与合规审查;豆包响应快、框架适配深,是IDE高频补全的理想选择;abab系列则在IoT固件等跨模态场景中展现独特价值。本文聚焦国产模型在金融、

weixin_32238157的博客 428

量化策略分享之首板低开

这个量化策略的核心是选择在低位、首次涨停后次日低开的股票,开盘时买入,上午有盈利就卖出,没有就拿到尾盘在卖出;策略优点在于选择的股票在低位,风险较低,并且刚启动首板,有大资金介入,第二天能快速跑路。

qq_29301281的博客 1467

快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图

本文详细讲解和梳理UML类图,并介绍通过为IDEA安装PlantUML Intergration插件实现UML类图的绘制,为后续设计模式的讲解做铺垫。本文所有代码都是以JAVA语言为例

Mekeater的博客 2万+

MS1826A HDMI 多功能视频处理器 HDMI4进1出画面分割芯片

基本介绍 MS1826A 是一款多功能视频处理器,包含 4 路独立 HDMI 音视频输入通道、1 路 HDMI 音视 频输出通道以及 1 路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立的字库定 制型 OSD;可处理隔行和逐行视频或者图形输入信号;有四路独立视频播放引擎可支持视频多路 播放。该产品提供了高质量的视频输出,有解隔行输入、视频增强,以及帧率转换的处理能力。 功能特征 视频输入输出  四路独立 HDMI 输入通道  一路 HDMI 输出通道  最高支持 4K@3

qq_45645383的博客 1782

UML中的类图及常见类图关系

UML(统一建模语言,Unified Modeling Language),是用来设计软件蓝图的可视化建模语言。从目标系统的不同角色出发,分为用例图,类图,对象图,状态图,活动图,时序图,协作图,构件图,部署图等9种图 最近重新研究了设计模式,在整理总结时,用到了类图,发现经常混淆类图的关系,所以特意做下整理。 文章目录类、接口、类图类接口类图类之间的关系依赖关系关联关系聚合关系组合关系泛化关系...

jonathan的专栏 2万+

解锁全志T113-i隐藏技能:用RISC-V核跑实时系统比STM32还稳?

本文深入探讨了全志T113-i SoC的异构架构潜力,重点解析如何利用其内置的玄铁C906 RISC-V核心独立运行实时系统。通过对比传统MCU与Linux方案,文章提供了从RISC-V核心启动、FreeRTOS移植到与Linux主核进行高效异构通信的完整实战指南,为工控等需要兼顾丰富应用与硬实时控制的场景提供了高集成度的单芯片解决方案。

ansible6ops的博客 494

告别瞎猜!用通达信L2资金流向函数,手把手教你识别主力动向(附实战公式)

本文详细解析通达信L2资金流向函数,手把手教你构建主力动向监控系统。通过分档数据解析、委买委卖攻防解读及实战公式应用,帮助投资者精准识别主力建仓与虚假拉升信号,提升股票交易决策效率。

weixin_26908317的博客 2094

UML类图是什么

一、什么是UML类图 先引用一段百度百科的定义 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。 哈哈,相信你看来这个定义,肯定是迷惑的,但如果用一句话来概述 UML类图就是用来描述类与类

优秀的程序员不应该是CRUD 6445

Winform从入门到精通(21)——ProgressBar(史上最全)

本介绍ProgressBar控件的详细用法,包含所有属性、事件,绝对史上最全!

qq_34059233的博客 3350

uml 菱形_UML各种表示方法

对象负责代表部分的对象的生命周期,合成关系不能共享。表示方法:实心菱形+实线+箭头,依赖关系:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。表示方法:虚线+箭头===========================================================================类之间的关系U...

weixin_39958019的博客 849

YOLOv8车辆碰撞识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

随着我国汽车保有量的持续攀升,道路交通事故数量居高不下,车辆碰撞损伤的快速、精准评估已成为交通安全管理、保险理赔定损以及汽车后市场服务中的关键环节。传统的人工目视查验方法高度依赖评估人员的专业经验,不仅主观性强、效率低下,而且在复杂光照、多角度遮挡等真实场景下难以保证评估的一致性和可复现性。计算机视觉与深度学习技术的迅猛发展,为目标检测任务提供了强有力的技术支撑,使得基于视觉的车辆损伤自动化识别成为可能。

斌擎科技 129

vue2/3 - 详细实现内网使用离线百度地图功能,百度地图如何离线加载详细教程(内网部署及使用),在vue中无需网络离线使用百度地图相关功能,提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,百度地图,离线使用百度地图,百度地图瓦片官方下载,vue内网使用百度地图离线无网络,断网情况下使用百度地图,vue离线百度地图教程,如何实现内网部署百度地图,无需联网离线使用,vue+ts实现离线百度地图 内网离线百度地图,如何在百度地图Vue项目中下载离线地图,百度离线地图加载不出来,百度地图离线使用不显示怎么办,怎么解决vue内网使用离线百度地图加载失败问题,vue实现离线地图+百度瓦片,vue引入百度离线地图,vue项目如何使用离线百度地图和自定义地图样式,百度离线地图的下

✅ 精选推荐文章 1万+

idea uml图各符号含义_设计模式-UML类图的各符号含义(转)

UML类图的各符号含义类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形。由这些基本的图形进行组合构成了类图的基本符号。这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度。越向右耦合度越高。其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系。实线+空心菱形表示的是...

weixin_35410099的博客 853

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

uml 菱形_五分钟能掌握UML类图中最常用到的元素

做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!一、UML类图思维 导图思维导图地址:http://naotu.baidu.com/file/df1cb03489378d2a541d3d8d181399da?token=2eb1feb8006fa607 密码:33bZ二 、详细分析和介绍下面就从上面的思维导图开始,详细的介绍UML类图! 在讲解之前请看关系线条图(一定要牢记...

weixin_42503069的博客 994

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

读《大话设计模式》——①代码无错就是优?[简单工厂模式]——UML图入门介绍

举一个简单的例子,来看这样一副图,其中就包括了UML类图中的基本图示法。 1. 类的画法 类有三个单元格的矩形(看上图中的动物类) 第一格:类名称(如果是抽象类,名称标注为斜体字) 第二格:类属性名称 第三格:类操作名称 类属性或者操作的访问修改符的标注: public用加号标注 private用减号标注 protected用#号标注 2. UML类图新手入门级介绍        &n

开心就好的博客 394

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

UML中关联、组合与聚合等关系的辨析

以前学习面向对象的时候,常听到介绍对象之间的各种关系,常见的有关联,组合与聚合。关联:关联是一种最普遍和常见的关系形式。一般是指一个对象可以发消息给另外一个对象。典型的实现情况下指某个对象有一个指针或者引用指向一个实体变量,当通过方法的参数来传递或者创建本地变量来访问这种情况也可以称之为关联。典型的代码如下: class A { private B itemB; }  也可能...

点缀星辰 398

UML类图例题及总结

1、根据描述,建立类图。 必修课(CompulsoryCourse)和选修课(OptionalCourse)都是课程(Course)的一种。一名教师(Teacher)可以不教授任何课程,也可以教授多门课程。一门课程至少有一名任课教师,至多有三名任课教师。每个教师都具有教师编号(Tid)和姓名(Tname),每门课程都具有课程编号(Cid)和课程名称(Cname)。 要求: (1) 先根据描述画出类图。 (2) 然后修改类图:利用关联类教授(Instruct),将多对多关系转换为两个一对多关系。(注

代码是程序员的语言,博客是思想的桥梁,连接你我,共享智慧之光。 8万+

uml 菱形_解析各种UML类图标识法

各种UML类图标识法◆------>虚线箭头表示依赖关系(dependency),一个类需要与另外一个类一起工作,是它一种最弱的关联关系,常见于各种工具类之间的关系◆——实线表示联合关系(association),一个类包含对另外一个类对象的引用,这个通常是使用属性来实现的,为了表明之间的包含关系,有时候会在实线的一端加上箭头(navigabilityarrow)来表示导航关系,如果关联的双...

weixin_39672572的博客 1156

【UML类图】空心菱形和实心菱形的区别

UML面向对象方法,画图空心菱形和实心菱形的区别,聚合和组合的区别

m0_51697851的博客 5105

类之间的关系(1. 使用关系和组合关系)

类之间的关系:使用和组合关系

cb_east的博客 4013

uml 继承_UML 完全解析和总结

1、UML的定义(1)UML(Unified Modeling Language),统一建模语言,以可视化的观点来看程序系统,将规格和设计重点直接写下来(2)UML的 “attribute(属性)” 代表Java的 “field(字段)” ,UML的 “operation(操作)” 代表Java的 “method(方法)”2、类图(class Diagram)(1)类图是一种可表示一组类、对象实例...

weixin_39654352的博客 4903

类之间的关系——组合、聚合、关联、泛化、依赖

表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。——百度百科聚合表示整体与部分的关系,并非同生共死,部分实例可以添加到聚合整体,也可以从聚合整体中移出。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。相较于组合,聚合中整体与部分的关系更弱,更接近于"has a"。是类之间的一种很弱的联系。关联可以有方向,可以是单向关联,也可以是双向关联。

qq_36188127的博客 8718
上一篇: 2020-03-05-上班路上随手拍摄
下一篇: 设计模式-3-六个设计原则
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值