UML常见图标总结

类包括类名、属性和方法三个部分,并被横线分割开来。

类名:Employee

属性:name, age, email

方法:modifyInfo()

其中的符号(+-#)的意义为:

+public

-private

#:protected

属性的完整表示为  可见性 名称:类型 [ = 缺省值] 中括号中的内容可选

方法的完整表示为  可见性 名称(参数列表)[ : 返回类型] 中括号中的内容可选。

比如上图中的类,定义了三个方法:

Public method1()接收一个Object的参数,返回值类型为void

Protected方法method2()无参数,返回值类型为String

Private方法method3()接收类型分别为intint[]的参数,返回值类型为int

类与类之间关系的表达方式

关联关系,包括单向关联,双向关联和自关联。

单向关联

https://i-blog.csdnimg.cn/blog_migrate/5fc3213e111845260e120a40357f3156.jpeg

单向关联用单箭头直线表示。如上图,每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。

双向关联

https://i-blog.csdnimg.cn/blog_migrate/11b876a04cdaf6e4ac375695efadd1fe.jpeg

双向关联用直线表示,即双方都有对方类型的成员变量。如上图,Customer类中有一个product[]数组,表示一个顾客购买了哪些产品;product类中维护一个Customer类型的成员变量表示这个产品被哪个顾客所购买。

自关联

https://i-blog.csdnimg.cn/blog_migrate/78657a6a18bc3a95675f219957690b1a.jpeg

自关联用指向自己的直线表示。如上图,Node类包含类型为Node的成员变量,自己包含自己。

聚合关系

https://i-blog.csdnimg.cn/blog_migrate/68e029bc1c7a8007c457e7d914dcbde5.jpeg

聚合关系用空心菱形和箭头直线表示。强调的是整体包含部分,但是部分可以脱离整体单独存在。比如汽车包含发动机,发动机脱离汽车也能单独存在。

组合关系

https://i-blog.csdnimg.cn/blog_migrate/a9681241e6783fc5ac00d805ba7658ec.jpeg

与聚合关系相比,组合关系中的部分脱离了整体便不复存在。

依赖关系

https://i-blog.csdnimg.cn/blog_migrate/61e1bbdef76af34f2a4062a115cfabb1.jpeg

依赖关系用带箭头的虚线表示。如上图中Driver中的drive只有导入一个Car对象才能发挥作用,因此Driver类依赖于Car类。

继承关系

https://i-blog.csdnimg.cn/blog_migrate/0d5cced558776c77b74b171f45795b2a.jpeg

继承关系用空心三角直线表示,如上图中StudentTeacher都继承了Person类。

接口实现关系

https://i-blog.csdnimg.cn/blog_migrate/d6d6215a8e531e4c18798f4ac0028de4.jpeg

接口实现关系用带空心三角的虚线表示,如上图Car与Ship都实现了Vehicle的接口。

 

### UML类图中的关系术语总结 UML类图是一种用于描述系统中类及其相互关系的图形化工具。它通过展示类之间的关联、继承和其他交互方式,帮助开发者理解系统的静态结构[^1]。 #### 1. 继承 (Generalization/Inheritance) 继承表示一种“is-a”的关系,子类可以继承父类的属性和操作。在UML类图中,这种关系通常用一条带有空心三角箭头的实线来表示。例如,`Student` 和 `Teacher` 都是从 `Person` 类派生出来的,则可以用继承关系连接它们[^3]。 ```plaintext ▲ │ ┌────┴────┐ Person Extend ┌─────────┐ │ │ └─────────┘ △ ▽ │ │ ┌──────┴──────┐ │ │ Student Teacher ``` #### 2. 实现 (Realization/Interface Implementation) 实现是指一个类实现了某个接口的行为。这通常是通过虚线加空心箭头指向接口的方式表现出来。例如,如果有一个接口 `Shape` 被具体化的圆形 `Circle` 或矩形 `Rectangle` 所实现,则会这样绘制: ```plaintext Shape / | \ Circle Rectangle Triangle ``` 此部分强调的是抽象概念到具体实体间的映射过程[^4]。 #### 3. 关联 (Association) 关联是最常见的一种关系形式,代表两个不同对象间存在某种逻辑上的联系。“has-a”或者更复杂的业务场景都可以视为此类别下的例子之一。一般情况下,默认不区分方向;但如果需要指定数据流动的方向的话,则可以通过添加箭头完成说明工作。 简单双向关联: ```plaintext ClassA ---- ClassB ``` 单向关联(从 A 到 B 的导航路径): ```plaintext ClassA --> ClassB ``` #### 4. 聚合 (Aggregation) 聚合也是一种特殊的关联形式,但它特别指出了一种整体与部分的关系,“whole-part”。不过这里需要注意的是,即使删除了整个组件也不会影响其组成部分的生命期管理情况。因此我们说这是弱组合状态的表现形态。 符号上表现为菱形末端加上连线即可表达该含义。 示意图如下所示: ```plaintext Whole --<> Part ``` #### 5. 合成 (Composition) 合成同样是关于整体与其部件之间紧密程度更高的版本。区别于上述提到过的那种松散型别的地方在于一旦销毁容器之后内部成员也将随之消失不见。所以可以说这是一种强耦合式的体现手法。 它的图标样式类似于聚合但是填充颜色改为黑色以资辨别之用。 示意图为下述样子: ```plaintext Whole -*- Part ``` --- 以上便是对于UML类图当中几种主要关系类型的概括介绍[^2]。每种类型都有各自特定的应用场合以及语义解释,在实际项目开发过程中应当依据需求合理选用合适的模式来进行设计规划活动开展下去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值