作者H45 (!H45)
看板OOAD
标题Re: [问题] 如何将物件导向的概念应用至hanoi
时间Mon Apr 7 23:08:43 2008
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 140.112.243.43
: 推 H45:现在有一种东西叫河内塔,还有一种东西叫盘子,塔可以放盘子 04/07
: → king19880326:河内塔是指三根柱子吗?? 04/07
: → king19880326:所以移动盘子的部分算是河内塔在做罗?? 04/07
: 推 H45:没有标准答案,只有最适合的做法。你觉得是「谁」在移动盘子? 04/07
: 推 H45:有办法回答我的问题,就知道移动盘子是谁在做了! 04/07
: → king19880326:感谢指教<(_ _)> 04/07
: 推 tinlans:没必要硬用物件导向,不然封装、继承、多型你要怎样套? 04/07
: → tinlans:而且真正的物件导向并不鼓励无意义的继承... 04/07
tinlans 说的没有错,物件导向并不是要我们做无意义的继承,但是物件导向也没有
说一定要套封装、继承、多型。
光就「物件导向」这四个字的意义只是以「物件」为基础来模拟 (Model) 真实世界的
东西,所以物件导向的分析第一步就是找出有哪些「物件」要被建立,尽管这个例子
简单到物件少到只有两三种:河内塔、盘子、或者柱子,但是这个问题是做练习还是
无意义什麽的我不管,在这边就是讨论如何以「物件」的角度来设计这样的一个软体。
在找出所有要被建立的「物件」之後,下一步就是找出每个物件之间的关系。当您了解
每个物件之间如何交流互动之後,才有办法决定「物件」拥有哪些「成员」,而这些「
成员」也就是所谓的「属性」和「方法」,尽管这个例子简单到有些物件可能连一个「
方法」都没有,但是河内塔摆明了就是在做练习而已,我尽可能地描述「物件导向」的
精神在哪边,它是以何种思维来开发软体的,如此而已。
话说回来,河内塔问题用一个函式 (function) 就可以解决,它的复杂度低到不适合用
物件导向来模拟 (Model) 每个物件,它的所有变化也只有柱子的数目和盘子的数目,这
两个变数的改变并不会使河内塔的问题用物件导向就比较好解决,所以真正要解决河内
塔问题的话,还是建议写成一个函式就足够了!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.172.148