前言:

工程图纸对于工程师的重要性就不需要我多说了吧,对事物建模也是很重要的。我们在软件工程部分说过“建造一个狗窝和一栋大厦是完全不一样的”,很多时候如果你有很好的idea,但是对于需求分析、详细设计等模糊其次,终究也只是一个idea而已。如果你掌握了软件工程和UML建模的设计方法,那么这些idea都会变成图纸或者文档,需要用什么技术来实现一目了然。当然,UML追求的最终目标就是程序员不再写代码,而是通过建模直接生成代码......好吧,实现与否还不知道,我先预定一下位置。


一、目标

希望本篇文章可以让读者获益以下几点:

  • 明白UML是什么,不是什么,以及为什么UML对于开发软件密集型系统的过程非常重要。
  • 掌握UML的术语、规则和惯用法,一般来说,还将学会如何有效的使用这种语言。
  • 知道如何应用UML去解决许多常见的建模问题。

这里提供UML用户指南第二版目录(作者[美]Grady Booch   James Rumbaugh  Ivar Jacobson)

第一部分  入门

1、为什么要建模

2、UML介绍

3、Hello,World!

第二部分 对基本结构建模

4、类

5、关系

6、公共机制

7、图

8、类图

第三部分 对高级结构建模

9、高级类

10、高级关系

11、接口、类型和角色

12、包

13、实例

14、对象图

15、构建

第四部分 对基本行为建模

16、交互

17、用况

18、用况图

19、交互图

20、活动图

第五部分 对高级行为建模

21、事件和信号

22、状态机

23、进程和线程

24、时间和空间

25、状态图

第六部分 对体系结构建模

26、制品

27、部署

28、协作

29、模式和框架

30、制品图

31、部署图

32、系统和建模

第七部分 结束语

33、应用UML

上面的目录你快速浏览一遍就好,对我来说,UML的学习就分为两部分:相关概念和画图。其实只要掌握这来两部分,结合之前面向对象设计和项目文档设计的知识,很快就可以get到里面的知识点。对之后的项目开发会有很大的帮助。


二、相关概念

UML的构造块:(1)事件;(2)关系;(3)图 ,所以接下来我们就通过这三个构造块展开相关概念。

(一)UML中的事件

UML中有4中事物:结构事物、行为事物、分组事物、注释事物。

1、结构事物

结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念元素或物理元素。结构事物总称为类目。

第一,类(class)是对一组具有相同属性、相同操作、相同关系和相同语义的对象的描述。类实现一个或多个接口。在图形上,把类图画成一个矩形,矩形中通常包括类的名称、属性和操作。

第二,接口(interface)是一组操作的集合,其中的每个操作描述了类或构件的一个服务。

第三,协作(collaboration)定义了一个交互,它是由一组共同工作以提供某种协作行为的角色和其他元素构成的一个群体,这些协作行为大于所有元素的各自行为的总和。

第四,用况(use case)是对一组动作序列的描述,系统执行这些动作将产生对特定的参与者有价值而且可观察的结果。

第五,主动类(active class)是这样的类,其对象至少拥有一个进程或线程,因此它能够启动控制活动。

第六,构件(component)是系统设计的模块化部件,将实现隐藏在一组外部接口背后。

第七,制品(artifact)是系统中物理的而且可替代的部件,它包括物理信息(“比特”)。

第八,节点(node)是在运行时存在的物理元素,它表示一个计算机资源,通常至少有一些记忆能力,还经常具备处理能力。

2、行为事物

行为事物是UML模型的动态部分。它们是模型中的动词,代表了跨越时间和空间的行为。共有3类主要的行为事物。

第一,交互(nteraction)是这样的一种行为,它由特定语境中共同完成一定任务的一组对象或角色之间交换的消息组成。

第二,状态机(state machine)是这样一种行为,它描述了一个对象或一个交互在生命期内响应事件所经历的状态序列以及它对这些事件作出的相应。

第三,活动(activity)是这样一种行为,它描述了计算工程执行的步骤序列。

