你可以从别人那里汲取某些思想,|

makalo

园龄:5年11个月粉丝:144关注:15

UML 类图基本了解

UML 简介

统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。

统一建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简明,进一步缩短了设计时间,减少开发成本。它的应用领域很宽,不仅适合于一般系统的开发,而且适合于并行与分布式系统的建模。

UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。

本文主要介绍软件设计模式中经常用到的类图

整体图示例

wKioL1UKQUWDNO2vAAHenimwBvI629.jpg

上图是一个整体的图,特别要注意各种样式的箭头,下文分别用局部小图说明各知识点。

单个局部图讲解

1. 类

方式1

wKioL1UKQXLRPBtlAABJWxoTGco878.jpg

方式2

5336514-d05e8edc42eb1469

类图分三层:

(1) 类名称,如果是抽象类就用斜体标识。如方式1,类名称是“动物”,且其是一个抽象类。

(2) 类特性,通常是字段和属性。如方式1,类特性是“有生命”。

(3) 类操作,通常是方法或行为。如方式1,一个是带参数的“新陈代谢”,一个是不带参数的 “繁殖”。

如果想表示的抽象一点可以方式1,如果想表示的具体一点可以使用方式2

注意前面的符号:‘+’表示public,‘-’表示private,‘#’表示protect。本例的类属性和类操作均是public的。

2. 接口

两种表示法。

(1)

wKiom1UKQHyhmesUAACamBOSMmk644.jpg

(2)“棒棒糖”表示法

wKioL1UKQbmwrHqdAACT6Ix2idU614.jpg

3. 关系

类与类之间或者类与接口之间

(1) 继承关系:空心三角+实线,被三角指向的是父类。

wKioL1UKQdHDa9I8AABZMjD1Qls061.jpg

wKiom1UKP-iBUbByAABR96Yn-3o934.jpg

(2) 实现关系:用空心三角+虚线表示,被三角指向的是接口。

wKioL1UKQeejDv3oAABN4RDDUgg411.jpgwKioL1UKQeejDv3oAABN4RDDUgg411.jpg

(3) 关联关系(association):用实线箭头表示,箭头表是方向,双向则无箭头。

wKiom1UKQODwRgjhAACc_FHSlaw475.jpg

​ 体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系

比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系

一般是平等的、关联可以是单向、双向的。本例,企鹅单向关联气候,企鹅需要知道气候。

(4)聚合关系(aggregation):用空心菱形+实线箭头表示,菱形指向聚合端。

wKioL1UKQhyDiL8PAABSuH1v5f4522.jpgwKiom1UKQP_z9mMHAABgxtFr7yo783.jpg

​ 聚合表示一种弱的“拥有”关系,体现的是A可以拥有B,B对象不是A对象的一部分。本例A是雁

群,B是大雁。它们的生命周期不一样,没有必然联系。

(5)合成关系(composition也有叫组合关系):用实心菱形+实线箭头表示,菱形指向整体部分。

wKiom1UKQQ7SiWQ0AADMH0yXICw907.jpg

合成表示一种强的“拥有”关系,严格的部分与整体的关系,生命周期是一致的。本例,翅膀是

鸟的组成部分。

(6)依赖关系(dependency):用虚线箭头表示,箭头指向被依赖的对象。

wKiom1UKQSixKd8iAAClWQk7kuc674.jpg

wKiom1UKQTmBmwmJAABj5Vovp6A164.jpg

两个相互独立的对象,对象A的存在必须依赖B。本例,A是动物,B有两个氧气和水。B的生命期结束

则A必结束,反之则不然。

也可这样理解:一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A。

本文作者:makalo

本文链接:https://www.cnblogs.com/makalochen/p/12843964.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   makalo  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起