UML介绍:初入职场面对复杂模块,从接触UML开始的故事 廊坊哪个网站推广好用些
栏目:网络推广 发布时间:2026-02-02
UML介绍 初入职场,部门首周便让我掌握一个模块的操作流程,该模块囊括了数十个类别、上百种方法,类别间关系错综复杂,方法调用频繁,我不得不绘制了一张完整的流程

UML介绍

初入职场,部门首周便让我掌握一个模块的操作流程,该模块囊括了数十个类别、上百种方法,类别间关系错综复杂,方法调用频繁,我不得不绘制了一张完整的流程图,密密麻麻,然而醒来后的第二天,这张图便变得难以辨认,令我痛不欲生,那种感受至今记忆犹新。当时我抱怨“工具不合适”,自此,我开始接触并学习UML。

统一建模语言UML,它是一种专门用于对软件密集型系统进行可视化的建模工具。

UML图有很多种,主要包含以下几类:

对于初学者而言,无需全面精通所有UML图,即可开展系统分析与设计任务,否则学习负担会过于沉重。依照二八法则,通常情况下,在UML图的运用中,仅需熟练掌握类图、用例图以及时序图,便足以应对大部分工作。特别是对于程序员而言,类图的使用频率最高。鉴于此,本文将专注于介绍UML类图。

抽象类、抽象类、接口和包的UML类图表示类的UML类图表示

UML类图中用矩形框表示一个具体类,矩形框分为三层:

成员变量的标识符前需使用相应的访问限定符进行标注,而成员方法名之后则紧跟冒号“:”,随后是成员变量的数据类型或方法的返回类型。以下为具体示例。

