Re: [問題] 如何將物件導向的概念應用至hanoi

看板OOAD作者 (何逸凡)時間16年前 (2008/04/13 09:19), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串4/4 (看更多)
※ 引述《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)

04/17 01:52, , 1F
可以多請教一下關於那句 " 我要拿這個物件來幹什麼 " ?
04/17 01:52, 1F

04/21 13:53, , 2F
Aspect-oriented?
04/21 13:53, 2F

04/22 08:19, , 3F
這種抽象說得很棒
04/22 08:19, 3F

04/22 08:21, , 4F
不但可以討論solve怎麼做,還可以討論solve怎麼證明
04/22 08:21, 4F
文章代碼(AID): #180L-bMj (OOAD)
文章代碼(AID): #180L-bMj (OOAD)