【程序设计】UML类图概述

    类图是14种UML(统一建模语言)中的一种,是面向对象程序的核心建模工具,能够描述接口、类以及他们之间的协同关系,显示项目中这些概念的静态结构。

    本文是我参考多篇博客整理而成,意在帮助自己开发过程中绘制更为清晰和规范的图示,使得整个软件设计有更好的可读性和理解性,降低开发的风险,同时也方便与其他研发同事的沟通交流。

    类图概括起来可以分成两个部分:类之间的关系,接口也是类的一种。这里涉及到两种定义,我们分别来看一下:

1、类

    类的定义分为三部分组成,分别是 类名、类的属性、类的方法。

1.1 类的构成

        - :private 私有的,只有本类可见

        + : public 公共的,外部类可见

        # : protected 受保护的,派生类可见

        ~ : 默认的,本包下的类可见

    以上的符号对类的特征和行为都是适用的。在类的方法中,方法名后面括号中是入参,格式是 形参名1:类型, 形参名2:类型,也可以赋予默认值,括号后面是返回值,无返回值可以不写,有些博客中建议用 void 来表示返回值。

1.2 类的名称

    另外还有类名的定义,如果是接口或者抽象类,可以使用斜体或者<< xxx >>来表示,如下:

2、类之间的关系

    在UML类图中,类与类之间的关系有四种,如下:

        泛化:表示一般与特殊的关系,可以理解为继承;

        实现:表示类与接口/抽象类的关系,类是接口/抽象类的特征和行为的体现。

        关联:表示类之间的一种持有关系,如 A类作为B类的成员变量;

        依赖:表示类之间的一种使用关系,如 A类作为B类某个方法的 局部变量、形参、返回值等。

2.1 泛化关系

【定义】可以理解成是一种继承关系(包含抽象类的继承),表示子类继承父类的所有特征和行为;

【表示】用实线和空心三角表示,比如Son类继承Father类,则Son类指向Father类

2.2 实现关系

【定义】是类的实现关系,表现为类实现接口,能够体现后者的所有特征和行为。

【表示】用虚线和空心三角表示,比如ServiceImpl实现了Service接口,则ServiceImpl指向Service接口

2.3 关联关系

【定义】是类中对象与对象的关系,可以理解为一个对象所有的成员变量

【分类】关联关系是可以分为 “自关联”、“单向关联”、“双向关联”、“聚合关系”、“组合关系”5种,表示方法略有不同

2.3.1 自关联

【定义】一个对象持有自身类型的属性

【表示】用实线和箭头表示,自己指向自己

2.3.2 单向关联

【定义】一个对象持有另一个类型的属性

【表示】用实线和箭头表示,上层指向下层

2.3.3 双向关联

【定义】两个对象互相持有对方类型的属性

【表示】用实线表示,无箭头

2.3.4 聚合关系

【定义】聚合关系是一种比较弱的关联关系,比如大雁和雁群,雁群不在了,大雁还是可以存在的。可以理解为 集合类的成员变量,如 List<大雁>

【表示】用空心菱形、实线、箭头表示

2.3.5 组合关系

【定义】组合关系是一种比较强的关联关系,成员的生命周期取决于聚合的生命周期,比如公司和部门,公司不存在了,部门也就没有存在的意义。

【表示】用实心菱形、实线、箭头表示

2.4 依赖关系

【定义】一个对象在运行期间与用到的对象之间的关系,具体表现为某个对象作为另一个对象方法的形参、局部变量、方法的返回值,或者A类调用了B类的静态方法(下图代码表示了依赖关系中的三种形式)。

【表示】用虚线和箭头表示

3、总结

    使用UML类图,我们没必要纠结比如聚合、组合关系应不应该带箭头这样的问题,更多的应该关注我们呈现出来的类图,能否让别人更好的理解我们的设计思想。

参考博文如下:

1. 《掌握14种UML图,清晰图示》 https://aikysay.blog.csdn.net/article/details/125069834

2. 《UML概述》 UML概述-CSDN博客

3. 《[UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之一》 [UML] 类图介绍 —— 程序员(灵魂画手)必备画图技能之一_类图怎么画-CSDN博客

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值