0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UML精准入门指南1

jf_78858299 来源:蜗牛互联网 作者:蜗牛互联网 2023-05-05 11:16 次阅读

一、前言

谈到面向对象技术的分析和设计,自然就离不开 UML。对于 UML 这个概念,很多程序员朋友耳熟能详,也有在用,但在工作中,一些朋友其实并不擅长使用 UML 甚至对 UML 这个东西模棱两可,也包括我自己。因此我希望可以结合自己的经验和实践,写一篇 UML 的入门文章,帮助做面向对象的程序员朋友能更好的利用它,从而顺利完成自己的编程设计工作。

以下是本文大纲。

图片

二、从一个示例开始

先举个现实世界的例子。我们上大学的时候,作为学生,每人都有一张学生证,会归属到一个班级,上学时可能会用到自行车。很多同学还会考驾照,挑放假时间练车,车可能是轿车也可能是皮卡。

如果想通过在线的方式记录以上的信息和行为,在软件世界中如何表达呢?

相信很多朋友的操作是,找到这段话里的主语和宾语,也就找到了这个例子中涉及的角色,然后通过动词来判断各个角色之间的关系和能力,最后用代码的方式来表达,产出可执行的程序。

像下图这样,识别出关键的实体和它们之间的关系。

图片

用软件工程的方式,解决现实中的问题,是信息时代最明显的特点,这让我们的生活和工作变得更加便利。

但现实世界错综复杂,灵活多变,每个人的理解可能会有不同,从现实世界到软件世界的映射,就变得困难重重,一团乱麻。

如何让现实世界到软件世界映射变的简单容易,这就是 UML 要解决的问题。

三、什么是 UML?

UML 全称是 Unified Modeling Language(统一建模语言),它以图形的方式来描述软件的概念。

3.1 为什么称为语言

先说语言,为什么称为语言?

名称的落脚点是语言。既然是语言,那么它就会具备语言的特性,比如结构上它由词汇和语法构成,功能上它能解决沟通问题。

你熟知的语言里比较多的应该是汉语和英语,如果从事软件行业,C 语言和 Java 语言你应该也不会陌生。英语和 Java 语言明显都是语言,却常常不被放在一起讨论,为什么?因为它们是不同维度的语言。英语是解决现实世界中人与人之间沟通问题的人类语言,Java 是解决软件世界中程序员与计算机之间沟通问题的计算机语言。

人类语言本质上是事实和观点的表达,计算机语言本质上是0 和 1 的表达。前者的表达形式是难以确定的,而且可能会产生歧义,所以才会有「被误解是表达者的宿命」这样的观点, 但后者就是确定性无歧义的 0 1 表达。

这么看来,UML 的目标是通过一定结构的表达,来解决现实世界到软件世界的沟通问题。

3.2 什么是建模

再说建模,模是什么,需要怎么建?

建模简单讲,是指通过抽象的方式解决某个领域的问题。各个抽象角度共同组成了一个问题领域。

图片

对于传统模型而言,建造它是为了证明这个问题领域下某件事物能否工作。当然它有前提,即建造模型的成本远远低于建造实物的成本。比如造飞机或造高楼。

对于软件模型而言,建造它是为了与他人沟通,也为了保存这个问题领域下软件设计的最终成果。当然它也有前提,就是模型比代码更说明问题。

比如购物这个问题,甲可以在淘宝上买衣服,乙可以在亚马逊上买书,丙可以在京东上买手机

谁买东西?是甲、乙和丙,他们都能抽象成人。

买什么东西?有衣服、书和手机,它们都能抽象成货。

在哪里买?在淘宝,亚马逊和京东,它们都能抽象成场。

整体抽象一下就是人到场里买货。所以购物这个场景所抽象出来的人货场,就用来解决零售领域的问题。当然还可能会有些规则,比如成为注册会员才能发生交易。

我们会发现,一个特定的事件(比如购物)里,会有特定的人的行为(比如甲乙丙要上电商网站),会有特定的物(比如货),有特定的规则(比如注册会员),共同完成购物这件事。

特定的事 = 特定的人的行为 + 特定的物 + 特定的规则

在人货场这个抽象角度里,就会涉及到很多特定的事,包括会员注册,会员下单,会员支付,商家发货,快递公司邮寄等等。

图片

模简单讲,就是人、事、物和规则。

人是一切的中心,人要做事,做事就会使用一些物并产生另一些物,同时做事需要遵循一定的规则。

人驱动系统,事体现过程,物记录结果,规则是控制。

建立模型的关键就是弄明白有什么人,什么人做什么事,什么事产生什么物,中间有什么规则,再把人、事、物之间的关系定义出来,一个模型也就基本成型了。

3.3 统一的意义在哪

