UML学习笔记

  这个学期有幸选到章老师的UML精品课程,虽然到目前仅仅上课两周,但是收益匪浅。尽管在本科接触过UML却没有非常详细的对其进行深入的了解,只是对一些图的名称有所耳闻,没有深究其功能。

就最近所学知识,谈一下我对uml统一建模语言的一个总体认识,软件工程作为一门工程类学科,如同建筑类学科一样,当我们需要搭建一所建筑时,我们都需要对其进行需求和设计,在施工的时候,我们就需要一些设计图纸,例如各个房间的具体设计、三维视图等,通过这些图纸进行施工。软件工程也是如此,当我们拿到一个项目时,并不是直接开始编码,而是在此之前进行一系列的需求分析和详细设计,UML在详细设计中得到了广泛的应用,我们使用UML绘出的类图、用例图、时序图、部署图等作为依据,以及按照这些图表实现相应的编码,这些用UML语言绘制的图形就好比建筑行业中的设计图纸,以这些图纸为标准,进行codingUML绘图工具主要有 Visio 2007,开发工具主要有:Star UML,IBM Rational Rose,RSA等。

下面对一些比较常用的UML图进行一些详细的介绍(本次博文重点介绍一下类图):

一、 类图

我们知道面向对象主要有三个特征:封装(抽象)、继承以及多态,对象作为类的实例化,这些特征用类图可以很好的表示出来,类图也是最常用的UML图,通常看到类图就能了解各类之间的关系以及每个类中所具有的属性,在一些软件中,可以通过类图生成生成相应的代码。所以类图在软件工程中应用非常广泛。下面介绍一些类图的基本用法,

1、 类

如图所示,一个类主要由三部分组成:类名、属性、方法组成。其中属性和方法都有一定的作用域,public+表示,private-表示,protect#表示,package~表示。

 

2、 类与类之间的关系

1) Association(关联关系)

通常用直线(相互关联)或者 (直接关联)表示,相互关联和直接关联有一定的区别,比如A 可以表示A类知道B类的属性和方法,同时B类也可以知道A的属性和方法,但是直接关联AB 中A可以知道B的属性和方法,但是通过B不能知道A属性和方法,是单向关联,相互关联的实现可能需要使用指针来实现。

2) Aggregation(聚合关系)

聚合可以看做是一种强度关联,用于描述总体到局部的关系。当我们不知道两个类之间的到底是关联关系还是聚合关系时,一般使用关联关系。表示符号为:

或者

3) Composition(组合关系)

组合关系的强度强于聚合关系,比如车由引擎等组成,引擎作为车的一部分,可以看出子类实例的生命周期依赖于父类的生命周期。表示符号为:

或者

4) Generation一般化)

一般化关系表示类与类之间的继承关系,是由子类指向父类,如animal可以一般化出cat类,cat类是animal类的一个继承。表示符号为

5) Dependency(依赖关系)

顾名思义,依赖表示的一个类依赖另一个类的定义,所以依赖关系时单向的。表示符号为:

6) Realization实现)

主要针对interface类似于继承关系。表示符号为:

类与类之间主要有这六种关系,我们根据类之间的实际情况去判断到底使用那些关系,如果有些关系不太确定,我们在设计类图时可以先设定成关联关系,然后在后期进行相应的修改,除此之外我们可以在这些关系上设定实例化对象之间的对应关系。

如图:

0..1

0个或1

1

只能1

0..*

0个或多个

1..*

1个或多个

 

最后,向大家推荐一本参考书《UML2 and the Unified Process Practical Object-Oriented Analysis and Design》另附上课上速记的学习笔记(速记只有部分重点>_<):

posted @ 2015-03-21 22:15  SCS-FLYM  阅读(908)  评论(0编辑  收藏  举报