UML面向对象分析与建模-【4】类图和对象图

 

一、概述

UML的类图和对象图表达的是对象模型的静态结构方面。

类图描述的是一种静态关系,在系统的整个生命周期都是有效的。通过分析问题域和用例,就可以得到相关的类,然后再把逻辑上相关的类封装成包。这样就可以很好地体现系统的分层结构,使人们对系统层次关系一目了然。

对象图是类图的实例,它的表示方式与类图基本相似。它们的不同之处在于对象图显示类图的多个对象实例,而不是实际的类。一个对象图是类图的一个实例,对象图只能在系统的某一时间存在。

二、对象类

对象类简称类,是一种重要的分类器,用来描述结构和行为特性的机制,包括类、接口、数据类型、信号、组件、节点、用例和子系统。类是一组具有相同属性、操作关系和语义的对象的描述。

在UML建模时,不仅要抽象出形成系统的对象类,还必须描述对象类之间存在的链接关系,这种链接关系可以用一种叫做关联的结构来进行描述。对象类之间的关联有自返关联、二元关联和N元关联。自返关联就是一个对象类自身与自身的关联,即一个对象类的两个对象之间的联系。二元关联是在两个对象类之间发生的关联。N元关联是在3个或多个对象类之间发生的关联,N元关联的每一个实例是被关联的类的对象的多元组。

聚合和组合是对象类之间的一种特殊的关联关系,它主要用来描述对象类之间的整体与部分之间的关系。聚合用于表示事物的整体及部分关系较弱的情况,它描述了has-a关系,即整体对象拥有部分对象。组合表示事物的整体与部分关系较强的情况,它描述了contains-a关系。

泛化是一般事物(称为超类或父类)和该事物较为特殊的种类(称为子类)之间的关系,子类继承父类的属性和操作,或者修改了父类的某些操作。

依赖是两个模型元素之间的语义联系,指一个模型元素(提供者)的变化必然影响另一个模型元素(客户)。对于依赖可以加上构造型,规定依赖的含义和作用,常用的构造型有<<use>>(使用)<<call>>(调用)<<instantiate>>(实例)<<friend>>(友元)等。

在UML中用对象图来描述参与一个交互的各对象在交互过程中某一时刻的状态。对象图实质上是对象类图的实例。对象图冻结了系统的某一瞬间,表达系统的对象在该时刻的具体状态(属性值和操作)。

接口是一组外部可以访问的操作,用于为对象类或组件提供服务。接口可以看成是一种特殊的抽象类,不含属性,它的操作也没有方法,即没有操作的实现。

三、高级对象类

抽象类是指不能直接产生实例的对象类,抽象类的实例对象只能通过一个非抽象类的子类产生。抽象类的作用仅仅是为了其他的非抽象类对象类继承和重用它所说明的属性、操作及其它性质。

模板对象类又称参数对象类,是一个尚未完全具体说明的类。模板中提供参数表,利用参数表向模板传递信息可最终形成用户需要的具体类。参数可以是类,也可以是整数、布尔型等基本类型。

四、对象类建模

一般情况下,建立对象类图包含以下步骤。

(1)       研究和分析问题域,确定系统的需求。

(2)       发现、识别、确定系统中的类和对象,明确它们的含义和责任,确定属性和操作。

(3)       找出类之间存在的静态联系。重点分析类之间存在的一般与特殊、部分与整体关系,研究类之间的继承性和多态性,把类之间的这种联系用泛化、聚合和组合、关联、依赖等关联表达出来。

(4)       对已经发现的类之间存在的联系进行调整和优化,去除可能存在的命名冲突和功能重复等问题。

(5)       绘制对象类图并编制相应的说明。

   

在UML中,可以把例外情况的处理用一个专门的类—信号来表达。其建模步骤如下。

(1)       对每一个对象类和接口,找出可能出现的例外情况及其出现条件。

(2)       将每一个例外情况用一个信号类来描述,类名前加上构造型<<exception>>。

