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 分别建立了 ...
随机推荐
- 20175317 MyCP(课下作业,必做)
一.题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内 ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 设置冻结列
jQuery EasyUI 数据网格 - 设置冻结列 本实例演示如何冻结一些列,当用户在网格上移动水平滚动条时,冻结列不能滚动到视图的外部. 为了冻结列,您需要定义 frozenColumns 属性. ...
- linux日常使用指令总结
linux 日常指令总结(ubuntu): ls -lha 所有文件及权限 df -h 系统磁盘空间 du -sh 当前目录大小 du -ah --max-depth=1 显示目录下所有的文件和文件夹 ...
- vue中data中引用本地图片报错404
首先说明vue-cli中assets和static两个文件的区别 1.assets在项目编译的过程中会被webpack处理理解为模块依赖,如果执行npm run dev或npm run build命令 ...
- An overnight dance in discotheque CodeForces - 814D (几何)
大意: 给定n个不相交的圆, 求将n个圆划分成两部分, 使得阴影部分面积最大. 贪心, 考虑每个连通块, 最外层大圆分成一部分, 剩余分成一部分一定最优. #include <iostream& ...
- spring cloud(四)熔断器Hystrix
熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者”的不可用导致“服务 ...
- 2019.3.16数据结构考试(Problem 1. rotinv)(循环逆序对)
Problem 1. rotinvInput file: rotinv.inOutput file: rotinv.outTime limit: 2 secondsMemory limit: 256 ...
- java中JScrollPane不显示水平滚动条的解决办法
在JPanel中添加了表格,表格中对东西太多,需要水平滚动条滑动才能够完全找到所有数据,如果没有水平滚动条的话,数据堆积在一起,无法分开 做法是: 第一步:先将表格自动调整的状态给关闭掉:table. ...
- 关于Jmeter的简单认识
Jmeter初识 Apache Jmeter概述 是100%的纯java桌面应用,用于压力测试与功能测试,它开始被设计用于web应用测试,后来扩展到其他测试领域,通过线程租来驱动多个线程运行测试脚本, ...
- Treap标准模板
这是Treap的模板程序,支持Left/Right Rotate,Find the maxnum/minnum,Find the predecessor/successor of a node,Add ...