【设计原则】UML类图概述

发布时间:2023年12月29日

? ? 类图是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博客

文章来源:https://blog.csdn.net/qq_35850405/article/details/135285396
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。