1.类图
1.类与类之间的关系:
在绘制类图前,先熟悉类与类之间的关系。面向对象语言中类与类之间关系共计六种,分别是继承、实现、关联、依赖、组合、聚合。
1、继承或者泛化(Generalization):实现代码的复用。面向对象三大特征之一。继承关系指的是一个类(子类)继承另外一个类(父类)或者一个子接口继承另一个父接口。如动物接口类与鸟接口类,学生类继承People类;
类图可由如下表示:
Generalization.png
2、实现(InterfaceRealization):一个类实现接口功能。如苍鹰类实现鸟接口类“移动”这一功能。
类图可如下表示:
3、依赖(Dependency):一个类的某种行为(函数)依赖于另外一个类。这种关系是偶然的,临时的,非常弱的。但是类B的变化会引起类A的变化。代码表现层面为:类B作为形式参数或者返回值在类A的某个方法中使用。如大雁的迁徙依赖于季节。大雁类与季节类就是依赖关系.经常的实现方法为:被依赖类(季节)经常作为依赖类(大雁)某一函数(迁徙)的参数。
类图可有如下表示:
4、关联(Association):既不是组合关系和聚合关系的一般关联关系。两个类之间的关系一般是平等的,长期的,且两个类并不是从属关系。它表现为一般的has-a关系,它使一个类知道另一个类的属性和方法。表现在代码层面,被关联类B以类A的属性(包含B类型的引用)的方式出现在关联类A中或者关联类A引用了一个类型为被关联类B的全局变量。关联关系所涉及的两个类位于同一层次上,一个类包含另一个类对象的引用。
类图可由如下表示:
5、聚合(Aggregation)(关联关系的一宗特例):和组合相比是一种弱所属关系,被聚合对象可以属于多个聚合对象。它是一种较强的关联关系。聚合关系是整体和部分的关系。同时是一种弱拥有关系。体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。代码层面表现为如果A由B聚合而成,表现为A包含有B的全局对象,但是B对象可以不在A类型对象创建的时刻创建。(可以在类A中的某个方法创建)如汽车由轮子等聚合而成,汽车销毁后,轮子可以单独存在。聚合关系所涉及的两个类位于不同层次上,一个属于部分,一个属于整体。
类图可由如下表示:
6、组合(Composition)(关联关系的一种特例,又称强聚合):将一个类的对象(部分)放到另一个类(组合)中,它是一种强"has a"的关系。相比聚合,组合是一种强所属关系,体现了严格的部分和整体关系。组合关系的两个类具有相同的生命周期。被组合类在组合对象创建的同时或之后创建,在组合对象销毁之前销毁。一般的说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象。比如鸟与翅膀类就是组合关系,在创建一个鸟类时,一定要同时创建一个翅膀类,销毁鸟类时,一定要先销毁翅膀类。
类图可由如下表示:
总体来说,泛化和实现关系在一个系统中是容易辨别的。一个派生类继承于另一个基类或者一个子接口类继承于另一个父接口类,那么这两个类就是泛化关系。一个类实现了另一个接口类的抽象方法,那么这两个类的关系就是实现关系。但后面四种关系是语意层面上的,不能从代码层面上区分。它们的强弱程度如下:组合>聚合>关联>依赖。
2.对象图
对象图的概念:
*对象图描述类图在某一时刻,类中对象相互之间的链接关系,相当于对类图某一时刻的快照。因为对象具有生命周期,不同时刻类图中的对象数目不同,因此对应同一幅类图,在不同时间含有不同的对象图。在描述系统的静态结构时,并不一定要绘制对象图,只有当需要反应某一时刻对象相互之间的链接关系时,才需要画出对象图。对象图中的节点时对象,节点用矩形框表示。对象名的格式为对象名:类名。
对象图可由如下表示:
Object.png3.时序图
时序图的基本概念:
对象:时序图中对象使用矩形表示,并且对象名称下有下划线.将对象置于时序图的顶部说明在交互开始时对象就已经存在了.如果对象的位置不在顶部,表示对象是在交互的过程中被创建的.
生命线:生命线是一条垂直的虚线.表示时序图中的对象在一段生命周期内的存在.每个对象底部中心的位置都带有生命线.
消息:两个对象之间的单路通信.从发送方指向接收方.在时序图中很少使用返回消息
激活:时序图可以描述对象的激活和钝化.激活表示该对象被占用已完成某个任务.钝化指对象处于空闲状态,等待消息.在UML中,对象的激活时将对象的生命线拓宽为矩形来表示的.矩形称为计划条或控制期.对象就是在激活条的顶部被激活的.对象在完成自己的工作后被钝化.
对象的创建和销毁:在时序图中,对象的默认位置是在图的顶部.这说明对象在交互开始之前就已经存在了.如果对象是在交互过程中创建的,那么就应该将对象放到中间部分.如果要撤销-一个对象,在其生命线终止点处放置“X”符号.
例子:函数一调用函数二,函数二调用函数三;函数三返回后,函数二打印日志;最后函数二运行完毕就返回函数一。
其时序图可由如下表示:
网友评论