VFP開啟物件導向的大門

  • 3582
  • 0
  • 2017-09-04

VFP(Visual FoxPro)是一款早期的編譯器,但是語法方便性還是讓人印象深刻。可惜的是微軟並沒有繼續支持VFP的更新。

也是小弟第一個應用分層概念的作品並且使用物件化的方式規劃程式碼,在這只想做一個回憶的紀錄留存。

程式碼範例 (VFP開啟專案檔: ~\net\Wms_T_Server\Cdisk\all_user\kevin-pc\user_app\wms_simulation.pjx)。執行(目前類別快識.scx)後觀看說明。


 

下圖是分層的功能切割示意 : 

以下是各個類別的職責與分層的定位 : 

  1. 最底層 :

    基本路徑(default_path_class)、管理資料夾(md_file_folder_class.prg)、TABLE連線(table_connect_class)、SQL命令管理(sql_command_class)

  2. 中間層 :

    SQL UI權限類別(sql_ui_child_class 繼承 sql_command_class)、SQL查詢子類(sql_select_tb_child_class 繼承 sql_command_class)、SQL_UPD類別(sql_replace_server_tb_child_class 繼承 sql_command_class)、邏輯類別管理(all_rep_server_tb_decision_logic)、各TB的邏輯類別(各個資料表都會建立)、錯誤攔截(error_handle_class)
  3. 最外層 : 

    UI介面類別(ui_state_class)、UI介面統一資料傳遞類別(user_upd_func_form_replace_s_data)、共同查詢介面(together_search_form_ob)、防呆(fool_proof_design_class)

感想 :

程式封裝不僅是單存的直接將想法打成程式碼而已了。要考慮的面向變比較多,共同點需求差異點哪些是該類需共同提出來的行為、如何達到開閉性的封裝、每個層次或功能需要有哪些類別組成等....。
要點 :
  • 從核心的類別到其它功能附屬的類別,每個類別功能界線要劃分的很清楚。
  • 要隱藏哪些行為與資訊??
  • 整體的架構是否完善。
  • 是否有不必要的程式碼甚至是多餘的類別。

在這個時期在撰寫類別時並沒有太多物件導向的概念,導致單一類別的職責過多且部分類別的相依性非常高。且不清楚VFP的介面如何撰寫所以整個系統的架構是沒有用介面導向來規劃各個類別的封裝導致每個類別的關注點委靡不振

 

感謝 "章立民" 老師 所撰寫的電子書 Visual FoxPro 6.X中文版程序设计:应用实务篇

 

最後要感謝 "Chris Lee" 分享自己著作的書vfp oop basics。開啟我走入物件化的大門。

該書重點只有一句話:任何以手動方式能做的事,也都要能以自動化的方式做到。

 


多多指教!! 歡迎交流!!

你不知道自己不知道,那你會以為你知道