Re: [問題] 請教適合C++應用程式開發的書

看板C_and_CPP作者 (好人超)時間13年前 (2011/05/04 18:35), 編輯推噓8(8017)
留言25則, 7人參與, 最新討論串2/3 (看更多)
我剛開始學GUI程式的時候,流程是這樣的(我想初學者很容易這麼做吧 XD): (1) 開啟一個GUI專案(當時使用的語言是C#) (2) 一邊思考一邊把介面(Textbox、Button等)拉好 (3) 從Button的處理函式開始寫程式碼。譬如說我要寫個排序的程式: void btn_start(Object o, EventArgs args) // 以C#的語法為例 { string input = txtInput.Text; // 處理input,把string變成int陣列 // 排序演算法(一大串程式) // 把排序結果擺在textbox或其他什麼東西上面 } 這樣的程式絕對是可以跑的,拿去交作業也很ok 但是演算法跟視窗介面黏在一起,就會有一些討厭的缺點,譬如 (1) 我沒辦法把那個排序演算法拿到別的地方使用,除非複製貼上再修改 (2) 我沒辦法隨意的換掉排序演算法(譬如把bubble改成quick) 後來我就會先把演算法先用 console專案 寫好,譬如弄個 int* bubble_sort(int* inputs) { // 一大串排序演算法 // 重要的是,這個函式不應該有input/output的動作 // 譬如scanf, printf或cin, cout都不該寫在這裡 // 要不然拿去視窗介面的時候,還需要修改這個函式的內容 } int main() { // 讓使用者輸入一串數字(scanf或cin應該在這裡用) // 丟入 bubble_sort 函式 // 把結果輸出(printf或cout應該在這裡用) } 這樣只要在console程式底下除錯、確認函式是ok的 再拿到視窗程式去,不但可以重覆使用、而且也不會跟視窗的介面太緊密 這是個很簡單的例子,畢竟要怎麼漂亮的切割,我也還需要學習 XD 很多情況都比這個例子還要複雜難搞 但只要一想偷懶的話,介面跟演算法又黏起來了 XDDD 其實我還做不到 MVC 那麼好的規劃 但是避免直接把演算法寫在 handler function 裡,其實就差很多了 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46 ※ 編輯: james732 來自: 140.117.171.46 (05/04 18:39)

05/04 18:43, , 1F
我的第一個視窗程式是 WIN32... > <
05/04 18:43, 1F
其實在C#之前,我就先寫過Win32跟MFC了 不過以上兩者都讓我迷失在奇怪的細節....orz ※ 編輯: james732 來自: 140.117.171.46 (05/04 18:47)

05/04 18:47, , 2F
我的第一個是小黑窗(逃
05/04 18:47, 2F

05/04 19:00, , 3F
View在存取自己的控件時, 假如是TextBox, 但是顯示的
05/04 19:00, 3F

05/04 19:01, , 4F
資料是整數時, 此時setter就可寫成 void setText(int)
05/04 19:01, 4F

05/04 19:02, , 5F
getter則是 int getText(), 我覺得這才夠格稱為真正的
05/04 19:02, 5F

05/04 19:02, , 6F
Accessor
05/04 19:02, 6F
板主不考慮發篇文嗎 XD ※ 編輯: james732 來自: 140.117.171.46 (05/04 19:03)

05/04 19:05, , 7F
@"@
05/04 19:05, 7F

05/04 20:33, , 8F
MVC是個奇怪的東西…它在Cocoa-Touch、Qt、MFC裡
05/04 20:33, 8F

05/04 20:33, , 9F
長的都不太一樣 =w=
05/04 20:33, 9F

05/04 21:04, , 10F
MVC 只是一個概念, 要怎麼實作本來就看人...
05/04 21:04, 10F

05/04 21:18, , 11F
mvc重要的是觀念阿
05/04 21:18, 11F

05/04 21:50, , 12F
05/04 21:50, 12F

05/04 21:51, , 13F
看到View/Controller combined在一起,變成Model/View
05/04 21:51, 13F

05/04 21:55, , 14F
iOS的說明文件 http://goo.gl/mCOhw
05/04 21:55, 14F

05/04 21:56, , 15F
Fig 4-6,是DP書中的MVC。Fig 4-7,Cocoa的MVC。
05/04 21:56, 15F

05/04 21:56, , 16F
我比較喜歡Cocoa的MVC
05/04 21:56, 16F

05/04 21:57, , 17F
M/V沒關聯,只有C認識M/V
05/04 21:57, 17F

05/04 21:57, , 18F
Cocoa的MVC超神的....
05/04 21:57, 18F

05/04 21:57, , 19F
這樣M/V的再利用性,我認為比較高。
05/04 21:57, 19F

05/04 21:59, , 20F
C的角色相當於DP所說的Mediator,再利用性會比較低。
05/04 21:59, 20F

05/04 22:15, , 21F
小弟我研所用BCB6時, 也是先拉介面再把實作寫在
05/04 22:15, 21F

05/04 22:15, , 22F
Button1Click() 裡; 重複的功能就複製貼上....XD
05/04 22:15, 22F

05/04 22:31, , 23F
我還是比較喜歡把C做成Command+Strategy, 之所以會用
05/04 22:31, 23F

05/04 22:33, , 24F
Mediator也是有Observer的味道, 但是Model若為Plain
05/04 22:33, 24F

05/04 22:34, , 25F
Old Object, 感覺就沒啥必要了
05/04 22:34, 25F
文章代碼(AID): #1DmImANA (C_and_CPP)
文章代碼(AID): #1DmImANA (C_and_CPP)