我经常陷入深思,个人女友为何又生气了?是麻辣烫很差吃,仍是韩剧很差看。直到有一天,她和我说,我知道你说xxx是为了我好,也颇有道理,但你这样的表达让我瞬间不想理你。我想你们也有相似的经历。不少时候,咱们明明出于好心,但因为不会表达,反而拔苗助长。程序员
学会表达是一件很重要的事情。生活中,良好的表达让亲人、伴侣和朋友间的关系更融洽;工做中,团队内的表达关系着工做效率;展现时的表达影响着项目最终评定,甚至连你毕业时的论文答辩、职级晋升时的考核也考验着你的表达能力。编程
软件开发亦是如此。大中型软件系统开发工做通常须要大量的软件开发人员统一协做工做,有时开发周期还很长。做为一名合格的程序员,如何理解前辈们设计好的框架和已完成的工做,并让别人快速准确的读懂你写的代码,是一件很重要的事情。所以,本文旨在介绍软件系统的建模和表达方法。框架
UML(Unified Modeling Language)统一建模语言,又称标准建模语言,是用于软件系统在开发阶段的可视化建模。因为软件系统开发须要通过面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)三个阶段,而每一个阶段都须要统一的符号设计描述和交流。而UML做为一种通用语言,能有效消除没必要要的差别,从而为许多开发人员普遍使用。分布式
本文将介绍UML基本概念、特色、种类和应用。工具
UML是在软件开发阶段,说明、可视化、建构和书写一个面向对象软件系统的的方法,其目标是以面向对象图的方式来描述任何类型的系统,具备很宽的应用领域。一方面能够对任何具备静态结构和动态行为的系统进行建模,另外一方面适用于系统不一样开发阶段,利于系统后期的测试和维护。学习
UML在系统开发中有三个主要模型,如图3-1。测试
2.1类图:描述系统中类的静态结构的图设计
2.2包图:对构成系统的模型元素进行分组整理的图3d
2.3对象图:系统中的多个对象在某一时刻的状态。对象
2.4构件图:一种描述系统的静态实现的图
2.5部署图:定义系统中软硬件的物理体系结构的图
2.6组合结构图:表示类或者构建内部结构的图
3.1顺序图:对象之间的动态合做关系,强调对象发送消息的顺序,同时显示对象之间的交互
3.2活动图:描述了业务实现用例的工做流程
3.3状态图:是描述状态到状态控制流
3.4时序图:表示生命线状态变化的图
3.5交互概览图:用活动图来表示多个交互之间的控制关系的图
3.6协做图:描述对象之间的协助关系
根据平时的使用频率,本文着重介绍UML类图。面向对象软件中的基本单元是类,描述类的内部结构和类与类之间的关系,是一种静态结构图。UML类图用三个矩形表示,最上边部分为类的名称,中间部分为类的属性,最下边部分为类的方法,如图4-1。
图4-1
常见类图有如下几种关系:泛化(Generalization),实现(Realization),组合(Composition),聚合(Aggregation),关联(Association),依赖(Dependency)。
关系名称 | 含义 | 举例 | 表示方法 |
泛化 | 即继承,通常与特殊的关系 | 汽车和自行车泛化于交通工具 | 带三角箭头的实线,箭头指向父类。如图4-2。 |
实现 | 即接口,表示类是接口全部特征和行为的实现 | 汽车的前行经过驾驶 | 带三角箭头的虚线,箭头指向父接口。如图4-3。 |
组合 | 总体与部分的关系,但部分不能离开总体而单独存在 | 公司是总体,部门是部分 | 带实心菱形的实线,菱形指向总体。如图4-4。 |
聚合 | 总体与部分的关系,且部分能够离开总体而单独存在 | 汽车是总体,玻璃窗和轮胎是部分 | 带空心菱形的实线,菱形指向总体。如图4-5。 |
关联 | 一种拥有的关系,组合和聚合都属于关联关系 | 汽车拥有前进目的地 | 带普通箭头的实线,指向被拥有者。如图4-6。 |
依赖 | 一种使用的关系,一个类的实现须要另外一个类的协助 | 汽车的运动依赖汽油 | 带普通箭头的虚线,箭头指向被依赖者。如图4-7。 |
图4-2
图4-3
图4-4
图4-5
图4-6
图4-7
本文粗浅的介绍了UML的基本概念、分类和简单应用。为了帮助你们深刻学习,本文给你们推荐《UML用户指南》(第2版),该书详细介绍了软件系统的基本结构、高级结构、体系结构、基本行为和高级行为的建模方法,适用于进行软件开发、部署和维护人员。关注公共号,后台回复UML便可获取电子版书籍。
申明:本文属于小编平时学习的心得和总结,不当之处欢迎你们批评指正。