[OO思想]人翻书,翻书的操作是在人上还是书上

立轩 2019-4-8 16:50

我有个问题,有个类书,一个类人,现在人想翻书,那么翻这个方法是放在书的类上,还是人的类上

UMLChina潘加宇

一、区分业务建模和分析工作流中的类

首先,我们要区分业务建模和分析工作流中的类。

如果是业务建模工作流,建模的内容是组织流程中各个系统之间的协作,摄像机会拍到一个人肉系统做出翻书的行为,用业务序列图表达如图1。这个图只能如实描述所拍到的现实,无法"设计"。

图片



图1 摄像机拍到的人翻书的序列图(注意,书不作为一个智能系统出现,只是作为人的"翻书"操作的参数。)

这里假设谈论的"书"指的是实体书,而不是电子阅读器系统(平时说的"我买了个电纸书",实际上买的是阅读器系统)。人用电子阅读器系统看书的业务序列图,留个读者自己画。

如果是分析工作流,建模的内容是软件系统内部的结构和行为。如果软件开发人员的大脑容量、运算速度以及身体健壮程度是现在的一万倍,像图2那样做也是可以的,毕竟最早的时候,编程序就是用纸带穿孔嘛。

图片



图2 关于"高手"的传说

只不过现在的软件系统里需要封装的东西太多太复杂了,人脑直接二进制编码无法短时间搞定(也不是搞不定,就是时间长而已),所以,用面向对象的思维帮助人脑应对这种复杂性,是一种开发软件的方法。

如果决定用面向对象的思维来思考软件系统内部的机制,我们就假设软件系统由一些类来定义,这些类模拟了现实中的一些事物和概念,然后把软件系统需要承担的各种责任分解并分配到这些类中。

和图1所示场景相关的软件系统,如果用面向对象的思维,里面有什么类呢?

(1)如果这个软件系统不需要记住书和人的信息,系统里面的类没有"人"和"书"。例如图书馆装了一个视频监控系统。

(2)如果这个软件系统需要记住书的信息,不需要记住人的信息,那么系统里面的类有"书"但没有"人"。

(3)如果这个软件系统需要记住人的信息,不需要记住书的信息,那么系统里面的类有"人"但没有"书"。

(4)如果这个软件系统需要记住书的信息,也需要记住人的信息,那么系统里面的类有"书"也有"人"。

(5)如果这个软件系统需要记住书的信息,也需要记住人的信息,而且还需要记住"翻书"这个行为给人或书带来的影响,这应该就是问题所要问的。

注意:软件系统里面的"人"不等于外面真实的人肉系统。外面这个人肉系统是父母用DNA编码,老师升级了十几年得到的,目前宇宙间已知的最发达智能系统,里面那个"人"只是为了方便人脑把握问题复杂性而构思的一个模拟。到底模拟0.00001%还是99.99%,看软件系统需要封装的信息的复杂度了。

之所以啰嗦这么多才说到正题,是想要说明,轻飘飘的一句话背后并没有那么简单。

二、"翻书"是谁的责任

针对上一节的第(5)种情况,如果把"翻书是谁的操作"这个问题抛出后,只给3秒钟时间思考——

有的人会直接对应现实,现实中人翻书,翻书当然是人的责任;

有的人可能会迅速判断书的状态最值得关注,翻书是书的责任。如果这两个选一个招人,肯定选后者了。

不过,更严谨的思考应该是这样:

(1)如果"翻书"会引起"人"的状态变化,"人"有"翻书"的操作;

可能有人会想,"翻书"怎么会引起"人"的状态变化呢?这种先入为主的思想不可取。想想秦始皇焚书坑儒就知道了,也可以用状态机表示如图3。

图片



图3 人的状态机

"看书相当于吸毒"的时代离我们并不遥远,如图4。

图片

图4 几十年前的报纸(来自孔夫子旧书网)

(2)如果"翻书"会引起"书"的状态变化,"书"有"(被人)翻"的操作;

图片



图5 书的状态机

(3)如果"翻书"会引起"人"和"书"的状态变化,"人"有"翻书"的操作,"书"也有"(被人)翻"的操作;

(4)如果"翻书"不会引起"人"的状态变化,也不会引起"书"的状态变化,比如说,系统只要求像录像机一样记住某日某时某某人翻了某某书,没有其他逻辑。用来"记住某日某时某某人翻了某某书"的"翻书"操作放在哪里都无所谓。

内容概要:《学术研究提示设计 50 招》是一份详尽的指南,旨在帮助研究人员提高学术写作和研究效率。该文档涵盖了从论文撰写、润色、翻译、查重降重、参考文献管理、投稿审稿到文献阅读等多个方面的具体操作指令。每一章节均针对特定任务提供了详细的步骤和注意事项,例如如何撰写标题、摘要、致谢,如何进行英文润色、中英翻译,以及如何优化逻辑结构等。文档还介绍了如何利用AI工具进行文献分析、术语表提取和研究方向探索等内容,为研究者提供了全面的支持。 适合人群:适用于学术研究人员,特别是那些需要撰写、润色和提交学术论文的研究者,包括研究生、博士生及高校教师等。 使用场景及目标:① 提供一系列具体的指令,帮助研究者高效完成论文的各个部分,如撰写标题、摘要、致谢等;② 提供润色和翻译的详细指导,确保论文语言的准确性和专业性;③ 提供查重降重的方法,确保论文的原创性;④ 提供参考文献管理和投稿审稿的指导,帮助研究者顺利发表论文;⑤ 利用AI工具进行文献分析、术语表提取和研究方向探索,提高研究效率。 阅读建议:此资源不仅提供了具体的指令和方法,更重要的是引导研究者如何思考和解决问题。因此,在学习过程中,不仅要关注具体的步骤,还要理解背后的原理和逻辑,结合实际案例进行实践和反思。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值