UML之类图

UML之类图

概述

类图是静态图,以类为中心,代表了一个应用程序的静态视图。

静态视图的元素是应用中有意义的概念,这些概念包括真实世界中的概念、抽象的概念、实现方面的概念和计算机领域的概念,即系统中的各种概念。

静态视图说明了对象的结构。一个面向对象的系统使数据结构和行为特征统一到一个独立的对象结构中。静态视图包括所有的传统数据结构思想,同时也包括了数据操作的组织。数据和操作都可量化为类。根据面向对象的观点,数据和行为是紧密相关的。

静态视图是建立其他视图的基础,静态视图中的关键元素是类元及它们之间的关系,类元是描述事物的建模元素。

类元

类元是模型中的离散概念,拥有身份、状态、行为和关系,下表列出了几种类元和它们的功能,因为类是我们所最熟悉的术语,所以先讨论它,再根据类与其他概念的区别来定义其他概念。

类元

类:类表示被建模的应用领域中的离散概念—物理实体(如手机)、商业事物(如订单)、逻辑事物(如作业计划)、应用事物(如确定键)、计算机领域的事物(如哈希表)或行为事物(如一项任务)。

类是有着相同结构、行为和关系的一组对象的描述符号。所用的属性与操作都被附在类或其他类元上。类是面向对象系统组织结构的核心。

对象是具有身份、状态和可激发行为的离散实体。对象是用来构造实际运行系统的个体;类是用来理解和描述众多个别对象的概念。

类定义了一组有着状态和行为的对象。属性和关联用来描述状态。属性通常用没有身份的纯数据值表示,如数字和字符串。关联则用有身份的对象之间的关系表示。个体行为由操作来描述,方法是操作的实现。对象的生命期由附加给类的状态机来描述。类的表示法是一个矩形,由带有类名、属性和操作的分格框组成。

类图

关系

关系

下面介绍几种常用的关系:

关联关系

关联描述了系统中对象或实例之间的离散连接,它将一个含有两个或多个有序表的类元,在允许复制的情况下连接起来。最普通的关联是一对类元之间的二元关联。

这类似于在数据库中,我们会在表之间建立关系,以关联不同表中的数据,只是表和类的最大区别在于:表只包含数据,类包含了数据(属性)与操作(方法)。

类之间的关联中,同样也有类似数据库表中关系的概念:一对一、一对多、多对一、多对多,这称做“多重性(multiplicity)”。关联可以是单向的,也可以是双向的。

在UML类图设计中,关联关系用带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。多重性的下限为0,上限是无限大(*),下限标示在前面,上限标示在后面,两个数字之间使用两个点(..)隔开。

关联

关联

聚集和组成

聚集(也称聚合)表示部分与整体关系的关联,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。

比如计算机与CPU、公司与员工的关系等,比如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。

在UML类图设计中,聚集关系以空心菱形加实线箭头表示。

聚集

组成(组合)是更强形式的关联,它体现的是一种contains-a的关系。与聚焦一样,它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体有管理部分的特有的职责,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。

在UML类图设计中,组成用一个实菱形物附在组成端表示。每个表示部分的类与表示整体的类之间有单独的关联,但是为了方便起见,连线结合在一起,现在整组关联就像一棵树。

组合

泛化关系

泛化关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进行了扩展。具体描述与一般描述完全一致,具有其所有特性、成员和关系,并且包含补充的信息。

例如,软件工程师是员工的一种,软件工程师保持了员工的基本特性并加入了附加的特性,如可以使用Java语言编码。一般描述(员工)被称为父,具体描述(软件工程师)被称为子。

泛化在类元(类、接口、数据类型、用例、参与者、信号等等)、包、状态机和其他元素中使用。在类中,术语超类和子类代表父和子。

泛化有两个用途。

第一个用途是用来定义下列情况:当一个变量(如参数或过程变量)被声明承载某个给定类的值时,可使用类(或其他元素)的实例作为值,这被称作可替代性原则。该原则表明无论何时祖先被声明了,则后代的一个实例可以被使用,泛化使得多态操作成为可能。

第二个用途是在共享祖先所定义的成分的前提下允许它自身定义增加的描述,这被称作继承。继承允许描述的共享部分只被声明一次而可以被许多类所共享,而不是在每个类中重复声明并使用它,这种共享机制减小了模型的规模。更重要的是,它减少了为了模型的更新而必须做的改变和意外的前后定义不一致。

在UML类图设计中,泛化用一条带空心三角箭头的实线表示,从子指向父。

泛化

实现关系

实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,其中接口只是行为的说明而不是结构或者实现。

在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口。

实现

依赖关系

依赖表示两个或多个模型元素之间语义上的关系。它只将模型元素本身连接起来而不需要用一组实例来表达它的意思。它表示了这样一种情形:提供者的某些变化会要求或指示依赖关系中客户的变化。

根据这个定义,关联和泛化都是依赖关系,但是它们有更特别的语义,故它们有自己的名字和详细的语义。

下表列出了UML基本模型中的一些依赖关系:

依赖

在UML类图设计中,依赖关系用由带箭头虚线表示。

依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值