统一的普遍意义是形成标准。所谓标准,就是所有人都明白的表述,所有人都遵从的格式。标准可以让信息在人群中无障碍地流通,即使这些信息来自不同地域、不同文化、不同社会或不同组织。

比如美元作为国际统一使用的货币方便了全球的经济贸易,我们国家普及普通话方便了不同地区的交流沟通。

在软件世界,任何一种组件化开发模式背后都有一个标准在规范和指导,比如 Java 的 JSR 标准。有了标准,编程就容易组件化,协作效率也会提升很多。对 UML 来说,这就是统一的意义。

四、为什么需要 UML

一个软件项目要经历业务调研、立项、需求采集、架构设计、编码开发和测试验证等多个环节。

每个环节可能角色并不相同,同样的文档同样的话语越向后传递就越容易失真。因此就容易出现最终交付的产品不是客户真正想要的这种情况。

如何避免角色间信息传递的失真,保证信息能被准确的传达和准确的理解?一种好的办法就是大家使用标准化的语言。

统一建模语言(UML)就试图用标准化的语言来覆盖整个软件过程,让不同团队不同角色可以用相同的语言顺畅的沟通。

在信息传播方面,图形相对于文字,人脑的接受能力显然更强。因此,UML 采用了「可视化」的图形方式来定义语言。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UML
    UML
    +关注

    关注

    0

    文章

    122

    浏览量

    30753
  • 面向对象
    +关注

    关注

    0

    文章

    64

    浏览量

    9923
  • 编程设计
    +关注

    关注

    0

    文章

    9

    浏览量

    6410
收藏 人收藏

    评论

    相关推荐

    UML中类图详解

    UML
    电子学习
    发布于 :2023年01月14日 10:12:47

    Gowin GW1NRF入门指南(EN)

    Gowin GW1NRF快速入门指南(EN)
    发表于 10-14 06:33

    火币HADAX为何要取消准入门

    而如今,这些都不是问题啦。在已经进行了5轮投票,规则也进行了三次变更的前提下,后续还引入超级投票节点对项目进行初审,HADAX投票上币社区化的规则已经趋于完善,这个时候取消HADAX的投资者准入门槛,让火币Pro的所有用户均可以在HADAX交易,时机已经成熟,而且是最佳时机。
    发表于 01-08 13:37 973次阅读

    PSCOPE快速入门指南

    PSCOPE快速入门指南
    发表于 05-23 20:22 5次下载
    PSCOPE快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    TileLib 快速入门指南

    TileLib 快速入门指南
    发表于 03-13 19:14 0次下载
    TileLib 快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨 R8C/2F 入门套件快速入门指南

    瑞萨 R8C/2F 入门套件快速入门指南
    发表于 04-27 19:07 0次下载
    瑞萨 R8C/2F <b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨入门套件 LCD 应用板快速入门指南

    瑞萨入门套件 LCD 应用板快速入门指南
    发表于 04-28 18:44 0次下载
    瑞萨<b class='flag-5'>入门</b>套件 LCD 应用板快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    Renesas 7542入门套件快速入门指南

    Renesas 7542 入门套件快速入门指南
    发表于 04-28 19:42 0次下载
    Renesas 7542<b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨 3803L 入门套件快速入门指南

    瑞萨 3803L 入门套件快速入门指南
    发表于 04-28 19:42 0次下载
    瑞萨 3803L <b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    瑞萨 38D5 入门套件快速入门指南

    瑞萨 38D5 入门套件快速入门指南
    发表于 04-28 19:43 0次下载
    瑞萨 38D5 <b class='flag-5'>入门</b>套件快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    UML精准入门指南2

    我自己。因此我希望可以结合自己的经验和实践,写一篇 UML入门文章,帮助做面向对象的程序员朋友能更好的利用它,从而顺利完成自己的编程设计工作。
    的头像 发表于 05-05 11:17 623次阅读
    <b class='flag-5'>UML</b><b class='flag-5'>精准入门</b><b class='flag-5'>指南</b>2

    UML精准入门指南3

    我自己。因此我希望可以结合自己的经验和实践,写一篇 UML入门文章,帮助做面向对象的程序员朋友能更好的利用它,从而顺利完成自己的编程设计工作。
    的头像 发表于 05-05 11:17 590次阅读
    <b class='flag-5'>UML</b><b class='flag-5'>精准入门</b><b class='flag-5'>指南</b>3

    TileLib 快速入门指南

    TileLib 快速入门指南
    发表于 07-04 20:32 0次下载
    TileLib 快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    LABVIEW与CRIO入门指南

    LABVIEW与CRIO入门指南
    发表于 07-26 18:17 8次下载

    SYDTEK入门指南-2021

    SYD8811入门指南
    发表于 07-11 16:39 0次下载