●类图(Class diagram)显示了系统的静态结构,而系统的静态结构构成了系统的概念基础。
●类图,就是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。
●在大多数的 UML 模型中,我们可以将这些概念的类型概括为以下四种,分别是:
(1) 类
(2) 接口
(3) 数据类型
(4)构件
●在类图中,具体来讲它一共包含了以下几种模型元素,分别是:类、接口、依赖关系、泛化关系、关联关系以及实现关系。
●类图可以创建约束、注释和包等。
2、类图在项目开发中的作用
●类图的作用是对系统的静态视图进行建模。当对系统的静态视图进行建模时,通常是以以下三种方式来使用类图。
(1)为系统的词汇建模。
(2)模型化简单的协作。
(3)模型化逻辑数据库模式。
●在设计数据库时,通常将数据库模式看作为数据库概念设计的蓝图,在很多领域中,都需要在关系数据库或面向数据库中存储永久信息。系统分析者可以使用类图来对这些数据库进行模式建模。
3、类图的组成
(1)类
●类是面向对象系统组织结构的核心。类是对一组具有相同属性、操作、关系和语义的事物的抽象。
●在UML的图形表示中,类的表示法是一个矩形,这个矩形由三个部分构成,分别是:类的名称(Name)、类的属性(Attribute)和类的操作(Operation)。
①类的名称
类的名称是每个类的图形中所必须拥有的元素,用于同其它类进行区分。类的名称通常来自于系统的问题域,并且尽可能地明确表达要描述的事物,不会造成类的语义冲突。
②类的属性
●属性是类的一个特性,也是类的一个组成部分,描述了在软件系统中所代表的对象具备的静态部分的公共特征抽象,这些特性是这些的对象所共有的。
●在UML中,类的属性的表示语法为([ ]内的内容是可选的):
●[可见性] 属性名称 [:属性类型] [=初始值] [{属性字符串}]
③类的操作
●类的操作指的是类的所能执行的操作,也是类的一个重要组成部分,描述了在软件系统中所代表的对象具备的动态部分的公共特征抽象。
●操作由一个返回类型、一个名称以及参数表来描述。其中,返回类型、名称和参数一起被称为操作签名(Signature of the Operation)。操作签名描述了使用该操作所必需的所有信息。在UML中,类的操作的表示语法为([ ]内的内容是可选的):
●[可见性] 操作名称 [(参数表)] [:返回类型] [{属性字符串}]
PS:其他组成
①类的职责
●在标准的UML定义中,有时还应当指明类的另一种信息,那就是类的职责。类的职责指的是对该类的所有对象所具备的那些相同的属性和操作共同组成的功能或服务的抽象。
●在声明类的职责的时候,可以非正式的在类图的下方增加一栏,将该类的职责逐条描述出来。类的职责的描述并不是必须的,因此也可以将其作为文档的形似存在,也就是说类的职责其实只是一段或多段文本描述。一个类可以有多种职责,设计得好的类一般至少有一种职责。
②类的约束
类的约束指定了该类所要满足的一个或多个规则。在UML中,约束是用一个大括号括起来的文本信息。
③类的注释
(2)接口
●类接口是在没有给出对象的实现和状态的情况下对对象行为的描述。通常,在接口中包含一系列操作但是不包含属性,并且它没有对外界可见的关联。
●接口是一种特殊的类,所有接口都是有构造型<<interface>>的类。一个类可以通过实现接口从而支持接口所指定的行为。
●在UML中,接口的表示方式是使用一个带有名称的小圆圈来进行表示的,并且我们可以通过一条Realize(实现关系)线与实现它的类相连接
3、类之间的关系
(1)依赖关系
●依赖关系:表示的是两个或多个模型元素之间语义上的连接关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。
●它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。也就是说依赖关系将行为和实现与影响其他类的类联系起来。
(2)泛化关系
泛化关系是用来描述类的一般和具体之间的关系。具体描述建立在对类的一般描述的基础之上,并对其进行了扩展。因此,在具体描述中不仅包含一般描述中所拥有的所有特性、成员和关系,而且还包含了具体描述补充的信息。
(3)关联关系
●关联关系是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接。
●关联描述了系统中对象或实例之间的离散连接,它将一个含有两个或多个有序表的类,在允许复制的情况下连接起来。一个类的关联的任何一个连接点都叫做关联端,与类有关的许多信息都附在它的端点上。关联端有名称、角色、可见性以及多重性等特性。
(4)实现关系
●实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,是说明和其实现之间的关系。
●在实现关系中,接口只是行为的说明而不是结构或者实现,而类中则要包含了其具体的实现内容,可以通过一个或多个类实现一个接口,但是每个类必须分别实现接口中的操作。虽然实现关系意味着要有像接口这样的说明元素,它也可以用一个具体的实现元素来暗示它的说明(而不是它的实现)必须被支持。