This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

James の Blog::空中的向日葵 會員登入 會員註冊

« 上一篇 | 下一篇 »

今天我們來練習犁田(誤)。

今天我們拿狐大的例子,來練習犁田(又誤,咳...),練習如何以物件導向的方式來分析與建構出犁田分析系統...XD

算是給接下的繼承實作,暖暖場。

OK,不囉嗦,就給他雷下去。
以狐大提供的幾個案例來說,有騎士、機車、路、人孔蓋、下雨天、夜晚,而犁田的狀況又分為摔倒()、被撞()...等等,很多的名詞與事件。

首先,我們先把問題的定義犁(誤)釐清楚。我們想分析,什麼情況底下,比較容易發生犁田事件。
我們先將得到的資訊分類一下,實體的東西有:騎士、機車(交通工具)、所走的路線,有的有人孔蓋,有的是坑坑洞洞,還有白天或夜晚或下雨等情況。

依據前一篇所提的步驟,先決定物件的實體。

我們 Define 如下:
  1. Class 騎士  
  2.   public 名字  
  3.   public 載具  
  4.   public 行駛(起,迄)  
  5.   public 犁田機率(路況[])  
  6.   // Constructor  
  7.   new(){  
  8.     載具= new 交通工具()  
  9.   }  
  10.   
  11. Class 交通工具  
  12.   public 類型  
  13.   public 犁田度分析(路況[])  
  14.   
  15. Class 馬路  
  16.   private 起  
  17.   private 迄  
  18.   public 路況[]  
  19.   private 取得路障資訊()  
  20.   new(string from, string to){  
  21.     起=from;  
  22.     迄=to;  
  23.     取得路障資訊(); // 將路況回填到 路況[] 這個 public 屬性中  
  24.   }  
  25.   
  26. Class 人孔蓋  
  27.   public 狀態  
  28.   
  29. Class 坑洞  
  30.   public 深度  
  31.   
  32. Class 天候  
  33.   public 天氣型態  
  34.   public 天色  
  35.   private 取得天候()  
  36.   new(){  
  37.     取得天候(); // 取得天氣型態與天色  
  38.   }  
當然上面所呈現的是物件分析的結果,過程中,物件是不斷的在思考中去調整與更改(屬性與方法)的。

所以有了這些物件,我們可以來開始建構我們的分析程式:
  1. function float 犁田分析(string name, string motor, string from, string to) {  
  2.   騎士 o騎士;  
  3.   
  4.   o騎士 = new 騎士();  
  5.   o騎士.名字 = name;  
  6.   o騎士.載具.類型 = motor;  
  7.   
  8.   return o騎士.犁田機率(o騎士.行駛(from,to));  
  9. }  
我們在 Class 騎士 中有一個 行駛()的 Method,裡面的動作如下:
  1. function 路況[] 行駛(string from, string to){  
  2.   馬路 o馬路;  
  3.     
  4.   o馬路 = new 馬路(from, to);  
  5.   return o馬路.路況;  
  6. }   
在取得的路況中,我們有 路況[0]->人孔蓋 及 路況[1]->坑洞,於是我們將路況交給 騎士 的犁田機率()去分析:
  1. function float 犁田機率(路況){  
  2.   // 先分析載具的犁田度  
  3.   float 雷殘=載具.犁田度分析(路況);  
  4.     
  5.   // 再分析天候狀況  
  6.   天候 o天候= new 天候();  
  7.   
  8.   if (o天候.天氣型態.equals("下雨天")) {雷殘+=0.5;}  

如果你的網誌不支援引用網址自動搜尋功能,那麼你可以使用下列的直接引用網址來引用本文章:

http://blog.ithome.com.tw/trackback.php?id=51574