3、分组事物

分组事物是UML建模的组织部分。它们是一些由建模分解成的“盒子”。主要的分组事物是包。

包(package)是用于对设计本身进行组织的通用机制,它与类不同,它是用来组织实现构造物的。

4、注释事物

注释事物是UML模型的解释部分。

(二)UML中的关系

UML中有4种关系:依赖、关联、泛化、实现。

第一,依赖(dependency)是两个模型元素间的语义关系,其中一个元素(独立元素)发生变化会影响另一个元素(依赖元素)的语义。在图形上,把依赖画成一条可能有方向的虚线,有时还是带有一个标记。

第二,关联(association)是类之间的结构关系,它描述了一组链,链是对象(类的实例)之间的连接。聚合是一种特殊类型的关联,它描述了整体与部分间的结构关系。在图形上,把关联画成一条实线,它可能有方向,有时还带有一个标记,而且它还经常含有诸如多重性和端名这样的修饰。

第三,泛化(generalization)是一种特殊/一般关系,其中特殊元素(子元素)基于一般元素(父元素)而建立。用这种方法,子元素共享了父元素的结构和行为。在图形上,把泛化关系画成一条带有空心箭头的实线,该实线指向父元素。

第四,实现(realization)是类目之间的语义关系,其中一个类目指定了一个由另一个类目保证执行的合约。在两种地方会遇到实现关系:一种是在接口和实现它们的类和构件之间;另一种是在用况和实现它们的协作之间。在图形上,把实现关系画成一条带有空心箭头的虚线,它是泛化和依赖关系两种图形的结合。

(三)UML中的图

1、类图(class diagram)展示了一组类、接口、协作和它们之间的关系。

2、对象图(object diagram)展示了一组对象及其它们之间的关系。

3、构件图(componet diagram)展示了一个封装的类和它的接口、端口以及由内嵌的构件和连接件构成的内部结构。

4、用况图(use case diagram)展示了一组用况、参与者以及它们之间的关系。

5、交互图(interaction diagram---顺序图和通信图都是交互图)展示了一种交互,它由一组对象或角色以及它们之间可能发送的消息构成。

6、状态图(state diagram)展示了一个状态机,它由状态、转移、事件和活动组成。

7、活动图(activivy diagram)将进程或其它计算的结构展示为计算内部一步一步的控制流和数据流。

8、部署图(deployment diagram)展示了对运行时的处理结点以及在其中生存的构件的配置。

9、制品图(artifact diagram)展示了计算机中一个系统的物理结构。

10、包图(package diagram)展示了由模型本身分解而成的组织单元以及它们的依赖关系。

11、定时图(timing diagram)是一种交互图,它展示了消息跨越不同对象或角色的实际时间,而不仅仅是关心消息的相对顺序。

(四)公共机制

为了更好的组合上面的构件,所以就有了公共机制:规约;修饰;通用划分;扩展机制。


三、各种图形例子

1、类图

2、用况图

3、交互图

4、活动图

5、状态图

6、接口、组件、部署图


总结;

从概念中来,到画图中去。我们将所学到的UML知识用到面向对象的编程中去,用到java设计中去,多练习理解才会更加深刻。上面的图形知识从以往我的图形中截取的,如果对你有帮助,点个赞呗,谢谢。

