oo第3次博客作业
一、规格化设计的发展历史
20世纪60年代,软件出现严重的危机Dijkstra提出了goto语句的危害,由此引发了软件界长达数年的论战,并产生了结构化的程序设计方法。随着计算机
技术的发展,结构设计化语言和结构化分析已经无法满足用户的需求,OOP由此应运而生,即面向对象的程序设计。面向对象程序设计的诞生是程序设计方法学的一场革命,大大提高了开发效率,减少了软件开发的复杂度,提高了软件的可维护性,可扩展性。1990年以来,面向对象分析、测试、度量和管理研究都得到长足的发展。规格化设计随其而生,为了提高程序的规范性,对类。方法等进行规范化设计,有利于模块化的划分。
二、三、列举并分析规格的bug
佛系测试法,若是bug和我有缘,那么他会自己跑出来的,测试者可能是抱着这种心态,很幸运,他们没有给我报JSF的bug,好人一身平安!!!
四、 列举5个前置条件和5个后置条件的不好写法,并给出改进写法
1.
public int hanging(boolean[] d) {
/**@REQUIRES:d.contain(true)
* @MODIFIES:point_x,point_y
* @EFFECTS: Based on flow, decide next step;
*/
int minT=101;
ArrayList<Integer> index = new ArrayList<Integer>();
for(int i=0;i<4;i++) {
if(d[i] && map.getTarfic((i==0)?point_x-1:point_x,(i==3)?point_y-1:point_y,(i<2)?false:true)<=minT) {//UP
if(map.getTarfic((i==0)?point_x-1:point_x, (i==3)?point_y-1:point_y,(i<2)?false:true)==minT) {
index.add(i);
}
else {
minT=map.getTarfic((i==0)?point_x-1:point_x,(i==3)?point_y-1:point_y,(i<2)?false:true);
for(int j=0;j<index.size();j++) index.remove(j);
index.add(i);
}
}
}
return index.get(new Random().nextInt(index.size())); }
像这个方法,主要作用的控制出租车的闲逛状态的运动,传入的是一个数组,表示上下左右的方向是否可走,require是要求传入数组至少包含一个true,effect则是判断闲逛状态的下一步位置。这个难写的主要原因是因为实现的逻辑太过于复杂,包括了很多的判断,循环,导致很难用形式化的语言来描述。
解决办法应该就是分解程序,将每一部分的逻辑更加简单。
2.
public void writeFile(boolean a) {
/**@REQUIRES:NONE;
* @MODIFIES:file;
* @EFFECTS: write into file;
*/
try {
FileWriter fw=new FileWriter(r.getName()+".txt",true);
String s = a?" 派单":" 车辆";
fw.write("车辆编号:"+id +s+"位置:("+point_x+","+point_y+") 时刻:"+System.currentTimeMillis()+"\r\n");
fw.close();
System.out.println("车辆编号:"+id+s+"位置:("+point_x+","+point_y+") 时刻:"+System.currentTimeMillis()+"\r\n");
} catch (IOException e) {}
}
这个方法的作用是为了向文件写入信息和向控制台输出信息。这个实在是不知道如何表示写文件和向控制台输出。
五、 第十一次作业被报了一个未实现迭代器,第九次作业被报了一个未能实现模拟接单,前者的问题是因为没有很好的理解迭代器的定义,后者的问题是因为不知道应该如何模拟接单。。。。:(
六、 在设计规格和撰写规格时的思路和体会
写规格的时候还是按照先把方法实现再来写规格,因为我觉得规格更难写XD,体会就是规格化设计确实能够帮助他人,其他程序猿更好地理解方法,或者是类的作用,除此之外,还有就是要简化你的每一个类,每一个方法,控制代码的复杂度,这样也更方便进行单元测试,同时这也会对以后我们写工程化代码的时候,和别人合作的时候提供更多的便利,好看工整的代码在哪都会受欢迎呢。
oo第3次博客作业的更多相关文章
- OO第四次博客作业!
oo第四次博客作业 一.测试与正确性论证比较 测试只是单方面片面的证明对于当前的输入程序是正确的,测试只能证明程序有错误,不能说明程序是对的. 正确性论证是程序达到预期目的的一般性陈述,是通过规范化的 ...
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- OO第三次博客作业——规格
OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- OO第4次博客作业
OO第4次博客作业 一.第4单元设计 第四单元主要围绕UML图的结构进行JAVA代码编写,对JAVA的层次结构进行更多的认识.个人认为编程操作在实质上与上一章的PathContainer有许多的相同之 ...
- OO第四单元博客作业
OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
- OO第四次博客作业(第四单元作业及期末总结)
(注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1 我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不 ...
- OO第三次博客作业---透过代码看设计
不得不说的JSF 经过前几次作业的煎熬.出租车的代码量不断地增多.而出租车问题在不断的完善,这也就牵涉到一个问题,那就是最初出租车程序的设计问题,如果一开始设计的就有问题的话,那么在后来的过程中就会遇 ...
- oo第四篇博客作业
测试与正确性论证的效果差异及各自的优缺点: 测试针对一些典型的输入情况进行方法验证,可操作性更强,结果直观.但不能完全覆盖所有的输入情况. 正确性论证则是根据代码逻辑从所有的方面对方法进行论证,可操作 ...
- [BUAA OO]第四次博客作业
一. 测试与正确性论证的区别 在最后一个单元的OO作业中,我们主要进行了代码的测试与正确性论证工作.这俩者在作业中的体现分别是junit单元测试以及jsf论述语言.这两者在java代码开 ...
- OO第四次博客作业--第四单元总结及课程总结
一.总结第四单元两次作业的架构设计 1.1 第一次作业 类图如下: 为了突出类.接口.方法.属性.和参数之间的层次结构关系,我为 Class 和 Interface 和 Operation 分别建立了 ...
随机推荐
- HTML标记
html:超文本标记语言 标记,标签,元素 单标签:<标签名 属性名="属性值" 属性名=“属性值” /> 双标签:<标签名 属性名="属性值” 属 ...
- vue 无限递归级联组件实现方案
最终组件效果图: 无限级联组件实现思想: 在这里有一个很重要的地方就是前端组件如何与后端匹配方法协调好,无限级联很好实现,但是如何让服务器端可以成功的匹配到条件是一个问题,在这里我借鉴了html元素的 ...
- python 【pandas】账号、银行卡号、身份证号导出文件后以科学计数法显示问题解决
问题描述:excel表中的一些数据会以文本格式格式保存,例如一些较长的编号.银行账号.身份证号等,再python中导出文件后,会发现数据以科学计数法显示,影响后续使用. data2_3.to_exce ...
- 【js】【图片显示】js控制html页面显示图片方式
js控制html页面显示图片方式,只需要引入“jquery-1.11.2.min.js” js: /* 引用 <script src="jquery-1.11.2.min.js&quo ...
- Java IO编程全解(四)——NIO编程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7793964.html 前面讲到:Java IO编程全解(三)——伪异步IO编程 NIO,即New I/O,这 ...
- 老版本db2这里下
https://www-01.ibm.com/support/docview.wss?uid=swg27007053 db2 10.5.10.1.9.x等 下最新FIX版即可
- 在Ubuntu 18.04 安装 MySQL 8.0
在Ubuntu 18.04 安装 MySQL 8.0 ① 登入 mysql 官网,在官网中下载 deb 包,点击该链接,即可下载. https://dev.mysql.com/downloads/re ...
- 《Python量化交易教程》第一部分新手入门 第1天:谁来给我讲讲Python?
一.量化投资视频学习课程 二.Python手把手教学 第1天:谁来给我讲讲Python? PS: 1.注意使用方法,这个以后都有大用 2.注意符号的使用方式 3.尽量用英文表达 4.本日学习内容以及其 ...
- Html+css学习笔记一 创建一个网页
第一个网页 新建一个记事本,把名字改成first.html <html> <head> <title>MyFristHtml</title> </ ...
- Unity协程实现伪加载页面
先上效果图预览. ============================开始写实现方法================================ 1.我用的是UGUI,先在空场景中新建Slid ...