(3)       建立例外情况的层次结构,将一般性的例外情况置于顶层,把特殊性的例外情况置于底层。

(4)       找出每一个操作可能出现的例外情况,将操作和它的例外情况的信号图标之间用一条虚箭头线连接,其上标出构造型<<send>>,表示操作到它的例外情况的send依赖。

 

当对大型系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这时就有必要将这些元素进行分组,即把那些语义相近并倾向于一起变化的元素组织起来加入同一个包,这样方便理解和处理整个模型。建立包图的一般步骤如下。

(1)    识别系统中的模型元素(通常是对象类),把概念上或语义上相近的模型元素纳入一个包。

(2)    对于每一个模型元素,标出其模型元素的可视性(公共、保护或私有)。

(3)    确定包与包之间的依赖关系。

(4)    确定包与包之间的泛化联系,确定包元素的多态性和重载。

(5)    绘制并精化包图。

五、例子

(1)       一个公司可以雇佣多人,人也可以为多个公司工作。每个公司有一个总经理,公司中的每个雇员有一个经理,经理可以管理多个下属的雇员。请用对象类图描述上述模型。

(2)       客户想供应商发出一个订单,订单订购各种不同的零件。一个订单由若干订单行组成,每行制定供应商目录中的一种特定零件,并说明要订购多少。作为对订单的响应,供应商安排一次交货,由所有订购的零件组成。请用对象类图描述上述模型。

 

 

    参考文献:

     [1] 唐学忠等著. UML面向对象分析与建模. 电子工业出版社. 2008

     [2] 蔡敏等著. UML基础与ROSE建模教程. 人民邮电出版社. 2006

     [3] Carlo Ghezzi等著. 施平安译. 软件工程基础(第2版) 清华大学出版社. 2003

     [4] 参考网站:

          http://www.omg.org/UML

          http://www.rational.com/UML

          http://www.software.ibm.com/ad/ocl

时间: 2024-09-20 00:18:36

UML面向对象分析与建模-【4】类图和对象图的相关文章

UML面向对象分析与建模-【6】状态图

  一.概述 在一般的面向对象技术中,状态图又称为状态迁移图.描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的迁移.大多数面向对象技术都使用状态图来描述一个对象在其生命周期中的行为. 二.状态 在所有动态图(序列图.协作图.状态图.活动图)中,消息是作为对象间的一种通信方式来表示的.消息包括简单消息.同步消息和异步消息.可以将一个简单消息和同步消息合并成一个消息. 在UML中,对于状态的定义着重于对象行为的规则,状态描述了一个对象生命周期中的一个时间段.它可以用三种附加方

UML面向对象分析与建模-【1】面向对象技术概述

    一.软件开发方法 常见的软件开发方法有面向过程的开发方法,面向数据结构的开发方法和面向对象的开发方法.其中面向过程的开发方法也称为面向功能的软件开发方法或面向数据流的软件开发方法.结构化方法强调过程抽象和功能模块化.它一般利用图形表达用户需求,使用的手段有数据流图.数据字典.结构化语言.判定表及判定树等.面向数据结构的开发方法适合于求解算法依赖于问题描述的数据结构之类的情况.这种方法最适合在完成了软件结构设计之后,用它来设计每个模块的处理过程.它根据问题的数据结构定义一组映射,把问题的数

UML面向对象分析与建模-【2】UML语言基础

  一.UML的主要内容 UML主要文件包括UML概要.UML语义.UML表示法指南和对象约束语言规约. 二.UML的主要特点 UML主要特点包括统一标准.面向对象.可视化及表示能力强大.独立于过程和容易使用掌握.UML不是一个独立的软件工程方法,而是面向对象软件工程方法中的一个部分.UML贯穿软件系统开发的需求分析.系统分析.系统设计.系统实现和测试五个阶段. 三.UML建模中9种图的特点 1.       用例图 用例图描述系统外部的活动者(角色)与系统提供的用例之间的某种联系.它着重从系统

