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

1元 10元 50元





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



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
UML 图解:对象图(object diagram)
 
俎涛 ,火龙果软件工程技术中心
  26982  次浏览      18
 2020-2-17
 

为什么需要对象图建模

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

这是英文的词典解释:

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建模、生成代码、生成数据库。



    UML图解系列:

    1.UML概览
    2.用例图
    3.活动图
    4.类图
    5.对象图
    6.顺序图
    7.类图和代码的映射关系解读( C++ )

     

    后记

    希望您读了此文后有所受益。

    如果您有经验乐于分享,欢迎投稿给我们

    如果您对我们的培训、咨询和工具感兴趣:

  • 课程:基于UML和EA进行分析设计  
  • 课程:MBSE(基于模型的系统工程)  
  • 课程:基于模型的需求管理)方法与实践
  • 课程:基于SysML和EA进行系统设计与建模  
  • 课程:企业架构建模
  • 课程:系统架构建模方法与案例
  • 课程:领域驱动的建模与设计
  • 课程:基于模型的设计
  • 课程:业务建模与业务分析
  • 建模工具EA
  • 基于模型的需求管理工具:iSpace
  • 咨询方案:MBSE(基于模型的系统工程)
  • 咨询方案:基于UML的模型驱动的开发
  • 欢迎联系我们: 俎涛Zutao@uml.net.cn

       
    26982 次浏览       18
     
    相关文章

    UML概览
    UML图解:用例图(Use case diagram )
    UML图解:活动图(activity diagram )
    UML图解:类图(class diagram )
    UML图解:对象图(object diagram)
    UML图解:顺序图( sequence diagram )
     
    相关文档

    模型跟踪:跟踪图、矩阵、关系(建模工具EA)
    自定义表格(Custom Table)在EA中的使用
    元素的详情浏览控制
    UAF 1.2规范解读(DMM 和 UAFML )
    EA中支持的各种图表
    EA中的界面原型建模
     
    相关课程

    UML与面向对象分析设计
    UML + 嵌入式系统分析设计
    业务建模与业务分析
    基于SysML和EA进行系统设计与建模
    基于模型的需求管理
    业务建模 & 领域驱动设计