第二章.給客戶所需之物(1)
阿新 • • 發佈:2017-07-16
pan tin 外部 starting tar simulator color exc 運行
用例:用例是捕捉新系統或軟件變更的潛在需求技術。每個用力提供一個或多個場景(scenario),傳達系統如何與終端用戶(end user)或其他系統交互以實現特定目標。
什麽意思?我也沒看懂?
一個用例,三個部分。
1.清楚的價值:
每個用例對於系統都必須有明確的價值(clear value)。加入用例無助於客戶實現目標,這個用例便沒有什麽價值。
2.起點與終點:
每個用例都必須有明確的起點(starting point)和終點(stopping point)。某件事開始此流程,然後要有條件(condition)指明此流程已完成。
3.外部啟動者:
每個用例由外部啟動者(external initiator)開啟。有時啟動者是人,有時可能是系統外的任何事物。
看個具體的用例:
上圖是一個用例,關於用例的解讀:
用例就是完成特定目標的具體步驟。
根據用例寫代碼:
DogDoor.java:
1 package com.headfirst.dogdoor; 2 3 public class DogDoor { 4 private boolean open; 5 6 public DogDoor(){ 7 this.open = false; 8 } 9 10 public void open(){ 11 System.out.println("The dog door opens.");12 open = true; 13 } 14 15 public void close(){ 16 System.out.println("The dog door closes."); 17 open = false; 18 } 19 20 public boolean isOpen(){//返回門的狀態 21 return open; 22 } 23 }
Remote.java:
1 package com.headfirst.dogdoor; 2 3 importjava.util.Timer; 4 import java.util.TimerTask; 5 6 public class Remote { 7 8 private DogDoor door; 9 10 public Remote(DogDoor door){ 11 this.door = door; 12 } 13 14 public void pressButton(){ 15 System.out.println("Pressing the remote control button ..."); 16 if(door.isOpen()){ 17 door.close(); 18 }else{ 19 door.open(); 20 } 21 22 Timer timer = new Timer(); 23 timer.schedule(new TimerTask(){ 24 public void run(){ 25 door.close(); 26 timer.cancel(); 27 } 28 }, 5000); 29 } 30 }
DogDoorSimulator.java:
1 package com.headfirst.dogdoor; 2 3 public class DogDoorSimulator { 4 public static void main(String[] args){ 5 DogDoor door = new DogDoor(); 6 Remote remote = new Remote(door); 7 8 System.out.println("Fido barks to go outside..."); 9 remote.pressButton(); 10 System.out.println("\nFido has gone outside..."); 11 System.out.println("\nFido‘s all done..."); 12 13 try{ 14 Thread.currentThread().sleep(10000);//獲取當前運行線程對象並讓其休眠10s 15 }catch(InterruptedException e){} 16 System.out.println("...but he‘s stuck outside!"); 17 System.out.println("\nFido starts barking..."); 18 System.out.println("...so Gina grabs the remote control."); 19 remote.pressButton(); 20 System.out.println("\nFido‘s back inside..."); 21 } 22 }
參考網址:
timer.schedule():http://blog.csdn.net/tiancizhenai/article/details/7050302
TimerTask():http://blog.csdn.net/ahxu/article/details/249610
timer.cancel():http://www.cnblogs.com/lingiu/p/3782813.html
第二章.給客戶所需之物(1)