本文主要讲解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