上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: 定义:用例定义了一组用例实例,其中每个实例都是系统所执行的一些列操作,这些操作生成特定主角可以观测的值。一个完整的用例定义由参与者、前置条件、场景、后置条件构成。1、理解用例:用例就是参与者希望通过系统达到的愿望。一个系统的功能性是由一些对系统有愿望的参与者要做的一些事构成的,事情完成后就达成了参与者的一个愿望,当全部参与者的所有愿望都能够通过用例来达到,那么这个系统就被确定下来了。捕捉功能性需求就是用例的作用。2、特征:(1)用例是相对独立的;(2)用例的执行结果对参与者来说是可观测的和有意义的;(3)用例必须由参与者发起。不存在没有参与者的用例,用例不应该自动启动,也不应该主动启动另一个用 阅读全文
posted @ 2014-01-08 18:31 zhangsai 阅读(820) 评论(0) 推荐(0)
摘要: 定义:参与者是在系统之外与系统交互的某人或某事物。参与者在建模过程中处于核心地位。1、系统之外:系统之外的定义说明在参与者和系统之间存在明确的边界,参与者只能存在于边界之外,边界之内的所有人和事务都不是参与者。2、参与者可以非人:不存在没有参与者的用例,用例不应该自动启动,也不应该主动启动另一个用例。没有人参与的需求一定有别的事务在发出启动操作,这个事务就是参与者,可能是另一个计算机系统、一个计时器、一个传感器等。3、特点:参与者对系统有着明确的目标和要求并且主动发出动作; 系统是为参与者服务的。4、边界不同,参与者会随之变化:(1)机票购买者通过登录网站购买机票:机票购买者;(2)机票购买者 阅读全文
posted @ 2014-01-07 19:06 zhangsai 阅读(1911) 评论(0) 推荐(0)
摘要: 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。但在多线程情况下,就不行了。 下面介绍三种方法 (1) getGeneratedKeys()方法: 程序片断: Connection c 阅读全文
posted @ 2013-09-30 13:45 zhangsai 阅读(408) 评论(0) 推荐(0)
摘要: 1、什么是代码块 在Ruby中,{}或do...end之间的代码是一个代码块。代码块只能出现在一个方法的后边,它紧接在方法最后一个参数的同一行上,由yield关键字调用。例如:[1,2,3,4,5].each { |i| puts i }[1,2,3,4,5].each do |i| puts iend块变量:以yield关键字调用block也可以传递参数,block中竖线(|)之间给出的参数名用于接收来自yield的参数。 竖线之间(如上例中的 | i |)的变量被称作块变量,作用和一个正常方法的参数一样2、{}和do...end优先级不同 在传递一个block时,使用{}传递的block比 阅读全文
posted @ 2013-09-30 11:37 zhangsai 阅读(1323) 评论(0) 推荐(0)
摘要: Ruby模块(module)2013-04-03 16:47:09|分类:Ruby|标签:rubyrequireloadextendinclude|字号订阅 Ruby 和 Java 一样支持单继承,也正如 Java 引入 interface 来解决多继承的两难问题一样,Ruby 也提供了单继承和多继承的妥协机制:即模块。 模块的定义和类比较相似,使用module关键字。但模块不能被实例化,也不能被子类化,模块是独立的,且一个模块对像是Module类的一个实例。在模块中,可以定义实例变量、实例方法、类变量、类方法和属性等,并且在模块中还可能以定义类和模块。在类中也可以定义模块。但是,必须被类引用 阅读全文
posted @ 2013-09-30 09:31 zhangsai 阅读(806) 评论(0) 推荐(0)
摘要: 简单的讲,一个迭代器就是一个能接受代码块的方法。当初为了进行迭代操作而设置了带块方法,现在很多时候仍然称它为迭带器。 可实际上,早期版本的 Ruby 将使用代码块的方法称为迭代器,因为它们就是被设计来实现循环迭代的。但是在Ruby发展过程中,代码块的用途在后来已经得到了很大的增强,从最初的循环抽象到任何事情,那些进行迭代操作的方法仍然可以叫做迭代器,但要将所有带块方法的调用过程都看作迭带器的话,并不太合适而且概念上也容易引起混乱。 现对Ruby中基础的迭代器做简单的介绍:1、each方法最简单的迭代器,连续访问集合的所有元素,依次赋给与each方法相关联的block的变量。由于Ruby 内建的 阅读全文
posted @ 2013-09-30 09:30 zhangsai 阅读(585) 评论(0) 推荐(0)
摘要: 三个方法的作用都是将一个字符串打印到控制台比较项目putsprintp换行符末尾添加换行符末尾不加换行符末尾添加换行符非字符串对象的输出调用该对象的to_s方法调用该对象的to_s方法通过inspect方法将对象转换成字符串 通过inspect方法将对象转换成字符串的方法能比to_s方法返回对程序员更加友好的对象表示。 比如,当要打印一个数组时,p输出采用的是数组字面量的表示法,而puts则只是简单的将每个元素打印到单独的一行!array =[2,4,6,8,10]puts arrayp arrayprint arrayputs array输出的结果是:246810p array的结果:[2, 阅读全文
posted @ 2013-09-30 09:29 zhangsai 阅读(1076) 评论(0) 推荐(0)
摘要: block可以用来定义必须运行在事务控制环境下的代码。例如,你经常需要打开一个文件,对其内容做些处理,然后确保在处理结束后关闭文件。尽管可以用传统方式来实现,但也存在“应该由文件负责自身的关闭”这样的观点。Ruby的File类支持这项技术。 如果File.open有个关联的block,那么该block将被调用,且参数是该文件对象,当block执行结束时文件会被关闭。这意味着File.open有两种不同的行为:当和block一起调用时,它会执行该block并关闭文件;当单独调用时,它会返回文件对象。 使得上述行为成为可能的是Kernel.block_given?方法,当某方法和block关联在一 阅读全文
posted @ 2013-09-30 09:28 zhangsai 阅读(343) 评论(0) 推荐(0)
摘要: Ruby中使用yield语句调用block时可以带有参数,参数值见传送个相关联的block。如果传给block的参数是已经存在的局部变量,那么这些变量即为block的参数,他们的值可能会因block的执行而改变。同样的规则也适用于block内的变量:如果他们第一次出现在block内,那么他们就是block的局部变量。相反,如果他们第一次出现在block外,那么block就与其外部环境共享这些变量。 例如:a =[4,2]b ='cat'c =1a.each{|b| c = b*a[1] d = c+2}p a =>[4,2]p b =>2p c =>8pdef 阅读全文
posted @ 2013-09-30 09:27 zhangsai 阅读(530) 评论(0) 推荐(0)
摘要: 一、 Ruby的赋值实际是以并行方式执行的,所以赋值语句右边的值不受赋值语句本身的影响。在左边的任意一个变量或属性赋值之前,右边的值按他们出现的顺序被计算出来。 1、当赋值语句有多于一个左值时,赋值表达式将返回由右值组成的数组。2、如果赋值语句的左值多于右值,那么多于的左值将被忽略。如果右值多于左值那么额外的右值将被忽略。 3、如果赋值表达式只有一个左值而有多个右值,那么右值将被转换成数组,然后赋值给左值。并行赋值语句最大的好处就是可以方便的交换两个变量的值。 二、使用Ruby的并行赋值操作,你可以叠起和展开数组。 1、如果最后一个左值有一个“*”前缀,那么所有多余的右值将被集合在一起,并作为 阅读全文
posted @ 2013-09-30 09:27 zhangsai 阅读(1272) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13 14 下一页