【愚公系列】软考高级-架构设计师 085-UML图

举报
愚公搬代码 发表于 2024/07/31 23:45:00 2024/07/31
【摘要】 🏆 作者简介,愚公搬代码🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主...

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

UML图(Unified Modeling Language diagrams)是一种用于描述和可视化软件系统结构、设计和行为的标准化图形化语言。UML是一种软件工程建模语言,被广泛应用于面向对象系统的分析、设计和实现过程中。

UML图分为多种类型,每种类型都用于描述系统的不同方面,包括结构、行为、交互等。常见的UML图包括:

  1. 类图(Class Diagram):用于描述系统中的类、属性、方法之间的关系,展示系统的静态结构。

  2. 用例图(Use Case Diagram):描述系统的功能需求和用户与系统之间的交互。

  3. 序列图(Sequence Diagram):展示对象之间的交互顺序,描述系统中的消息传递。

  4. 活动图(Activity Diagram):描述系统中的活动流程和控制流程。

  5. 状态图(State Diagram):描述系统中对象的状态转换和状态之间的转移。

  6. 组件图(Component Diagram):展示系统的组件及组件之间的依赖关系。

  7. 部署图(Deployment Diagram):描述系统中软件和硬件之间的部署关系。

UML图提供了一种标准化的、可视化的方式来描述软件系统,有助于不同开发者之间的沟通和理解。它可以帮助开发人员更好地分析、设计和实现软件系统,提高系统的质量和可维护性。

🚀一、UML图

🔎1.概念

🦋1.1 UML(统一建模语言)

UML,即统一建模语言,与程序设计语言无关。它主要用于可视化、描述、构造和文档化软件系统的制品。

🦋1.2 UML的三个要素

  1. UML的基本构造块
    • 描述模型中最具有代表性的成分。
  2. 规则
    • 规定如何将这些构造块放置在一起。
  3. 公共机制
    • 适用于整个语言的一些通用机制。

🦋1.3 UML的基本构造块

  1. 事物
    • 对模型中最具有代表性的成分的抽象。
  2. 关系
    • 将事务结合在一起,定义它们之间的交互和依赖。
    • 聚集了相关的事物,以图形化的方式展示系统的结构和行为。

🦋1.4 UML中的四种事物

  1. 结构事物
    • 描述系统的静态部分,如类、接口、协作和组件。
  2. 行为事物
    • 描述系统的动态部分,如交互和状态机。
  3. 分组事物
    • 将其他事物组织在一起,如包。
  4. 注释事物
    • 为模型元素提供描述性的注释和说明。

UML是用于软件系统建模的工具,它通过基本构造块、规则和公共机制来构建模型。基本构造块包括事物、关系和图,事物又分为结构事物、行为事物、分组事物和注释事物。UML帮助开发者以可视化的方式理解和设计软件系统。

🔎2.事物

🦋2.1 结构事物

结构事物:模型的静态部分,如类、接口、用例、构件等;如图示例:

在这里插入图片描述

🦋2.2 行为事物

行为事物:模型的动态部分,如交互、活动、状态机
在这里插入图片描述

🦋2.3 分组事物

分组事物:模型的组织部分,如包;

🦋2.4 注释事物

注释事物:模型的解释部分,依附于一个元素或一组元素之上对其进行约束或解释的简单符号。
在这里插入图片描述

🔎3.关系

在UML中,关系是用于描述模型元素之间交互和依赖的重要概念。主要的关系类型包括依赖、关联、泛化和实现。

🦋3.1 依赖

  • 定义:一个事物的语义依赖于另一个事物的语义的变化而变化。
  • 特点:体现了临时性的弱关系,通常表示使用关系。
  • 示例:类A依赖于类B,如果类B的变化会影响类A的行为或语义。

