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

3.7 关于对象图

写过代码的朋友比较容易理解什么是对象,类(class)的实例(instance)就是对象(object)。第1章大话UML曾讲解过对象图,我们再来复习一下。
这是Person类:

图 1.36 Person类

下面这句代码将Person类实例化为person对象:
Person person = new Person();
用对象图表示为:

图 1.37 person对象

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


图 1.38 公司和员工的关系

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


图 1.39 公司A与员工甲、乙、丙的关系

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

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

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

请看下一节……

作者:张传波

创新工场创业课堂讲师

软件研发管理资深顾问

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

www.umlonline.org 创办人

转载于:https://www.cnblogs.com/james1207/p/3325041.html

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

  1. 《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.2 类图的基本知识

    摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力.类图是锻炼面向对象分析(OOA ...

  2. 《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.6 考试管理系统(类图综合训练)

    摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力.类图是锻炼面向对象分析(OOA ...

  3. 分析业务模型 - 类图 新书《火球 UML大战需求分析》试读 第3章

    摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力.类图是锻炼面向对象分析(OOA ...

  4. 分析业务模型-类图(Class Diagram)(上)

    摘要:类图(Class Diagram)可能是用得最多的一种UML图.类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力.类图是锻炼面向对象分析(OOA ...

  5. 《火球——UML大战需求分析》——详细介绍及样章下载

    简介: 本书融合UML.非UML.需求分析及需求管理等各方面的知识,帮助读者解决UML业界问题.需求分析及需求管理问题.全书主要介绍UML的基本语法.面向对象的分析方法.应用UML进行需求分析的最佳实 ...

  6. 《火球——UML大战需求分析》(0.2)——目录

    说明: <火球--UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  7. 《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.3 给客户带来价值,需求分析之正路...

    第2章 耗尽脑汁的需求分析工作 摘要:怎么又变了?当初就应该让客户书面签字确认!你可能会经常发这样的牢骚,可是就算客户书面确认,客户还是会"赖账"的!软件项目的其中一项不变真理:人 ...

  8. 《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习

    说明: <火球--UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  9. 《火球——UML大战需求分析》(第1章 大话UML)——1.1 UML基础知识扫盲

    说明: <火球--UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

最新文章

  1. vue.js 源代码学习笔记 ----- 工具方法 lang
  2. 从无到有,支付路由系统升级打怪之路|原创
  3. linux c++ 服务器端开发面试必看书籍
  4. JQUERY 阻止a 标签链接
  5. dagger android,dagger.android多模块项目实现
  6. linux shell curl 超时与重试
  7. C# 接口持有结构体会导致装箱问题
  8. gnuplot绘图学习
  9. 招募 | 清华大学计算机系副教授黄民烈招募NLP方向博士后
  10. linux获取ad用户列表,Powershell小技巧之查询AD用户
  11. LiveVideoStackCon 2020上海 6月见
  12. 使用wireshark抓包工具 检测不到本地网卡
  13. python 学习中遇到的问题(持续更新中)
  14. 南华大学计算机学院吴取劲,一种基于图深度优先搜索的基本路径集自动生成优化算法-南华大学学报.PDF...
  15. Mac OS X 10.7.2 Lion下快速锁定屏幕
  16. 对step文件进行信息抽取算法
  17. 通过Expression Tree来扩展MVC中的HtmlHelper 和 UrlHelper
  18. 【Hadoop】Hadoop大数据架构及关键组件
  19. html文件关联异常怎么修复,在Win7系统中,如何修复exe文件关联错误?
  20. 测试VPS线路与网络的小帮手

热门文章

  1. sourcetree提示无效路径_关于今明可转债申购的温馨提示
  2. python怎么打断点_Pycharm如何打断点的方法步骤
  3. c语言程序设计教程课后选择题答案,C语言程序设计教程课后习题包括答案.docx...
  4. 蒙文字体怎么安装_我们来聊一聊iOS13的“字体”该怎么用?
  5. break lab c语言,C语言printf详解
  6. 恶意文件 大数据案例库_无文件恶意软件感染完整指南
  7. 系统学习机器学习之神经网络(五) --ART
  8. linux系统中find怎么用,Linux系统中查找命令find的使用方法(一)
  9. Hive 使用SQL统计出每个用户的累积访问次数
  10. C语言开发里指针到底快还是不快?(底层汇编解释)