UML面向对象分析与建模-【5】交互图

  一.概述 交互图是用来表达系统的各个对象之间如何交互,如何合作完成某个行为的动态模型工具,它与用例图.状态图.活动图等共同构成了系统的行为视图. 交互图主要用于对用例图中的控制流进行建模,它包括序列图和协作图,其中,序列图按时间次序描述系统中各对象如何通过消息交互,协作图从空间上描述收发消息的对象的结构关系. 二.序列图 序列图是一种交互图,描述了系统中各个对象之间传递消息的时间次序,用来表示用例的行为顺序,从而为对象类图中概括对象的行为.划分对象类的职责提供依据.它依赖与用例图,如果说用例

UML面向对象分析与建模-【3】用例图

  一.用例图的描述 用例(Use Case)是指系统的外部事物(活动者.设备或外部系统)与系统交互,它表达了系统的功能,即系统所提供的服务. 用例图是一种描述用例的可视化工具,用简单的图形元素表示出系统的活动者.用例及它们之间的关系,准确地表达了活动者与系统的交互情况和系统所能提供的服务.用例图是从用户角度而不是从开发者角度来描述对软件产品的需求,分析产品所需的功能和动态行为. 二.活动者 确定活动者.活动者可以通过泛化关系定义. 1.       系统的主要客户是谁 2.       谁从该

UML之对象图、类图、包图

 我们在VB中都学过类和对象的关系,在UML中我们又接触到了类图.对象图.下面再为大家陈述一下类与对象的联系与区别.          首先说一下对象,对面描述的是一个事物,它具有状态.行为.标识.状态是指一个事物所具有的属性的值比如说,一个人的性别为女:行为是指一个对象将如何反应另一个对象,比如说一个老师向另一个老师派课,那么这个老师做出的反应就是去上那个老师指定的课:标识是指对象的名字.          下面说一下类,它是指一类具有相同属性的对象,比如说学生,他们都有名字.学号等:    

IBM RSA (IBM rational software architect ) V8 学习之四 C++类图转换成c++代码

原文http://blog.csdn.net/ztz0223/article/details/7596025   前一讲: RSA建模 c++类图 已经说过了,如何生成一个结构体,添加成员变量,添加带参数的成员函数,那么如何看到效果呢? 这就是本文要说的了:变换->UML to C++ 回忆一下,之前建立的模型--c++类图.   现在要用这个类图类生成相应的代码: 步骤一,选择建模文件example_uml,右键,弹出窗口选择变换->新建配置:   步骤二,如图输入配置名:   步骤三,创建

《面向对象分析与设计》一1.6关于统一建模语言UML

1.6关于统一建模语言UML UML最初是在多种面向对象分析与设计方法相互融合的基础上形成的,后来发展成为也可以用于业务建模以及其他非软件系统建模的语言.它于1997年11月被对象管理组织(Object Management Group)采纳为建模语言规范,随后被产业界和学术界广泛接受. UML定义了建立系统模型所需要的概念并给出了表示法,但它并不涉及如何进行系统建模.因此它只是一种建模语言,而不是一种建模方法.UML是独立于开发过程的,也就是说它可以适用于不同的开发过程. UML 2.4规范由

UML,类图

类图是所有面向对象建模方法的核心部分,描述了系统的静态结构. 一.类图概述 1.组成部分 : 类.类间关系 [类] 具有相同属性和相同方法的对象的集合. [类间关系] 表示了两个类之间的关系. 2.图符 3.关系 类间的关系,在前面的博客中有详细的梳理,这里也就不再赘述了.请看<UML,理理关系> 二.如何绘制类图 理论知识都清楚了,可要动手开始画的时候,怎不知道从何开始.于是,还是先定下个绘制类图的步骤吧,掌握全局很重要. 1.需求描述. 2.发现类. 3.筛选类,得到候选类. 4.关联分析