《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.7 关于对象图

摘要类图(Class Diagram)可能是用得最多的一种UML图。类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力。类图是锻炼面向对象分析(OOA:Object-Oriented Analysis)和面向对象设计(OOD:Object-Oriented Design)思想的重要的工具,是业务结构建模的重要工具。本章将会有大量的实战练习,你的OOA思想将会接受极大的考验和提升。



3.7 关于对象图


写过代码的朋友比较容易理解什么是对象,类(class)的实例(instance)就是对象(object)。第1章大话UML曾讲解过对象图,我们再来复习一下。
这是Person类:
《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.7 关于对象图_第1张图片

图 1.36 Person类

下面这句代码将Person类实例化为person对象:
Person person = new Person();
用对象图表示为:
《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.7 关于对象图_第2张图片
图 1.37 person对象

一个公司包含多个员工,用 类图这样表示:

image037.jpg
图 1.38 公司和员工的关系

此图的公司和员工并没有指具体是哪个公司或者哪个员工,如果某公司A有甲、乙、丙三位员工,用对象图则可以这样表示:

《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.7 关于对象图_第3张图片
图 1.39 公司A与员工甲、乙、丙的关系

“A:公司”表示对象A是公司这个类的实例;如果是“:公司”,则表示这是公司这个类的实例,但没有给出这个实例的具体名称。
类是某一类东西的抽象或者叫统称,而对象则是具体的一个东西,A公司如果有1000名员工,那么就需要画一千个“包含”才能表示出A公司与所有员工的关系。对象与对象之间如果有关系,那肯定是一对一的关系,因为两者都是具体的东西,不可能存在第二个。比方说张三和李四是好朋友,他们的关系就是一对一的好朋友关系,因为不可能再有另外一个张三或者李四,但如果我们将张三和李四抽象为人时,一个人可以与很多人交朋友,这样就可以建立多对多的朋友关系。
需求分析时,其实我们接触到的是一个个具体的东西,如:见到一个个具体的人,接触到一份份具体的业务数据等等,这些具体的东西其实就是对象。而我们分析 需求不能就事论事,我们需要将这些对象提炼为类,这样的分析才更具有代表性。我们 软件系统并不是用来解决具体某次事件中的一个问题,而是希望能解决某一类问题。
在我的工作经历看来,需求分析工作中很少需要用到对象图。我基本不会使用对象图,而直接使用类图,在少数需要使用对象图时,我甚至会直接用类图代替,这样做也并没有不妥而且也容易理解和解决问题。

前面有一个练习,让你用类图画出你和你的另外一半的关系,其实准确地说你和你的另外一半已经是很具体的一个人了,应该用对象图来表达,但我觉得将其“混淆”为类图也没有什么不妥,而且更简单易懂。
前面“类的递归关系”小节提到“自包含”“自引用”的问题,“自”的意思并不是指对象自己本身,而是指其他的属于同一个类的实例。

对象图就简单介绍到这里,如果你对类图还不是很熟悉的话,建议你对象图了解到这样的程度就可以了。



请看下一节……




作者:张传波

创新工场创业课堂讲师

软件研发管理资深顾问

《火球——UML大战需求分析》作者

www.umlonline.org 创办人

你可能感兴趣的:(UML,需求,需求分析,需求管理,火球)