首页 > 代码库 > 第二章.给客户所需之物(1)

第二章.给客户所需之物(1)

用例:用例是捕捉新系统或软件变更的潜在需求技术。每个用力提供一个或多个场景(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 import java.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)