[转]初识UML
原文链接:初识UML——博客园
原文链接:常用UML图的使用场景——博客园
什么是UML?#
统一建模语言(UML)是一种通用的可视化建模语言,可以用来描述、可视化、构造和文档化软件密集型系统的各种工件。
UML是独立于过程的,它适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。
注:UML不是一种程序设计语言,其描述的模型可以和各种编程语言相联系。
UML的目标#
- 为建模者提供可用的、富有表达力的、可视化的建模语言,以开发和交换有意义的模型。
- 提供可扩展性和特殊化机制以延伸核心概念。
- 支持独立于编程语言和开发过程的规范。
- 为理解建模语言提供正式的基础。
- 推动面向对象建模工具市场的成长。
- 支持更高级的开发概念。
UML的应用范围#
类图:最常用,描述子系统或模块的内部结构
序列图/时序图:单个场景下,子系统间或对象间的交互操作
活动图:流程图与序列图的结合,可以在序列图的基础上表达更多业务逻辑,比序列图更能表达细节
状态图:多场景、多种操作下,系统或对象的状态变化
通信图:序列图的变种,形式更自由,不能体现子系统的生命周期
包图:大型系统实际代码中,各子系统间、应用分层间的依赖关系
组件图:实际模块或逻辑分层间,接口的依赖关系
部署图:各子系统所使用的软件环境,部署的软件包信息
用例图:描述需求的场景或粗略用例
UML的构造块#
事物#
关系#
关系是模型元素之间具体化的语义连接,负责联系UML的各类事物,构造出结构良好的UML模型。
四种关系:
- 关联关系:描述不同类元的实例之间的连接。
- 依赖关系:描述一对模型元素之间的内在联系。
- 泛化关系:描述特殊到一般的一种归纳和分类关系。
- 实现关系:描述规格说明和其实现的元素之间的连接的一种关系。
图#
UML图根据基本功能和作用,可分为:结构图与行为图。
结构图:捕获事物与事物之间的静态关系,用来描述系统的静态结构模型。
行为图:捕获事物的交互过程如何产生系统的行为,用来描述系统的动态行为模型。
面向对象设计的原则#
开闭原则#
内容:软件实体应当对扩展开放,对修改关闭。
通俗来讲,开闭原则就是软件系统中的各组件,应该能够在不修改现有内容的基础上,引入新功能。
为了达到开闭原则,对于类图的设计应该尽可能地使用接口或泛化进行封装,并且通过使用多态机制进行调用。接口和泛化的使用可以使操作的定义与实现分离,使得新添加的模块依赖于原有模块的接口。多态的使用使得在使用时可以通过创建父类的间接实例通过多态的支持进行操作,从而避免对其他类的修改。
里氏替换原则#
内容:子类对于父类应该是完全可替换的。
具体来说,如果S是T的子类,则T类的对象可以被S类的对象所替代而不会改变该程序的任何理想特性。
我们都知道,子类的实例是父类的间接实例。根据多态原则,当父类创建一个间接实例时并调用操作时,将根据实际类型调用子类的操作实现。
依赖倒置原则#
内容:高层次模块不应该依赖于低层次模块,二者都应该依赖于抽象;抽象不应该依赖于具体,具体应该依赖于抽象。
根据依赖倒置原则,从高层次到低层次之间设计类结构的方式应该是:高层次类抽象层低层次类。
在设计时,可以使用接口作为抽象层。
接口分离原则#
内容:在系统中任何客户类都不应该依赖于他们不使用的接口。
当系统中需要接入许多个子模块时,相比于只使用一个接口,将其分成许多规模更小的接口是一种更好的选择,其中每一个接口服务于一个子模块。
应用接口分离原则降低了系统的耦合度,从而使系统更容易重构,改变并重新部署。
单一职责原则#
内容:每个类都应该只含有单一的职责,并且该职责要由这个类完全封装起来。
一个类应该只有一个可以引起它变化的原因。
每个职责都是变化的一个中轴线,如果类有多个职责或职责被封装在了多个类里,就会导致系统的高耦合,当系统发生变化时,这种设计会产生破坏性的后果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!