【愚公系列】软考高级-架构设计师 085-UML图
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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图包括:
-
类图(Class Diagram):用于描述系统中的类、属性、方法之间的关系,展示系统的静态结构。
-
用例图(Use Case Diagram):描述系统的功能需求和用户与系统之间的交互。
-
序列图(Sequence Diagram):展示对象之间的交互顺序,描述系统中的消息传递。
-
活动图(Activity Diagram):描述系统中的活动流程和控制流程。
-
状态图(State Diagram):描述系统中对象的状态转换和状态之间的转移。
-
组件图(Component Diagram):展示系统的组件及组件之间的依赖关系。
-
部署图(Deployment Diagram):描述系统中软件和硬件之间的部署关系。
UML图提供了一种标准化的、可视化的方式来描述软件系统,有助于不同开发者之间的沟通和理解。它可以帮助开发人员更好地分析、设计和实现软件系统,提高系统的质量和可维护性。
🚀一、UML图
🔎1.概念
🦋1.1 UML(统一建模语言)
UML,即统一建模语言,与程序设计语言无关。它主要用于可视化、描述、构造和文档化软件系统的制品。
🦋1.2 UML的三个要素
- UML的基本构造块:
- 描述模型中最具有代表性的成分。
- 规则:
- 规定如何将这些构造块放置在一起。
- 公共机制:
- 适用于整个语言的一些通用机制。
🦋1.3 UML的基本构造块
- 事物:
- 对模型中最具有代表性的成分的抽象。
- 关系:
- 将事务结合在一起,定义它们之间的交互和依赖。
- 图:
- 聚集了相关的事物,以图形化的方式展示系统的结构和行为。
🦋1.4 UML中的四种事物
- 结构事物:
- 描述系统的静态部分,如类、接口、协作和组件。
- 行为事物:
- 描述系统的动态部分,如交互和状态机。
- 分组事物:
- 将其他事物组织在一起,如包。
- 注释事物:
- 为模型元素提供描述性的注释和说明。
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元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)