本文主要讲解uml的一些入门知识。

uml:统一建模语言,uml通过图形化的表达对系统进行细致的划分,在开发前期有助于开发人员与开发人员之间交流,同时也能方便用户与开发者之间进行良好的反馈。利用uml进行建模是有效的方法是使用面向对象的软件开发方法。面向对象的核心思想是根据现实世界中的具体事物来构建软件系统,并在系统中尽可能的使用人类的自然思维方式。并根据事物的本质特征将其抽象为系统中的对象,以对象作为系统的基本构成单元。

uml由基本构造块,规则,通用机制三部分组成。

在用uml建模过程中常用的图有:用例图(use case diagram),类图(class diagram),顺序图(sequence diagram),状态图(state diagram)。各种图之间的关系如下:

一.用例图,用例图从用户的角度描述系统的功能,所以在对系统的需求分析是经常用到该图,用例图也是软件建模其他部分的基础。用例图通常由四个部分组成:系统,用例,关系,参与者。

1.系统由用户执行功能是需要使用的软件(集)构成,系统在用例图中用一个长方框表示,系统的名字被写在方框上面或方框内,在建立系统的过程中需要注意的几点:(一)系统的边界:系统的边界即可以理解为用例图的使用范围(二)系统的规模在最初可能无法确定,所以在建立系统的初期我们经常利用系统的核心功能,然后在以此为基础逐渐拓展系统的功能。

2.参与者,表示使用系统的对象,是系统外的一个实体,参与者不仅仅是对人而言,也可以是一个计算机系统,或者另一个系统,我们只需牢记他的特点即可:作为外部用户与系统进行交互

3.用例,用例的英文名是:use case,我们可以理解为可以“能用来做什么”,每个用例说明系统具有的一个功能。(如查询成绩,保存成绩)

4.关系,直接理解其字面意思即可,表示参与者与用例之间的通信,这种通信是双向的。

下面来讲解一下用例图各个部分之间的关系的表示方法

1.参与者与用例之间:不带箭头的实线,就是那种单纯的一根线

2.参与者与参与者:用一端为空心的三角箭头表示,箭头的意义可以理解为"归属于"

3.用例与用例:用例与用例之间的关系可以分为两种:泛化与依赖,其中依赖关系可以分为包含关系与扩展关系两类。

泛化关系用来表示一般用例与特殊用例之间的关系,一种继承关系,表示子类是如何特化父类的特征与行为,用一端带有空心三角箭头的线表示。

包含:一个用例包含另一个用例,用虚线线头表示,线上需要标注《include》。基用例并非一个完整的用例,必须和子用例一起才能完成一项功能。

扩展:一个用例的行为扩展了另一个用例的行为,用虚线表示,线上用《extend》标注。基用例本身就是一个完整的用例,可以单独完成一项功能。

包含于扩展较难区分,下例中销户必须有结算的参与,所以用include关系,而停机提醒是可选的,所以用extend关系。

下文讲解用例图需要做的四件事情:确定参与者与用例;细化用例;区分用例的次序;建立用例图模型结构。

1.确定参与者与用例。参与者的确定思路:谁会用这个系统,谁会维护这个系统,谁会跟这个系统进行信息交流,细心的将这几个问题的答案给出来基本就可以确定参与者了。

确定用例的思路:结合上一步确地的参与者,我们可以进一步列出这些参与者的用例清单,在列清单是可以借助这几个问题:参与者要干嘛(创建,删除,插入,更新)?,系统的基本功能需要哪些用例来实现。下面结合学生管理系统这个例子讲解:

参与者:老师,学生,管理员,结合这些参与者可以确定的用例:查询成绩,更改成绩,浏览成绩等。

2.区分用例的先后次序:有些用例必须在其他用例之前执行,因为他们之间的一些依赖关系。

3.细化用例:这个环节需要更加具体的分析如何提供服务,包括服务的具体功能,异常情况的处理措施,处理流程。用例的描述可以利用建立表格来文字描述,当然也可以用UML 

4.构建用例图模型:将前几个步骤得出的具体内容(细化了的用例与参与者,关系)加在用例图上得出具体的用例图模型。  

二.类图:类图用来描述类,接口,以及他们之间的关系的图,他显示系统中各个类的静态结构。类的组成:类,关联/关系。类的定义:具有相同属性和方法的一组对象的集合。比如“学生”这个类,而成绩,学号就是这个类的属性。

类图之间的关系:关联,依赖,聚合,泛化。

关联(association):它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头.

