先来点感情输出,毕竟是自己第一次发这些东西,觉得自己存着没啥意思,想着要不就找个平台发这些东西,既可以在简历上画上一笔,也可以给自己提供一下复习的材料,还可以有一个每天简短的小目标i,想着今天的小博客需要补充什么会比较好,就会比较努力的学习。
先从UML这个名字起,Unified Modeling Language.翻译过来就是统一建模语言。一开始挺听到UML的时候以为是一个软件,但其实这是一种看事物的方法。写过代码的人都会比较注重逻辑顺序。并不是这些人本身的逻辑顺序很强,而是因为逻辑顺序有有问题整个程序可能会出现很奇怪的运行。今天第三天的学习,但是我只是看了两天的UML视频。但是仅仅两天的学习我就能够了解到UML的强大能力。首先我们从为什么要建模这个角度开始
为什么要建模。我在此之前的理解是为了更好的调试参数。有模型能够调试参数比实物调试更方便,有建模和算法的支持就不会那么没有目的的调试。之后我的理解就是建模也是为了能够更好的和别人交流,合作我想要做的东西。就像盖房子需要图纸一样,没有图纸,很难让别人很清楚的知道你想要的房子是怎么样的。还有就是建模能够让自己更清晰的认识自己想要做的东西是什么。像我这种七秒钟的记忆的人,我写代码或者做排错的时候,没做一步我都会问自己我想要做什么,一来是可以明确自己的目的,二来也是对抗我做着做着事情忘记为什么这么做的毛病。
总之建模的目的或者说帮助就是1.更好的和别人交流。2.更好的和自己交流。
再次从UML的原则入手。
(一)建设怎么样的模型
建模从来就不是简单的事情,建模的本意就是想把整个东西高度抽象出来,怎么高度抽象出来就需要自身看这件事物的角度或者说看法。比如蝙蝠吧,如果想要研究或者做出人家的飞行能力的东西,那么建模或者说高度概括就需要对空气流动或者翅膀大小等等这些信息下手,提炼成一个模型。如果想要知道人家怎么在黑暗中飞行,就需要了解蝙蝠内部发声的结构等等,提炼这些作为一个模型。其实就是一个飞机一个雷达,当然这是前人们给我们概括什么做出了这样一个东西。只能说佩服前任们的实力。
总之第一个原则就是想要自己确定好自己想要做的东西,明确哪些应该舍弃,那些是必要。
(二)每一个模型都可以在不同的精度上表示
理解不深,不能很明确的知道这个原则产生的原因
(三)建模需要和现实相关联
这个原则大概就是想说理论和实际的差别的这种感觉。就像玩游戏吧,这个好理解。如果是你自己用电脑键盘控制一个角色,只需要按一个键自己就会发出技能,如果是VR的话需要自己有一定的肢体动作。这个比如有点抽象,在说一个工程的吧。在做电机控制的时候,我们建立的模型是不会有单片机上电一段时间之后醒过来,电机需要启动一段时间才能启动过来这些事情发生,而实际却有比这些还要多的事情发生。但如果我们不考虑这些事情,建模的结果或者过整个建模对我们指导的效果会大打折扣。
总之所有的模拟和建模都是为了实际物品的产生做贡献的,要尽量能够模拟现实的情况。
(四)单个模型是不充分的
这是我觉得UML让我眼前一亮的事情。就像我相信的任何人和人之间的交流不能够一次就能理解一样。事物也不是一个方向就能够了解全面的。自动控制原理给了好多种维度的坐标轴给我们了解这个信号。UML也给了我们很多种图或者或是模型给我们建立。让我们从多方面了解这个事物。更功利点说,我觉得就是为了达到我们的目的,把这个事物的我们需要的那个方向上的目的切分出来建立模型,给我们这个方向上的指导。越说越玄乎。
总之一个图是描述不好的,根据自己的目的去建立不一样的图,那么图里面暴露出来的信息你会更喜欢。
在介绍UML各种模型的之前,先放一些UML中常用的图形表示方式:
用例模型
用例模型:捕获用户需求的一种模型。
构成:参与者,边界,用例,关系,构成用例图。用例描述:用来解释用例图。
例子:
活动图
活动图:捕获需求
构成:活动,泳道,分支,转移,
例子:
类图
类图:静态图
构成:类,关联解释等
例子:
顺序图
顺序图:动态图和类图相互辅助(交互图)
构成:对象,消息
特别的:可选执行(opt)条件执行是(alt)并行执行(par)循环执行(loop)
例子:
通讯图
通讯图:对象和对象之间的交流
例子:
状态图
状态图:考察单个实体的动态行为。
概念或者构成或者部分:状态的名称,进入和退出的动作,内部迁移,子状态,延迟事件。
例子:
每个图还需要深刻的理解,目前就到这里