博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UML--类图详解
阅读量:2443 次
发布时间:2019-05-10

本文共 4591 字,大约阅读时间需要 15 分钟。

类图的含义

类图(Class Diagram)显示了系统的静态结构,而系统的静态结构构成了系统的概念基础。类图从抽象角度描述系统的静态结构,特别时模型中存在的类、类的内部结构以及它们与其它类之间的相互关系。类图就是用于对系统中的各种概念进行建模,并描绘出它们之间关系的图。

类图在项目开发中的作用

由于静态视图主要被用于支持系统的功能性需求,也就是系统提供给最终用户的服务,而类图的作用时对系统的静态视图进行建模。当对系统的静态视图进行建模时,通常时以如下三种方式来使用类图的。

  • 为系统的词汇建模:

    在使用UML构建系统时,最先就是构造系统的基本词汇,以描述系统的边界。对系统的词汇建模要做出如下的判断——哪些抽象是系统建模种的一部分,哪些抽象是处于建模系统边界之外的。系统分析者可以用类图详细描述这些抽象和它们所执行的职责。类的职责是指对该类的所有对象所具备的那些相同属性和操作共同组成的共嗯那个或服务的抽象。

  • 模型化简单操作:

    现实世界中的事务是普遍联系的,即使将这些事务抽象成类以后,这些类也是具有相关联系的,系统中的类极少能够孤立于系统中的其它类而独立存在,它们总是于其它类协同工作,以实现强于单个类的语义。系统分析者可以通过类图将这种简单的协作进行可视化和表述。

  • 模型化逻辑数据库模式:

    在设计数据库时,通常将数据库模式看作数据库概念设计的蓝图,在很多领域中,都需要在关系数据库或面向数据库中存储永久信息。系统分析者可以使用类图来对这些数据库进行模式建模。

类图的组成

类图(Class Diagram)是由类、接口等模型元素以及它们之间的关系组成的。类图的目的在于描述系统的构成方式,而不是系统是如何写作运行的。

类是面向对象系统组织结构的核心。类是对一组具有相同属性、操作、关系和语义的事务的抽象。这些事务包括了现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至还包括纯粹的概念性事务。根据系统抽象的程度不同,可以在模型中创建不同的类。

在UML的图形表示中,类的表示法是一个矩形,这个矩形由三个部分构成,分别是类的名称(Name)、类的属性(Attribute)类的操作(Operation)
类的名称位于矩形的顶端,类的属性位于矩形的中间部位,而矩形的底部显示类的操作。
在类的构成中还应当包含**类的职责(Responsibility)、类的约束(Constraint)类的注释(Note)**等信息。

在这里插入图片描述

类的名称
  • 类的名称是每个类的图形中所必须拥有的元素,用于同其它类进行区分。
  • 类的名称应该是一个名词,且不应该有前缀和后缀,且类的名称的首字母应该大写。
  • 类的名称的书写字体也有规范,正体字说明类是可以被实例化的,斜体字说明类为抽象类。
  • 类在它的包含者内有唯一的名字,这个包含者通常是一个包,但也可能是另外一个类。包含者对类的名称也有一定的影响。在类中,默认显示包含类所在的名称。
  • 单独的名称,即不包含冒号的字符串叫做简单名(Simple Name)。用类所在的包的名称作为前缀的类名叫做路径名(Path Name)

示例:包含位置的类

在这里插入图片描述

类的属性

类的属性(Attribute)是类的一个特性,也是类的一个组成部分,描述了在软件系统中所代表对象具备的静态部分的公共特征抽象,这些特性是这些对象所共有的。

在UML中,类的属性的语法表示为([]内的内容是可选的):

[可见性] 属性名称 [:属性类型] [=初始值] [{属性字符串}]
  1. 可见性
    属性的可见性描述了该属性是否对于其它类能够可见,从而是否可以被其它类引用。类中的属性的可见性包含三种,分别是共有属性(public)、受保护类型(protected)私有类型(private)
