为什么需要对象图建模
对象图是描述对象及其关系的图,学习对象图,首先要理解什么是对象:
这是英文的词典解释:
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图解系列:
后记
希望您读了此文后有所受益。
如果您有经验乐于分享,欢迎投稿给我们
如果您对我们的培训、咨询和工具感兴趣:
|