UML简单介绍-如何看懂UML(二)详解程序员
程序员 如何 详解 简单 介绍 uml
2023-06-13 09:20:19 时间
你画了一个三角形说这是一个接口,我花了一个圆形,跟你讲这个是接口?这其中的问题不言而喻。
1997年,OMG 组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)
将面向对象程序设计中的元素进行抽象,比如类还是接口,UML中称之为事物,就如同积木的基础形状
将元素之间的联系关系进行抽象,比如到底是继承还是组合(聚合),如同积木中的卡扣,可能有多种卡扣连接形式
UML肯定不会向积木那样简单,所以自然还会有很多的规则、限制、要求,这些一起构成了完整的UML
实现关系是带空心箭头的虚线表示的,比如A实现B,箭头指向父类、接口
![image_5bdfa952_5816 image_5bdfa952_5816](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
实现可以狭隘的认为是一种实现类与父类、接口的关系(其实在UML中实现的含义远不止实现类这层含义)
聚合关系是带空心的菱形的直线表示的,比如 A聚合到B上,也就是B由A组成
![image_5bdfa952_4f4a image_5bdfa952_4f4a](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
聚合关系用于类图,表达整体由部分构成的语义,比如部门由许多人员组成
整体和部分不是强依赖的,即使整体不存在,依然可以存在部分,即使没有部门,人员仍旧存在
组合关系是带实心的菱形的直线表示的,比如A组合成B,或者说B由A构成
![image_5bdfa952_57ed image_5bdfa952_57ed](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
表达整体拥有部分的含义,组合关系是一种特殊的强依赖的聚合关系
如果整体不存在,那么部分也不存在了
比如,汽车由轮胎底盘发动机构成,汽车不存在了,自然也不存在发动机了
依赖关系使用带箭头的虚线表示,比如 A依赖B
![image_5bdfa952_5dfc image_5bdfa952_5dfc](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
用于描述一个对象在运行期间会使用到另外一个对象的关系
依赖关系是一种临时性的,简言之就是不同场景会发生变化
比如人和车
如果是驾驶场景,车依赖人(驾驶员),如果是乘车出行,那就是人依赖车(公交、出租)
很显然,依赖关系比关联关系更加弱
依赖关系是一种使用关系
比如一个类的方法中的局部变量、方法的参数或者对静态方法的调用,都是一种依赖
本文简单介绍了UML的历史以及组成部分,目的不在于详细介绍UML,只在于能够读懂以及绘制类图
UML建模工具就如同“实现类”一样,细节上有差异也很正常,很多软件也可以调整显式的式样,比如StarUML就可以
1997年,OMG 组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML)
将面向对象程序设计中的元素进行抽象,比如类还是接口,UML中称之为事物,就如同积木的基础形状
将元素之间的联系关系进行抽象,比如到底是继承还是组合(聚合),如同积木中的卡扣,可能有多种卡扣连接形式
UML肯定不会向积木那样简单,所以自然还会有很多的规则、限制、要求,这些一起构成了完整的UML
实现关系是带空心箭头的虚线表示的,比如A实现B,箭头指向父类、接口
![image_5bdfa952_5816 image_5bdfa952_5816](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
实现可以狭隘的认为是一种实现类与父类、接口的关系(其实在UML中实现的含义远不止实现类这层含义)
聚合关系是带空心的菱形的直线表示的,比如 A聚合到B上,也就是B由A组成
![image_5bdfa952_4f4a image_5bdfa952_4f4a](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
聚合关系用于类图,表达整体由部分构成的语义,比如部门由许多人员组成
整体和部分不是强依赖的,即使整体不存在,依然可以存在部分,即使没有部门,人员仍旧存在
组合关系是带实心的菱形的直线表示的,比如A组合成B,或者说B由A构成
![image_5bdfa952_57ed image_5bdfa952_57ed](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
表达整体拥有部分的含义,组合关系是一种特殊的强依赖的聚合关系
如果整体不存在,那么部分也不存在了
比如,汽车由轮胎底盘发动机构成,汽车不存在了,自然也不存在发动机了
依赖关系使用带箭头的虚线表示,比如 A依赖B
![image_5bdfa952_5dfc image_5bdfa952_5dfc](http://blog.ytso.com/zb_users/plugin/LazyLoad/usr/loading.gif)
用于描述一个对象在运行期间会使用到另外一个对象的关系
依赖关系是一种临时性的,简言之就是不同场景会发生变化
比如人和车
如果是驾驶场景,车依赖人(驾驶员),如果是乘车出行,那就是人依赖车(公交、出租)
很显然,依赖关系比关联关系更加弱
依赖关系是一种使用关系
比如一个类的方法中的局部变量、方法的参数或者对静态方法的调用,都是一种依赖
本文简单介绍了UML的历史以及组成部分,目的不在于详细介绍UML,只在于能够读懂以及绘制类图
UML建模工具就如同“实现类”一样,细节上有差异也很正常,很多软件也可以调整显式的式样,比如StarUML就可以
相关文章
- 程序员该知道大型网站架构的发展历程吗?如何有效地增加服务器?
- 如何打开做大型项目的技能?程序员分解能力的提升【程序员003】
- 从程序员到架构师,我是如何快速成长的?
- docker 如何制作django的docker镜像详解程序员
- linux中如何在user目录下查找大小超过10M的文件详解程序员
- DEDECMS如何修改数据库密码以及忘记了后台密码怎么办详解程序员
- 工作中如何做好技术积累详解程序员
- git如何新建分支详解程序员
- 问题:如何对两个文件夹中的文件进行对比详解程序员
- pthread_create如何传递两个参数以上的参数详解程序员
- IPTables系列:如何配置Ubuntu 14.04中的IPTables防火墙详解程序员
- 如何解决make: Nothing to be done for `all’ 的方法详解程序员
- Linux中如何解压iso类型文件详解程序员
- Linux 如何开放端口和关闭端口详解程序员
- 如何实现网站的防盗链详解程序员
- 如何在同一系统里同时启动多个Tomcat详解程序员
- 如何学习数据分析详解程序员
- 如何成为个有理想的程序员详解程序员
- 如何炼成优秀的程序员详解程序员
- 如何利用Python预测股票价格详解程序员
- 程序员未来10年的前景如何?
- 如何成为一名开源程序员