所在位置:答疑 - 内容   
人走路怎么分析
 

走单骑(376***455)10:07:55

我分析的短信系统,大家看下有没问题?操作控制类,主要为控制短信猫的发短信、收短信、信号刷新功能。
潘加宇(3504847)14:57:21
这些类可以实现系统,但这很可能是假面向对象,和面向过程没有区别,没有得到面向对象的好处。
应该思考:你的系统之所以能卖钱,是因为懂得哪些概念之间的关系?就像寻找点钞机的类,不能直接找"点钞器"、"验钞器",这是没有价值的思考。而应该思考,为什么我这个系统能验钞?我懂得什么?结果应该类似于:

潘加宇(3504847)14:58:27

潘加宇(3504847)14:58:57

潘加宇(3504847)15:00:08
如果你的类图长得像用例图(人能走路→人有"走路算法"类),说明你所做的进一步思考没有价值,抽象出问题了。

走单骑(376***455)15:11:52
潘老师,我对分析又迷惘了
潘加宇(3504847)15:12:23
那就按照你自己熟悉的方式写代码
潘加宇(3504847)15:12:41
然后,按照我上面说的再找类,就知道哪些类比较好了

走单骑(376***455)15:27:28

潘老师,人走路,是不是这样呢?
潘加宇(3504847)16:43:37
类是系统的组成部分,要做一个"人"系统,就不会有"人"这个类了,有的应该是心脏、肾,手 脚 眼睛 耳朵,皮肤,大脑,这些类协作起来完成走路,吃饭等功能

走单骑(376***455)19:40:16


请问,我这样画人走路分析图有没问题?
潘加宇(3504847)19:46:56
序列图还可以,类图上的关联是不存在的,关联是静态关系,就是属性,眼睛不是大脑的属性
潘加宇(3504847)19:48:25
存在关联的地方,应该类似于:【眼睛】组合【眼球+眼睑+。。】,【心脏】 组合 【心室+瓣膜+。。】

走单骑(376***455)19:50:07
那类图是不是去掉关联?
潘加宇(3504847)19:50:56
去掉

走单骑(376***455)19:52:15
就是三个独立的类摆在那儿?
走单骑(376***455)19:53:55
这三个类只是依赖关系?
潘加宇(3504847)19:54:12
如果就这三个类,确实就是依赖关系
潘加宇(3504847)19:54:23
用例运行时才会建立

走单骑(376***455)19:55:19
嗯好的,谢谢潘老师,我又理解了一点
潘加宇(3504847)19:56:46
但是,软件系统和人体运行不一样
潘加宇(3504847)19:57:40
人体组件是真实存在的,要描述也只能这样描述
如果用面向对象的方法做一个能走路的人,系统里面可能是没有眼睛、大脑、脚这样的分类的
潘加宇(3504847)19:59:16
眼睛(输入界面)会有,脚(输出动作的接口)会有,大脑要进一步打碎,可能会有地图、地标,危险物这样的类

潘加宇(3504847)20:02:07
上面你画的序列图中,这个人之所以有价值,是因为大脑能判断应该如何行动,而这一点,就简单封装在【大脑】里面,那么大脑类的代码就复杂得不得了
潘加宇(3504847)20:02:22
所以,也并没有得到面向对象的好处

潘加宇(3504847)20:03:01
要得到面向对象的好处,就得把大脑里的判断机制显式表达出来,通过地图、地标,危险物这样的类来封装

走单骑(376***455)20:04:41
那是我们只能用类模拟大脑的部分功能了?
潘加宇(3504847)20:05:40
"模拟大脑的部分功能"--你要人能走路,你用什么模拟都得模拟,判断走路的逻辑不会从天上掉下来

孤独的散步者(80***880)20:05:48
恩恩,应该是吧大脑中的一些东西抽象出来。
潘加宇(3504847)20:10:01
面向对象之所以被误用,就是因为很多开发人员幼稚的想法:哪个类负责计算走路方向,好办,搞一个"方向计算器"或"方向计算接口"来封装,以为这样,问题就自然消失了

走单骑(376***455)20:13:00
潘老师我就是这类误用的人,我还怎么改变呢?
潘加宇(3504847)20:14:27