UML类图:什么是UML?

UML(统一建模语言)的出现是为了提高软件设计的可读性和可理解性。它由构造块、公共机制和规则三个部分组成。构造块类似于建房子时的砖瓦,而规则则是支配基本构造块如何放在一起的规则(包括逻辑视图、进程视图、实现视图、部署视图和用例视图等5个系统视图)。公共机制是指达到特定目标的公共UML方法,包括规格说明、修饰、公共分类和扩展机制等四种。

构造块包括事物构造块、关系和图三个部分。事物构造块包括结构构造块(如类、接口、协作、用例、活动类、构件、节点等)、行为构造块(如交互、状态机)和分组构造块以及注释构造块。图在UML 2.x中包括14种不同的类型,分为表示系统静态结构的静态模型(包括对象图、类图、构件图、部署图、复合结构图、包图和制品图)以及表示系统动态结构的动态模型(包括用例图、顺序图、协作图、状态图、活动图、定时图和交互概观图)。

关系方面包括关联关系(如聚合、组合)、依赖关系(如一般、特列)、泛化关系(如实现、特列)以及实现关系。从类图开始,我们通常遇到的是类图,其结构为<>,表示车是一个抽象类;它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;小汽车与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;学生与班级之间是聚合关系,使用带空心箭头的实线表示;学生与身份证之间为关联关系,使用一根实线表示;学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示。

下面我们依次介绍这六种静态关系:从弱到强依次是依赖关系(< 关联关系)(< 聚合关系 < 组合关系)(< 实现关系 = 泛化关系)。

1. 类的继承结构表现在UML中为:泛化与实现。泛化关系:例如,自行车是车,猫是动物。泛化关系用一条带空心箭头的直接表示。泛化关系表现为继承非抽象类。实现关系:实现关系表现为继承抽象类。实现关系用一条带空心箭头的虚线表示。例如,“车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才可以用来定义对象。

顺序图(Sequence Diagram),也叫时序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。顺序图是强调消息时间顺序的交互图,描述类系统中类和类之间的交互,它将这些交互建模成消息交换。

在UML用例图中,用例表示为一个椭圆。用例图的建立通常要经历三个阶段:识别参与者、合并需求获得用例、细化用例描述。用例的实例就是一个使用场景,用例就是对使用场景进行抽象的总结,形成一组事件流。

对象间消息传递的时间顺序是类模型的一个重要特征。在类模型中,对象的生存期可以表示为一个时间段,在这个时间段内,对象可以对输入消息做出响应,并且可以发送信息。但是,有时候我们还需要更好地表示行为的细节,这时候就可以借助于活动图和状态图来实现。状态图强调状态之间的转换,而活动图则强调对象之间的交互行为。通信图和顺序图同属于交互图,但它强调收发消息的对象或角色的结构组织。顺序图强调的是时序,通信图则强调消息流经的数据结构。构件图描述了一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。部署图则是面向对象系统物理方面建模的两种图之一,它用于描述系统中各个部件之间的关系和位置关系。