2017-07-26 24 views
-1

請有人可以幫我下面的問題,我無法理解它,還幫我它的解決方案試圖設計的YakShop一個網上商店

的YakShop 你的新客戶是犛牛生活在苔原上的牧羊人放牧一羣犛牛。每過一段時間,他都會收到從他那裏購買犛牛毛或牛奶的顧客。但是他決定在互聯網上開一家商店,以便他可以擴大視野,並在常規客戶之外實際銷售他的產品。他決定僱用你作爲他的新網店的開發人員。你已經和他進行了幾次會面,並且你們已經想到了一些用戶故事,這樣你們就可以有一個清晰的焦點,並且不會花時間......好吧,基本上可以剃掉犛牛;-)

從互聯網上的研究,你當然知道,像人類一樣的犛牛也年齡增長,隨着年齡的增長,他們會減少牛奶,直到他們終於死於老年。與人類相反,標準的犛牛年包括100天。

牧羊人目前擁有全部來自「LabYaks」部落的犛牛。這個部落以其在羊毛質量,牛奶味道和所述商品的生產率方面的一致性而聞名。牧羊人給了你關於LabYaks的以下事實:

•每天LabYak產生50-D * 0.03升牛奶(D =以天爲單位的年齡)。 •至多每8 + D * 0.01天,您可以再次剃刮LabYak(D =以天爲單位的年齡)。 •犛牛1歲時可以先剃毛。 •一個LabYak死他變成10

假設 •您開拓YakShop網店爲0天的那一刻的那一天,所有的犛牛有資格成爲剃光,因爲你們兩個人花了相當多的時間設置這家商店,牧羊人沒有能夠看到他的牧羣。 •每天早上,牧羊人擠奶並剃去他的犛牛。沒有資格在當天刮鬍子的犛牛今天不能剃光。 例子:誰開始了第0天爲4年的犛牛,可以在當天再次剃13.

用戶故事 YAK-1:作爲一個犛牛牧者,我希望能夠在一個XML文件中讀取包含關於我的羣體的數據,以便我可以查詢它。 輸入herd.xml:

<herd> 
    <labyak name="Betty-1" age="4" sex="f"/> 
    <labyak name="Betty-2" age="8" sex="f"/> 
    <labyak name="Betty-3" age="9.5" sex="f"/> 
</herd> 

N.B.年齡在標準犛牛年內給予

你的程序應該採取2個參數:

  1. 的XML文件中讀取
  2. 整數t,佔天所經過的時間。 N.B. T = 13意味着每天12已經過去時,但13天還沒有開始
  3. 對於T

輸出= 13:

In Stock: 
    1104.480 liters of milk 
    3 skins of wool 
Herd: 
    Betty-1 4.13 years old 
    Betty-2 8.13 years old 
    Betty-3 9.63 years old 

輸出爲T = 14:

In Stock: 
    1188.810 liters of milk 
    4 skins of wool 
Herd: 
    Betty-1 4.14 years old 
    Betty-2 8.14 years old 
    Betty-3 9.64 years old 
+0

這是一個沒有任何努力的任務文本。 –

回答

0

的對象模型很簡單 - YakShop包含許多犛牛。每個犛牛都有(名字和initialAgeInYears)。爲了避免破壞封裝,Yak和YakShop將提供所需的方法(儘管有些可能是便利的私有方法)。 這是部分代碼,僅提供對象模型的提示。避免像toString(),equals(),set/get等通用代碼。

public class Yak { 
    private double initialAgeInYears; 
    private String name; 
    public Yak(String name, double intialAgeInYears){ 
     //constructor code 
    } 
    public boolean isAlive(int onDay){ 
     // check death age of Yak 
    } 
    public boolean canShave(int onDay){ 
     // if eligible on first day 
     // and after duration of 8 + currentAgeInDays * 0.01 
    } 
    public getMilkInLit(int onDay){ 
     // 50 - 0.03 * currentAgeInDays 
    } 
    // few convenience private methods converting age (years<->days) etc. 
    // and get/set as in required scope 
} 

public class YakShop { 
    private Set<Yak> yaks = new HashSet<>(); 
    public void todaysStatus(int onDay){ 
     double milkQty = 0; 
     int woolSkins = 0; 
     for (Yak yak : yaks) { 
      for (int days = 0; days < onDay; days++) { 
       milkQty += yak.getMilkInLit(days); 
       if (yak.canShave(days)){ 
        woolSkins++; 
       } 
      } 
      System.out.println(yak.getName() + " - " + 
      yak.getCurrentAgeInDays(day)/100); 
     } 
     System.out.println("Total Milk stock: " + milkQty); 
     System.out.println("Total Skins: " + woolSkins); 
    } 
}