第二章.给客户所需之物(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

时间: 2024-08-08 09:40:15

第二章.给客户所需之物(1)的相关文章

实现 RSA 算法之 C 语言实现(第二章)(老物)

第二章 如何实现应用RSA算法 趁着白天在自家店里的闲暇时间来写写第二章了,假设记住了第一章的各种定理之后,我们又该如何实现RSA密码的加密解密呢?也懒得废话了,直接进入正题吧. 先回顾几个知识点: 1.模运算的性质: 结合律:(a % p * b) % p = (a * b) % p 可知当a == b时,(a % p * a) % p = (a * a) % p 2.欧拉定理 a^φ(n) ≡ 1 (mod n) 3.乘法逆元性质 e * d ≡ 1 (mod n) => e * d ≡ 1

Android艺术开发探索——第二章:IPC机制(下)

Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvider ContentProvider是Android中提供的专门用来不同应用之间数据共享的方式,从这一点来看,他天生就是适合进程间通信,和Messenger一样,ContentProvider的底层实现同样也是Binder,由此可见,Binder在Android系统中是何等的重要,虽然Conten

高项3.7日第一次课,第一章信息化基础知识与第二章信息系统服务管理梳理

第一章 信息化的基础知识 1.国家信息化体系要素: 主要包括6要素,信息技术应用(龙头).信息资源(关键).信息网络(必要手段).信息技术产业(基础).信息化人才(成功之本).信息化法规政策和规范(保障). 2.电子政务: 电子政务建设的指导原则: (1)统一规划,加强领导. (2)需求主导,突出重点. (3)统一规划,拉动产业. (4)统一标准,保障安全. 主要任务: (1)电子政务网络由政务内网和政务外网构成,两网之间物理隔离,政务外网与互联网之间逻辑隔离.政务内网主要是副省级以上政务部门的

软件工程读书笔记(2)——第二章 软件过程

第二章 软件过程 软件工程的目标是在规定的时间和预算内开发出高质量软件. 软件项目失败的主要原因几乎与技术和工具没有任何关系,更多的是由于缺少过程规范,只有建立规范的软件开发过程,并持续不断地加以改进,才能管理和控制软件产品的质量. 一.软件过程的概念 1.任务思维与过程思维 软件发展的前期阶段:强调软件开发结果,忽略软件开发过程.(类似于黑盒子) Watts Humphery首先将过程管理的原则和思想引入软件开发过程中,将软件开发任务看做是一个可控的,可度量的和可改进的过程. 2.软件过程的定

《TCP/IP详解 卷1:协议》读书笔记(第一章 概述 & 第二章 链路层)

第一章 概述 TCP/IP协议族:四层协议系统 链路层(数据链路层.网络接口层)设备驱动程序和网络接口卡. 网络层(互联网层)处理分组在网络中的活动,点对点服务.IP.ICMP.IGMP 运输层提供端对端通信.TCP.UDP 应用层处理应用程序细节.Telnet.FTP.SMTP.SNMP 部分概念 构造互联网最简单的方法是把两个或多个网络通过路由器(Router)进行连接.路由器的好处是为不同类型的物理网络提供连接:以太网.令牌环网.点对点的链接等等. 网络层IP协议提供的是一种不可靠的服务.

高可用高性能负载均衡软件HAproxy详解指南-第二章(配置文件、关键字、ACL)

第二章:HAproxy配置文件详解以及HAproxy的ACL详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 上一篇:第一章:HAproxy简介及安装配置 目录 haproxy 配置文件详解 haproxy 配置文件中的关键字参考 haproxy的ACL 附:一份完整的HAproxy的配置文件 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.

《Netty In Action中文版》第二章:第一个Netty程序

注:本篇内容出自<Netty In Action>一书:         注:本人原创译文,转载请注明出处! 本章介绍 获取Netty4最新版本 设置运行环境来构建和运行netty程序 创建一个基于Netty的服务器和客户端 拦截和处理异常 编写和运行Netty服务器和客户端 本章将简单介绍Netty的核心概念,这个狠心概念就是学习Netty是如何拦截和处理异常,对于刚开始学习netty的读者,利用netty的异常拦截机制来调试程序问题很有帮助.本章还会介绍其他一些核心概念,如服务器和客户端的

[Effective Java]第二章 创建和销毁对象

第一章      前言 略... 第二章      创建和销毁对象 1.            考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Boolean的简单示例: public static Boolean valueOf(boolean b) { return (b ? Boolean.TRUE : Boolean.FALSE); } l  静态工厂方法与构造器不同的第一大优势在于,它们有名称. 作用不同的公有构造器只能通过参数来区别(因

.NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

原文:.NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证 内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用OpenID Connect这种方式来验证我们的MVC程序(需要有IdentityServer4),我们首先需要干什么呢?那就是搞一个UI,这样非常美观既可以看到我们的身份验证效果,那么Iden