UML面向对象分析与建模-【4】类图和对象图-阿里云开发者社区

开发者社区> lzhdim> 正文

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

简介: 一、概述 UML的类图和对象图表达的是对象模型的静态结构方面。 类图描述的是一种静态关系,在系统的整个生命周期都是有效的。通过分析问题域和用例,就可以得到相关的类,然后再把逻辑上相关的类封装成包。
+关注继续查看
 

一、概述

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
六十一条面向对象分析设计的经验原则
你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起 。   ----- Arthur J.Riel   (1)所有数据都应该隐藏在所在的类的内部。
721 0
UML面向对象分析与建模-【6】状态图
一、概述 在一般的面向对象技术中,状态图又称为状态迁移图。描述了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的迁移。大多数面向对象技术都使用状态图来描述一个对象在其生命周期中的行为。
652 0
(七)java类和对象
   <span style="font-size:18px"> 一个类定义一个新的数据类型,也就是定义了一个逻辑框架,定义了它的成员之间的关系。可以通过这种类型来声明该类型的对象,通过new关键词来实例化对象,也就是为该类型的对象动态的分配物理内存空间,这个分配过程实在运行时发生的。内存空间是有限的,因此运行时分配内存有可能不成功,会造成运行时异常。<br>     声明时的变量存储的
976 0
Python面向对象编程01:入门类和对象
正式的Python专栏第36篇,同学站住,别错过这个从0开始的文章!
21 0
《面向对象分析与设计》一3.7 例题
本节书摘来自华章出版社《面向对象分析与设计》一书中的第3章,第3.7节,作者 麻志毅,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1749 0
《面向对象分析与设计》一3.6 用况模型与OOA模型
本节书摘来自华章出版社《面向对象分析与设计》一书中的第3章,第3.6节,作者 麻志毅,更多章节内容可以访问云栖社区“华章计算机”公众号查看
809 0
UML面向对象分析与建模-【5】交互图
一、概述 交互图是用来表达系统的各个对象之间如何交互,如何合作完成某个行为的动态模型工具,它与用例图、状态图、活动图等共同构成了系统的行为视图。 交互图主要用于对用例图中的控制流进行建模,它包括序列图和协作图,其中,序列图按时间次序描述系统中各对象如何通过消息交互,协作图从空间上描述收发消息的对象的结构关系。
832 0
Java面向对象高级--实例分析—宠物商店
<h1>1、实例要求</h1> <div> <span style="white-space:pre"></span>实现一个宠物商店,在宠物商店中可以由多种宠物,(由用户决定数量)。试表示出此种关系,并要求可以根据宠物的关键字查找到相应的宠物信息。所需要的宠物信息自行设计。</div> <h1>2、实例中主要使用到的知识点:接口、对象数组。</h1> <h1>3、分析</h1>
1419 0
+关注
lzhdim
人在20岁以意志力著称,在30岁以智慧取胜,在40岁则靠的是理智的判断。 一个人只有时刻保持幸福快乐的感觉,才会使自己更加热爱生命,热爱生活。只有快乐,愉快的心情,才是创造力和人生动力的源泉;只有不断自己创造快乐,与自己快乐相处的人,才能远离痛苦与烦恼,才能拥有快乐的人生。
522
文章
4
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载