看板 OOAD 關於我們 聯絡資訊
※ 引述《king19880326 (OK的啦~我都可以接受)》之銘言: : 用物件導向的概念來實作一個河內塔 : A, B, C代表三柱 : java hanoi CBAB C 表示說由小到大的盤子依序在C, B, A, B柱 : 且目的地是C柱 給一點路過的想法:) 有放disc的rod (stack), 每個disc有key (mutablity doesn't matter,but necessarily comparable) rod必需滿足sorted特性. (extends stack and override push(T) ) 還有一個buffer (any collection) 然後用包的,有disc,有rod, buffer還有位置的時候系統可以從任何一個非空的rod移掉一個disc buffer非空的時候可以在不違反rod特性的情況下,從buffer丟一個disc到rod For hanoi tower,加入, boolean testSolved(); /* returns true if all discs at the destination rod */ void solve(boolean verbose); /* testSolved() == true after called, verbose == true if progress is needed to be logged */ 我是認為"怎麼解?"這個問題, 只是最後面這一層要怎麼設計solve(boolean)這個function, 已經是怎麼去"使用"物件的層次了,並不影響前面去"定義"物件的特性. 不管Hanoi Tower的recursive solution有沒有其它應用, (這還是限制只解Hanoi Tower的最佳解的時候) 但至少Hanoi Tower的結構我就不認為那是全然的Trivial:) 有時候回頭思考以前教我OO的老師提示過的話,都會覺得滿有意思的:) 她覺得設計出有用的物件的第一步 就是擺脫"我要拿這個物件來幹什麼"這種想法, 所以,她超喜歡出這種本質上function就能搞定的題目來當練習-.-" 分析完以後會發現實作還是一模一樣(爆)......XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.152.7 ※ 編輯: Eventis 來自: 61.64.152.7 (04/13 09:44)
KanoLoa:可以多請教一下關於那句 " 我要拿這個物件來幹什麼 " ? 04/17 01:52
adxis :Aspect-oriented? 04/21 13:53
yauhh :這種抽象說得很棒 04/22 08:19
yauhh :不但可以討論solve怎麼做,還可以討論solve怎麼證明 04/22 08:21