名称 关键字 符号 语义
共有类型 public + 允许在类的外部使用或查看该属性
受保护的类型 protected # 经常和泛化关系等一起使用,子类允许访问父类中受保护类型的属性
私有类型 private - 只有类本身才能够访问,外部一概访问不到
私有类型 Implementation 该属性仅仅在被定义的包中才能够可见
  1. 属性的名称

    属性是类的一部分,每个属性都必须有一个名字以区别于类的其它属性。
    按照UML的约定,属性名称的第一个字母小写,如果属性名称包含了多个单词,则这些单词要合并,并且除了第一个英文单词外其余单词的首字母要大写。

  2. 属性的类型

    属性也具有类型,用来指出该属性的数据类型。典型的属性类型包括Boolean、Integer、Byte、Date、String和Long等,这些被称为简单类型。

  3. 初始值

    • 用来保护系统的完整性。
    • 为用户提供易用性。
  4. 字符串属性

    属性字符串是用来指定关于属性的一些附加信息,比如某个属性应该在某个区域有限制。任何希望添加在属性定义字符串中但又没有合适的地方可以加入的规则,都可以放在属性字符串中

类的操作

类的操作(Operation)指的是类索恩那个执行的操作,也是类的一个重要组成部分,描述了在软件系统中所代表的对象具备的动态部分的公共特征抽象。

在UML中,类操作的语法表示为([]内的内容是可选的)

[可见性] 操作名称 [(参数表)] [:返回类型][{属性字符串}]
  1. 可见性;
    操作的可见性描述了该操作是否对于其他类能够可见,从而是否可以被其他类引用。
名称 关键字 符号 语义
共有类型 public + 允许在类的外部使用或查看该操作
受保护的类型 protected # 经常和泛化关系等一起使用,子类允许访问父类中受保护类型的操作
私有类型 private - 只有类本身才能够访问,外部一概访问不到
私有类型 Implementation 该操作仅仅在被定义的包中才能够可见
  1. 操作的名称:

    操作作为类的一部分,每个操作都必须有一个名称以区别于类中的其它操作。通常情况下,操作名由描述所属类的行为的动词或动词短语构成。规则与属性命名一致。

  2. 参数表:

    参数表就是由类型、标识符对组成的序列,实际上是操作或方法被调用时接收传递过来的参数指的变量。

  3. 返回类型:

    返回类型指定了由操作返回的数据类型。它可以是任意有效的数据类型,包括我们所创建的类型。

  4. 属性字符串:

    属性字符串是用来附加一些关于操作的除了预定义元素之外的信息,方便对操作的一些内容进行说明。

类的职责

类的职责指的是对该类的所有对象所具备的那些相同的属性和操作共同组成的功能或服务的抽象。

在声明类的职责的时候,可以非正式地在类图的下方增加一栏,将该类的职责逐条描述出来。

类的约束

类的约束(Constraint)指定了该类所要满足的一个或多个规则。

在UML中,约束是用一个大括号括起来的文本信息。

类的注释

使用注释(Note)可以为类添加更多的描述信息,也是为类提供更多描述方式中的一种。

接口

接口(Interface)是在没有给出对象实现和状态的情况下对对象行为的描述。通常,在接口中包含一系列操作但是不包含属性,并且它没有外界可见的关联。

接口是一种特殊的类,所有接口都是由构造型<>的类。

在UML中,接口的表示方式是使用一个带有名称的小圆圈来表示,共可以通过一条Realize(实现关系)线与实现它的类相连接。

在这里插入图片描述

当接口被其它类依赖的时候,也就是说一个接口在某个特定类中实现后,一个类通过一个依赖关系与该接口相连接。这时,依赖类仅仅是依赖于指定接口中的那些操作,而不是依赖于接口实现类中的其它部分。在依赖中可以通过一些方式调用接口中的操作。

在这里插入图片描述
接口也可以像类那样进行特殊化和一般化处理。
在类图中,接口之间的泛化关系也是用类泛化关系所使用的符号表示。
在这里插入图片描述

类之间的关系

类于类之间的关系最常见的通常有四种,它们分别是依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)和实现关系(Realization)。

关系 功能 表示图形
依赖关系 两个模型元素之间的关系
泛化关系 更概括和更具体地描述种类之间的关系,适应于继承 在这里插入图片描述
关联关系 类实例间连接的描述 在这里插入图片描述
实现关系 说明和实现间的关系 在这里插入图片描述
依赖关系(Dependency)

依赖表示的是两个或多个模型元素之间语义上的连接关系。它只是将模型元素本身连接起来而不需要用一组实例来表达它的意思。

