Re: [問題] 如何將物件導向的概念應用至hanoi
:
: --
: ※ 發信站: 批踢踢實業坊(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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 2 之 4 篇):
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30