下面是一个具体类的定义:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Student</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">public</span> String pubVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">protected</span> String proVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">private</span> String priVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    String defaultVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">public</span> String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">pubFun</span>(){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"pubFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">protected</span> String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">proFun</span>(){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"proFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">private</span> String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">priFun</span>()<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    {<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"priFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">defaultFun</span>(){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"defaultFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

下面是该类对应的UML类图:

抽象类的UML类图表示

在UML的类图中,抽象类也以矩形框来展现,然而,其特征在于类名和抽象方法名称均以斜体形式呈现,除此之外,它们与具体类别并无二致。

下面是一个抽象类的定义:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">abstract</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Person</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">public</span> String pubVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">protected</span> String proVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">private</span> String priVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    String defaultVar;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">public</span> String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">pubFun</span>(){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"pubFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">protected</span> String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">proFun</span>(){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"proFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">private</span> String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">priFun</span>()<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    {<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"priFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    String <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">defaultFun</span>(){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">        <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">return</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(152, 195, 121);">"defaultFun"</span>;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    //抽象方法<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">public</span> </span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">abstract</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">void</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">abstractFun</span>();<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

其对应的UML类图如下:

接口的UML类图表示

类图中的接口同样以矩形框来展现,不过其表示方式与类有所不同。在类图的第一层,接口的上方会使用“>”符号来标识,以此表明其为一个接口。紧接着,下方会列出接口的名称,而在第二层,则会展示接口所包含的方法。此外,还需留意一点,接口中的方法并未指定访问修饰符,因此其默认的访问权限为公开。

下面是一个接口的定义:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">interface</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Shoes</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">void</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">abstractFun</span>();<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

其对应的UML类图如下:

包的UML类图表示

类和接口一般都出现在包中,UML类图中包的表示形式如图:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">package</span> graph;</span></code></pre></p>

UML类图表示类之间关系继承关系

继承关系也称为泛化关系,是指对象与对象之间的继承关系。如,

在UML类图中,我们通常用由空心三角和实线构成的箭头来表示继承关系,这样的箭头一端指向父类,另一端则指向子类。

下面的例子中,Son类继承了类。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Parent</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Son</span> </span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">extends</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Parent</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

用UML类图表示如下:

实现关系

实现关系描述了接口与其实现类之间的相互联系。在UML的类图展示中,这种关系通过一个由空心三角形和虚线构成的箭头来体现,箭头方向由实现类指向相应的接口。

下面的例子中,Dog类实现了了类。

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">interface</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Animal</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Dog</span> </span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">implements</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Animal</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

用UML类图表示如下:

聚合关系

聚合联系乃一种独特的联结方式,它揭示了整体与局部之间的相互联系,其中整体与局部各自拥有独立的生命周期。即便整体不复存在,局部依然可以独立存在。以公司部门与员工的关系为例,即便部门被撤销,员工依然可以继续存在。

在UML模型中,表示聚合关系的图形特征为:一个空心的菱形与一条实线箭头相结合,菱形位于整体的一侧,而箭头则指向构成该整体的部分。

如下所示

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Department</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">private</span> </span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">Employee employee</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;">;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Employee</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

其对应的UML类图如下:

组合关系

与聚合关系相仿,组合关系所体现的亦是整体与部分之间的联系,然而,与聚合关系不同的是:在组合关系中,整体与部分是密不可分的,若整体对象不复存在,则部分对象亦将随之消失,部分对象与整体对象之间存在着生死相依的紧密联系。

组合关联与聚集关联在概念上颇为相似,它们在统一建模语言(UML)中的类图表示亦十分接近。在UML的图形表示中,组合关系通过实心的菱形以及实线箭头来体现,其中实心菱形位于整体的一方,而箭头则指向构成部分的一方。

以人的头部(Head)与口部(Mouth)为例,口部构成了头部的一个构成要素,若头部不存在,口部亦随之消失,由此可知头部与口部之间存在着相互依存的组合关系。相应的Java代码表述如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Mouth</span><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Head</span> {<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">private</span> Mouth mouth;<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

其UML类图表示如下:

在Java编程中,聚合与组合的区分往往体现在类成员变量的形式上,这类关系中的个体对象往往作为整体对象的一部分存在。仅凭代码本身,很难明确二者之间的差异。若要准确判断,需从业务需求的角度出发。若整体对象的功能实现依赖于部分对象的协作,则它们之间构成的是组合关系;反之,若整体对象可以独立存在,部分对象只是作为其组成部分,则它们之间是聚合关系。

依赖关系

依赖性关联属于一种较为微弱的联系。当对象A在执行某项任务时需要借助对象B,而二者之间的联系并不显著时,这种联系便可被视为依赖性关联。例如,工人若需拧紧螺丝,便需借助螺丝刀这一工具以协助其完成拧螺丝的任务。

在Java编程语言中,依赖关系可以通过以下几种方式在代码中具体体现:B作为A类构造函数或方法中的局部变量、方法或构造函数的参数、方法的返回值,亦或是A类调用了B类的静态方法。

在UML的类图展示中,依赖性通过一条带有虚线的箭头来标识,箭头从调用方指向被调用方。以下是一个具体的示例。

java代码:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre style="margin: 10px 8px;padding: 1em;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;color: rgb(171, 178, 191);background: rgb(40, 44, 52);font-size: 14px;letter-spacing: normal;text-align: left;line-height: 1.5;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;"><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Screwdriver</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">class</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(230, 192, 123);">Worker</span>{<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(92, 99, 112);font-style: italic;">使用螺丝刀对象作为Worker类方法的输入参数,这种做法形成了相互依赖的关系。</span><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">public</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(198, 120, 221);">void</span> <span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(97, 174, 238);">screw</span>(</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;color: rgb(255, 0, 0);">Screwdriver screwdriver</span></code><code style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;text-align: left;line-height: 1.75;font-family: Menlo, "Operator Mono", Consolas, Monaco, monospace;font-size: 14px;white-space: nowrap;"><span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;font-size: 12px;">){<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">    }<br style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">}</span></code></pre></p>

对应的UML类图表示如下:

通过前面的讲解,大家应该对UML类图有了较为深入的认识,在此,我要向大家推荐一个免费的在线UML类图绘制工具,本文中所有的示例均是在此工具上完成的。

最终,我在网络上搜寻到了一张对类图进行全面展示的实例(若涉及侵权,烦请与我联系以删除),这张图将我们之前所讲解的内容进行了串联,具体如图所示,大家可以根据此图来领会图中各类之间的相互联系。

本文源码地址:

本文示例代码环境:

操作系统:macOs 12.1

JDK版本:12.0.1

maven版本: 3.8.4

—完—


# 林芝关键词排名  # 第二天  # 原创插画网站排名优化  # 网站建设分为哪几步  # 如何利用门户网站推广  # 聊城建设协会网站  # 许昌摄影网站建设  # 失物招领网站建设  # 南京媒体网站建设需求调研  # 公司网站建设系统介绍  # 镇江网站推广怎么做的快  # 出现在  # 白象网站推广案例  # 百度自建网站推广  # 100个网站优化  # 建设网站作业  # 荥阳便宜网站推广哪家好  # url可以更改seo吗  # 西宁网站建设基本流程  # 服装公司的网站建设发展  # 龙岩网站建设制作方案  # 天津如何推广网站  # 不复存在  # 从接触UML开始的故事  # UML介绍  # 初入职场面对复杂模块  # 是一个  # 图中  # 抽象类  # 的是  # 在此  # 矩形框  # 为例  # UML介绍:初入职场面对复杂模块  # 这张图  # 角形  # 生死相依  # 这一  # 让我  # 我在  # 由此可知  # 很难  # 子类  # 是指 


相关文章: 四年级数学试卷分析与反思改进措施:孩子计算总是出错怎么办?这份详细指南请收好  初三英语听力_中考听力训练有哪些高效方法?  初二英语知识点讲解:如何快速掌握五大核心语法易错点?  什么是seo反连接,网站反链多好还是少好 ,ai5101112  为什么seo对企业重要,seo对企业进行网络营销的价值 ,ai质检费用  互联网营销必看!百度搜索框下拉词优化关键词实战经验   爱搜网盘安全吗?实测解析这款搜索神器的真实安全性,如何避免网盘资源下载的常见陷阱?  “ChatGPT梯子”:轻松突破网络封锁,畅享智能对话的无限乐趣  初中七年级英语上册人教版_语法重点如何掌握?期末复习攻略来了!  seo是什么最好,seo是干嘛的 ,嘉然 ai少女  免费文字优化,助力内容创作,让文章更具吸引力  SEO提升是什么?揭秘如何通过SEO优化助力网站流量增长  免登录的对话式AI:轻松体验、便捷沟通的未来科技  seo站长什么意思,站长工具 - seo综合查询 ,主持人ai头像  seo是什么板材,seo是什么seo怎么做 ,课堂智能化ai  SEO提高权重的有效方法,助你轻松登上搜索引擎首页  SEO结构优化:提升网站排名的关键一步  SEO网站免费推广:如何通过SEO策略提升网站流量和排名?  数字化时代,女孩主动加微信的背后竟藏着这些小心思   免费看:免VIP无广告视频网站推荐,附真实使用体验与避坑指南  seo经理做什么的,seo经理招聘 ,ai页码大小  为什么网站要做seo,网站做seo的目的是什么 ,云客呼ai和黑斑马ai  抖音人气爆棚捧红众多网红,想走红容易却也难?且看这位   网络热议支持国产品牌,中华通网络电话成通讯新宠?   什么是seo网络推广seo顾问,seo网络推广员 ,缘分99ai  2025年11月6日厦门同安区竞赛规程公布!含多项重要信息   seo是什么站外流量,seo主要流量来自什么页面 ,AI考拉微博  什么是胖网络?揭秘数字世界的新变革  语文试卷网站怎么选?小学到高中全学段免费资源揭秘,这3个隐藏技巧让你效率翻倍!  为什么ChatGPT不能使用?你需要知道的真相  为什么seo吸引人,为什么seo吸引人呢 ,时评演讲ai  不用注册AI,轻松享受智能体验!  常用聊天软件微信,头像尺寸你知道多少?快来看看   职场风景照成主流?领导者微信头像背后的深层考量   什么是seo技术,什么是seo及seo的作用 ,AI换脸蒋欣播放  二级泛站群,zblog二级泛站群 ,明星ai资源网站  苏州数字营销活力足,谷歌SEO迎机遇与挑战   SEO引擎优化方法-让你的网站流量暴增的实战指南  彩铃与微信来电铃声有何区别?如何设置运营商彩铃?   JavaScript 解决方案:点击页面 body 区域关闭下拉菜单的实现   seo网站编辑是做什么,seo网站编辑可在家兼职 ,ai写作能写长篇吗  SEO简单速排名软件:让网站轻松登顶搜索引擎  公众号推文排版AI:轻松提升内容呈现质量,让你的公众号瞬间吸粉!  什么是seo如何进行seo,何谓seo ,微软ai写作  seo,seoul city ,ai软件下载中文版免费  初中资源库免费下载_初中资源库哪个好?  华为下滑搜索怎么关闭?简单步骤帮你轻松搞定   微信收款语音播报怎么设置?学会再也不用担心收不到钱啦   用select2实现可搜索下拉框:开发难题与解决之道   国际禁毒蓝皮书发布:互联网+支付+物流成毒品犯罪新方式?  


相关栏目: 【 网络营销44070 】 【 网络推广122852 】 【 网络优化116010 】 【 网址导航102054 】 【 网络技术82194 】 【 网络资讯43554