🦋3.2 关联

  • 定义:一种结构关系,描述了一组链,这些链是对象之间的连接。
  • 分类
    • 组合:表示部分和整体的关系,整体生命周期决定部分生命周期,关系较强。
    • 聚合:表示部分和整体的关系,部分可以独立于整体存在,关系较弱。
  • 特点:两个类之间的关联实际上是两个类所扮演角色的关联,因此,两个类之间可以有多个由不同角色标识的关联。
  • 示例:学生和课程之间的关联关系,课程可以由多个学生组成。

🦋3.3 泛化

  • 定义:一般/特殊的关系,表示子类和父类之间的关系。
  • 特点:子类继承父类的属性和方法,体现了“是一个(is-a)”的关系。
  • 示例:动物类和狗类之间的关系,狗类是动物类的子类。

🦋3.4 实现

  • 定义:一个类元指定了另一个类元保证执行的契约。
  • 特点:通常表示接口和实现类之间的关系,实现类承诺执行接口所定义的操作。
  • 示例:接口I和类C之间的关系,类C实现了接口I中的所有方法。

在UML中,关系类型包括依赖、关联、泛化和实现。依赖关系表示临时性使用关系,关联关系描述对象之间的连接(包括组合和聚合),泛化关系表示继承和分类关系,实现关系用于描述接口和实现类之间的契约关系。这些关系共同帮助描述系统中的复杂交互和结构。
在这里插入图片描述

🔎4.类图

类图:静态图,为系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系。

多重度:指的是不同类之间的联系,类似于数据库设计的表与表的关系
在这里插入图片描述

🔎5.对象图

对象图:静态图,展现某一时刻一组对象及它们之间的关系,为类图的某一快照。在没有类图的前提下,对象图就是静态设计视图。
在这里插入图片描述

🔎6.用例图

用例图:静态图,展现了一组用例、参与者以及它们之间的关系。

用例图中的参与者是人、硬件或其他系统可以扮演的角色;用例是参与者完成的一系列操作。

用例之间的关系:包含(include)、扩展(extend)、泛化。

在这里插入图片描述

🔎7.序列图

序列图:即顺序图,动态图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。

有同步消息(进行阻塞调用,调用者中止执行,等待控制权返回,需要等待返回消息,用实心三角箭头表示)、异步消息(发出消息后继续执行,不引起调用者阻塞,也不等待返回消息,由空心箭头表示)、返回消息(由从右到左的虚线箭头表示)三种。

在这里插入图片描述

🔎8.通信图

通信图:动态图,即协作图,是顺序图的另一种表示方法,也是由对象和消息组成的图,只不过不强调时间顺序,只强调事件之间的通信,而且也没有固定的画法规则,和顺序图统称为交互图。如下:

在这里插入图片描述

🔎9.状态图

状态图:动态图,展现了一个状态机,描述单个对象在多个用例中的行为,包括简单状态和组合状态。转换可以通过事件触发器触发,事件触发后相应的监护条件会进行检查。

状态图中转换和状态是两个独立的概念,如下:图中方框代表状态,箭头上的代表触发事件,实心圆点为起点和终点。下图描述的就是一个图书的状态变化
在这里插入图片描述

🔎10.活动图

活动图:动态图,是一种特殊的状态图,展现了在系统内从一个活动到另二个活动的流程。

活动的分岔和汇合线是一条水平粗线。

每个分岔的分支数代表了可同时运行的线程数。

活动图中能够并行执行的是在一个分岔粗线下的分支上的活动。

在这里插入图片描述

🔎11.构件图

构件图(组件图):静态图,为系统静态实现视图,展现了一组构件之间的组织和依赖。
在这里插入图片描述

🔎12.部署图

部署图:静态图,为系统静态部署视图,部署图描述的事物理模块的节点分布。它与构件图相关,通常一个结点包含一个或多个构件。其依赖关系类似于包依赖,因此部署组件之间的依赖是单向的类似于包含关系。

在这里插入图片描述

🚀三、练习

🔎1.题目一

在这里插入图片描述

🔎2.题目二

在这里插入图片描述

🔎3.题目三

在这里插入图片描述


🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。