聚合(aggregation):整体与部分的关系,且部分可以单独存在。车子与轮胎。

泛化(generalization):是一种继承关系,表示一般(广泛)与特殊(具体)的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

依赖(dependency):一种使用的关系,一个类的实现需要另一个类的协助,如果A依赖与B。则B体现为局部变量,方法的参数,或静态方法的调用。例如人划船,人依赖于船。

三.顺序图:关注对象间的交互活动与消息传递的顺序,纵向表示时间线,横向轴代表了在协作中各独立对象的类元角色。以下展示一个很6的例子:

上图形象的展示了顺序图的核心作用:用对象间的交互来描述用例,同时寻找类的操作。

四.状态图用来描述对象具有的各种状态,各种状态间的转换过程以及激发转换过程的条件与事件

文章有参考以下几篇博文:如有侵权请联系本人

http://www.lupaworld.com/article-233409-1.html

http://www.cnblogs.com/sura/archive/2012/07/01/2572083.html

http://blog.sina.com.cn/s/blog_68220005010125cg.html

UML入门的更多相关文章

  1. UML入门学习

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

  2. uml入门之14图与图之间的关系

    1.先奉上整理的14图. 2.其次奉上整理的图之间的6种关系

  3. 【UML 建模】UML入门 之 交互图 -- 时序图 协作图详解

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 . 动态图概念 : 从静态图中抽取瞬间值 ...

  4. UML入门[转]

    访问权限控制 class Dummy { - private field1 # protected field2 ~ package method1() + public method2() } Al ...

  5. UML入门 之 交互图 -- 时序图 协作图详解

    作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 动态图概念 : 从静态图中抽取瞬间值的变化描 ...

  6. UML之轻松入门(3)-SRP做好厨子,让别人编程去吧

         一个厨子能够做出一手好菜,或许他是新东方毕业的或者是祖传秘方.你让他做上一桌佳肴那是简单.快乐而又高效的,然而让他编程就会成为一种苦恼并且让人想不通的一件事.或许这个比喻不是非常恰当,可是对 ...

  7. [UML]UML系列——用例图Use Case

    用例图的概念 用例图是描述用例.参与者以及它们之间关系的图. 用例图的作用 用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为. 用例图定义和描述了系统的外部可见行为,是分析.设计直至组 ...

  8. UML教程首页(转载)

    UML是一种标准语言,用于指定,可视化,构造和文档的软件系统的文物. UML是OMG在1997年1月提出了创建由对象管理组和UML1.0规范草案. 本教程给出了一个比较完整的学习理解UML,可以方便学 ...

  9. 《火球——UML大战需求分析》(0.1)——开篇废话

    说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

随机推荐

  1. docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速

    一.前言 先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box创建虚拟机,KI首次启动时创建虚拟机的过 ...

  2. .NET高性能框架Chloe.ORM-完美支持MySql

    扯淡 这是一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接查询.分组查询. ...

  3. Linux常用获取进程占用资源情况手段

    测试环境:Ubuntu14.04 1.  获取进程ID号 ps -aux | grep your_process_name 例如: xxx@xxx:~$ ps -e |grep Midlet|awk ...

  4. redis分片

    本文是在window环境下测试 什么是分片 当数据量大的时候,把数据分散存入多个数据库中,减少单节点的连接压力,实现海量数据存储 那么当多个请求来取数据时,如何知道数据在哪个redis呢,redis有 ...

  5. AngularJS表达式

    1. AngularJS使用表达式把数据绑定到HTML. 2. AngularJS表达式的特点: 表达式写在双大括号内:{{表达式}}. 表达式把数据绑定到HTML,这与ng-bind指令有异曲同工之 ...

  6. iOS推送流程

    1. 在apple开发者帐号上创建一个BundleID,创建证书或者Xcode上都是用这个BundleID(例如com.mycompany.pushDemo) 2. 代码层面: 在capability ...

  7. Python 【第九章】 Django基础

    在windows 命令行上安装Django 在CMD命令行中输入以下命令进行安装. pip install Django 在windows python安装目录上会出现 一个django-admin. ...

  8. MVC 总结

    以下内容摘自 PHP for Absolute Beginners, Thomas Blom Hansen & Jason Lengstorf The model-view-controlle ...

  9. 10 Symbol

    Symbol 书中讲了2部分. Symbol() Symbol 属性值. 完全两种画风的东西. 1. Symbol 首先他是一种全新的值. 不属于以前的任何一种 ES6引入了一种新的原始数据类型Sym ...

  10. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...