求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
UML建模(工具EA)
UML概览
用例图
活动图
类图
对象图
顺序图
 



 
目录
UML图解:对象图(object diagram)
作者:俎涛(火龙果科技)
131 次浏览
 

为什么需要对象图建模

对象图是描述对象及其关系的图,学习对象图,首先要理解什么是对象:

这是英文的词典解释:

Object:a material thing that can be seen and touched。

翻译过来就是:

对象:是可以看到和触摸的物质事物。

可以这么说,我们看到的世界是对象构成的。因为现实世界的对象太多了,所以人采用分类的方式,把对象抽象成类,所以我们的词汇表里大部分的词都不是描述对象的,而是描述类(具有相似特征和行为的一组对象的抽象)。例如:人,马,桌子,汽车,飞机。

回顾上一篇 UML图解:类图,有关于对象和类的关系的介绍:

对象图是面向对象思维的结晶,是以对象的视角描述客观世界的事物:
  • 对象是客观世界存在物,占有空间
  • 具有内部构成
  • 对外表现特征
  • 具有行为
  • 跟外部发生作用
  • 现实世界对象很多,抽象为类:
  • 给类起个名字,能否反应其所代表的对象实例
  • 用属性描述对象的特征
  • 用方法描述对象的行为
  • 对象之间的关系抽象为类的关系:关联,聚合,组成,泛化,实现 等等。

     

    可以看出,对象是抽象类的基础,但是大多数时候,我们看到的都是类图,很少见到有人画对象图。那么,对象图到底有用吗? 我们来看下面的例子:

     

    从以上图例可以看出:

    对象图和类图的关系:
    对象图更接近于客观世界的图,在抽象类图之前,最好先建模对象图,这样的类图才落地。这就像“理论来自于实践”的哲学观。

    对象是客观存在的,而没有两个完全一样的对象,那么我们如何理解庞杂的万物呢?又如何描述这么多对象呢?我们所描述对象其实都是从某种角度对客观存在对象的映射,而这些对象看似不同,可能是由同样的更小的对象构成的,找到了这个同构的小对象,就找到了简化的描述和处理方法。就像上例,我们先从宏观角度找到对象:地图、蛇、食物,然后在分析他们的内在联系——地图、蛇、食物之间需要能够存在原子单元的对应,这样才能判断蛇吃掉了食物,食物在地图上的某个位置。这样我们就找到了“节点”这个基本对象,地图是按照节点进行坐标定位的,蛇是节点构成的,食物也是一种特殊的节点(可以被吃掉),这个寻找基本对象的过程,就像物质世界找到了原子、生物找到了细胞和基因。这个时候会让我们的认知透彻,也就有可能具有了操控事物的能力。这也正是贪食蛇游戏的分析设计关键所在。



    对象建模的关键:
    在众多的表面对象中寻找构成它们的基本对象,这是发现规律和共性的关键,是简化问题进而解决问题的必由之路。

     

    对象图有什么

    任何UML图都有语义、元素、关系和用途,下面对对象图做个列表描述:

    语义 描述对象在某个时刻的状态和关系
    元素 对象(object)
    关系 对象之间的连接(Link)
    用途 可以在分析类的时候描述对象之间的关系;可以用于描述运行时候的当前的对象快照

     

    图例:贪吃蛇游戏对象图

    为了让读者看的更形象,采用图例的方式介绍对象图的用法,下面是贪吃蛇游戏的对象图:


    对象图说明:

    如下是基于对象图生成的类的说明字典:

     序号  元素  说明
     1.  tail:Node  蛇的尾巴,是一个节点对象
     2.  body:Node[ ]  蛇的身体,是一组节点对象
     3.  head:Node
     蛇的头,是一个节点对象
     4.  food:Food  食物,地图上只有一个食物
     食物对象的属性当前是:
  • pointX=8
  • pointY=8
  • Width=1
  •  5.  snake:Snake  蛇对象,有多个对象构成:头、身体、尾
     蛇对象的属性当前是:
  • direction=up
  • score=10
  • longth=11
  •  6.  map:Map  地图对象,上面有一个食物对象和一个蛇对象
     地图对象的属性当前是:
  • Width=100
  • Color=white
  • Height=100
  •  

    说明:本文的模型采用建模工具EA建模。


    您可以捐助,支持我们的公益事业。

    1元 10元 50元





    认证码: 验证码,看不清楚?请点击刷新验证码 必填



    131 次浏览