整理UML建模概念和图形~(啥?程序员不再写代码,变成画图工程师?)相关推荐

  1. 技术总监谈好的程序员如何写代码[转]

    技术总监谈好的程序员如何写代码[转] 要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码.          即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的 ...

  2. 卖掉 3000 平房子,50 岁程序员回国写代码,三个月内融资 2000 万美元

    2019年7月12日,10多万行C代码的中国物联网大数据平台 TDengine 在 GitHub开源,立即冲上 GitHub 榜首,整整五天霸榜 GitHub.目前该项目在 GitHub 上 Star ...

  3. 哪款笔记本电脑最适合程序员学习写代码?结果我竟无言以对

    话题内容转自:哪款笔记本电脑最适合程序员学习写代码?结果我竟无言以对 今天小编在网上看到网友们讨论什么样的电脑最适合程序员学习写代码?小编根据前两天发的那篇了解腾讯华为员工生活状况的文章,心想肯定是M ...

  4. 技术总监谈好的程序员如何写代码

    要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码. 即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的程序员写的代码基本上就可以看出来.好的程序员写的代码,整 ...

  5. 好的程序员如何写代码

    要判断一个程序员是不是好的程序员,主要看他写的代码,因为程序员最重要的事是写代码. 即便不去理解代码的意图,只要看一眼,好的程序员写的代码与差的程序员写的代码基本上就可以看出来.好的程序员写的代码,整 ...

  6. 【人物】一个程序员决定写代码到60岁

    重要也更深远的意义或许在于,阳振坤的存在创造了一种新的生态.他颠覆了时下困扰这个行业的「35岁危机」:一个程序员必须在35岁之前跻身进入管理层,否则将无法以技术身份立足,年长的技术人员意味着贬值.淘汰 ...

  7. 停电后程序员怎么写代码 | 每日趣闻

    戳一戳小程序查看更多! 往 期 趣 闻 ☞程序员头发失踪之谜 | 每日趣闻 ☞程序员的起床动力 | 每日趣闻 ☞编程有多可怕 | 每日趣闻 ☞除了码农,你还想做什么?| 每日趣闻 ☞程序员的成长过程 ...

  8. 程序员天天写代码,如何拓展社交圈?

    作为一个程序员,天天忙着写代码,周末又宅在家中,如何拓展有效社交圈?这不仅仅是程序员的面临的问题.今天就聊聊自己在这方面的感悟. 社交圈的固化 无论是否是程序员,大家的社交圈越来越固化,特别是疫情之后 ...

  9. 程序员除了写代码还能怎样赚钱?

    程序员如何在工作之余赚点外快, 详情请看本人的另一篇博客文章https://blog.csdn.net/qq_35661171/article/details/80228941点击打开链接 花生日记最 ...

最新文章

  1. Linux futex 快速同步互斥机制简介
  2. Poj 2284 That Nice Euler Circuit
  3. 关于迷笛音乐节的重大通知-_-
  4. 采用vue-cli安装的一些注意点
  5. Ajax基本案例详解之$.ajax的实现
  6. 钉钉机器人关键词应答_除了用于电销,智能语音机器人可以应用哪些地方?
  7. webapi 路由限制命名控件_解决Web API路由配置支持Area及命名空间参数
  8. 电脑时钟倒计时_倒计时久坐休息提醒工具
  9. *第十一周*数据结构实践项目一【二叉树的层次遍历算法】
  10. Protobuf 判断某个值是否在一个枚举值中
  11. java中如何实现货币兑换_java货币转换
  12. macbook运行移动硬盘中windows及bootcamp下载出错问题的解决
  13. Java常用框架有哪些?
  14. 5V转±12V无变压器双boost电路
  15. php敏感代码屏蔽,PHP敏感词汇屏蔽或替换
  16. 软考中级软件设计师-加密技术(自用)
  17. V2VNet: Vehicle-to-Vehicle Communication for Joint Perception and Prediction
  18. maven 多模块项目如何导入其他模块的第三方 jar 包
  19. 设计要用计算机吗,作为设计师 你需要这样的笔记本电脑
  20. 微信小程中文特殊字符编码与解码

热门文章

  1. Z-score 与 Fisher-Z 的区别
  2. 【项目管理】项目选择与项目章程
  3. 用 Delphi 学设计模式 之 简单工厂篇- -
  4. Altium Designer 2023介绍
  5. 【优化】梯度下降 收敛性 证明
  6. UVM TLM2: SystemC和SV 通信
  7. 学习C++编程的必备软件
  8. vue中iframe的使用
  9. MySQL连接查询练习
  10. 全景分割(Panoptic Segmentation)(CVPR 2019)