它表示了这样一种情形,提供者的某些变化会要求或指示依赖关系中客户的变化。也就是说依赖关系将行为和实现于影响其它类的类关系起来。
在这里插入图片描述

泛化关系(Generalization)

泛化关系用来描述类的一般和具体之间的关系。具体描述建立在类的一般描述的基础之上,并对其进行了扩展。

在泛化关系中,一般描述的类被称为父类,具体描述的类被称为子类
在这里插入图片描述

关联关系(Association)

关联关系是一种结构关系,指出了一个事务的对象于另一个事务的对象之间在语义上的连接。关联描述了系统中对象或实例之间的离散连接,它将一个含有两个或多个有序表的类,在允许赋值的情况下连接起来。

一个类关联的任何一个连接点都叫做关联端,与类有关的许多信息都附在它的端点上。关联端有名称、角色、可见性以及多重性等特性

二元关联:

在这里插入图片描述

如果一个关联既是类,又是关联,那么它是一个关联类。

在这里插入图片描述关联关系还有 两种非常重要的形式,分别是聚集(Aggregation)关系组成(Composition)关系

聚集关系描述的是部分与整体关系的关联。简单的说,它将一组元素通过关联组成一个更大,更复杂的单元,这种关联关系就是聚集。聚集关系描述了“has a”的关系。

在UML中,它用带有空菱形的线段来表示,空菱形与聚集类相连,其中头部指向整体。

在这里插入图片描述

组成关系则是一种更强形式的关联,在整体中拥有管理部分的特有职责,有时也被称为强聚合关系。

在组合中,成员对象的生命周期取决于聚合的生命周期,聚合不仅控制着成员对象的行为,而且控制者成员对象的创建和结束。
在UML中,组合关系使用带实心菱形头的实线来表示,头部指向整体。
在这里插入图片描述

多重性

多重性是指在关联关系中,一个类的多个实例与另外一个类的一个实例相关。关联端可以包含有名字、角色名、可见性等特性。多重性可以用一个取值范围、特定值、无限定的范围或一组离散值来表达。

在UML中,多重性是使用一个以“ … ”分开的两个数值区间来表示的,其格式为

" minimum… maximum ",其中minimum和maximum都是整数。

当一个端点给出多个赋值时,就表示该端点可以有很多个对象与另一个端点的一个对象进行关联。

修饰符 语义
0 仅为0个
0…1 0个或1个
0…n 0个到无穷多个
1 恰为一个
1…n 1个到无穷多个
n 无穷多个
3 3个
0…5 0个到5个
5…15 5个到15个
实现关系(Realization)

实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,说明和其实现之间的关系。在实现关系中,接口只是行为的说明而不是结构或者实现,而类中则要包含其具体的实现内容,可以通过一个或多个类实现一个接口,但是每个类必须分别实现接口中的操作。

在UML中,实现关系的表示形式和泛化关系的表示符号很相似,使用一条带封闭空箭头的虚线表示。

在这里插入图片描述

b

转载地址:http://qnsqb.baihongyu.com/

你可能感兴趣的文章
红旗软件:树立国际的Linux品牌(转)
查看>>
Linux学习要点(转)
查看>>
影响mysqld安全的几个选项(转)
查看>>
最新版本Linux Flash 9 Beta开放发布(转)
查看>>
mysql事务处理(转)
查看>>
Fedora 显示设备配置工具介绍(转)
查看>>
FREEBSD 升级及优化全攻略(转)
查看>>
系统移民须知:Linux操作系统安装要点(转)
查看>>
在redhat系统中使用LVM(转)
查看>>
Gentoo 2005.1 完整的USE参数清单中文详解(转)
查看>>
如何在嵌入式Linux产品中做立体、覆盖产品生命期的调试 (5)
查看>>
手机最新触控技术
查看>>
Kubuntu 项目遭遇困难(转)
查看>>
kubuntu使用日记之 eva的配置使用(转)
查看>>
unix下几个有用的小shell脚本(转)
查看>>
QQ病毒的系列处理办法(转)
查看>>
Red Hat并购JBoss 谁将受创?(转)
查看>>
基于IBM大型主机,Linux开辟意大利旅游新天地(转)
查看>>
一些Linux试题(经典!!)(转)
查看>>
优化MySQL数据库性能的八大“妙手”(转)
查看>>