当前位置: 首页 > news >正文

实验二 Java面向对象程序设计

(一)单元测试

(1) 三种代码

伪代码

产品代码

测试代码

一般测试:

 

边界测试:

 

测试出错情况

 

改正代码:

(2) TDD(Test Driven Devlopment, 测试驱动开发)

TDD的一般步骤如下:

明确当前要完成的功能,记录成一个测试列表

快速完成编写针对此功能的测试用例

测试代码编译不通过(没产品代码呢)

编写产品代码

测试通过

对代码进行重构,并保证测试通过(重构下次实验练习)

循环完成所有功能的开发

 

TDD的编码节奏是:

增加测试代码,JUnit出现红条

修改产品代码,JUnit出现绿条,任务完成

 

 

 

自行测试:

 

 

(二)面向对象三要素

(1)抽象

(2)封装、继承与多态

 

继承与多态的实现:

 

 

(四)练习

1使用TDD的方式设计关实现复数类Complex。

伪代码

产品代码

class complex
{
double re,im;
complex()
{
this.re=0;
this.im=0;
}
complex(double re)
{
this.re=re;
this.im=0;
}
complex(double re,double im)
{
this.re=re;
this.im=im;
}
complex add(complex p1,complex p2)
{
complex p=new complex(p1.re+p2.re,p1.im+p2.im);
return p;
}
complex minus(complex p1,complex p2)
{
complex p=new complex(p1.re-p2.re,p1.im-p2.im);
return p;
}
void print()
{
System.out.println("复数的值为:");
if(this.im!=0)
System.out.println(this.re+"+"+this.im+"i");
else
System.out.println(this.re);
}
}
public class Song
{
public static void main(String[] args)
{
complex c=new complex();
complex c1=new complex(2,7);
complex c2=new complex(5,2);
c1.print();
c2.print();
System.out.println("这两个复数的和为:");
System.out.println((c.add(c1,c2).re+"+"+
c.add(c1, c2).im+"i").toString());

System.out.println("这两个复数的差为:");
System.out.println((c.minus(c1,c2).re+"+"+
c.minus(c1, c2).im+"i").toString());
}
}

测试结果

3.统计PSP(Personal Software Process)时间

 

步骤耗时
需求分析5%
设计20%
代码实现40%
测试30%
分析总结5%

四:总结

1.实验遇到的问题

错误的原因是公用类型必须在自己的文件中定义,按照eclipse提示重命名之后按Enter键进行重构

 

2.实验总结:这次实验主要内容是代码面向对象三要素的应用,以及代码的设计思想以及测试方法,通过这周和上周的PSP时间比例可以看出,设计和测试的比重增加,而代码实现的时间比重下降,这更接近于日常生活中的软件开发的基本程序,而不是书本上给定题目进行的练习。通过之前基本的练习已经初步掌握了Java程序设计的基本语句,今后将更加注重程序 设计思维的练习

3.单元测试的好处:

1.帮助开发人员编写代码,提升质量、减少bug。
2.提升反馈速度,减少重复工作,提高开发效率。
3.保证最后的代码修改不会破坏之前代码的功能。
4.使代码更容易维护。

 

转载于:https://www.cnblogs.com/July0207/p/4481477.html

相关文章:

  • Linq之求和,平均值,最大值,最小值
  • Android 中文API (70) —— BluetoothDevice[蓝牙]
  • 动态数组排序实例
  • Nginx 反向代理、负载均衡与动静分离
  • [裴礼文数学分析中的典型问题与方法习题参考解答]4.4.9
  • 贪心 URAL 1303 Minimal Coverage
  • 使用JS或jQuery模拟鼠标点击a标签事件代码
  • 创建activiti工作流所需23张表
  • Spring Userservice-用户登录,登录数据库密码存储以及防止暴力破解
  • 复习之webview(观看张荣超视频)
  • Android6 Socket通信
  • 给列表项目添加动画
  • R(1)Mac OS 下安装R语言开发环境
  • PHP自动加载__autoload的工作机制
  • UISlide属性
  • 时间复杂度分析经典问题——最大子序列和
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • JavaScript设计模式系列一:工厂模式
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python学习笔记 字符串拼接
  • Spark学习笔记之相关记录
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 如何使用 JavaScript 解析 URL
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 收藏好这篇,别再只说“数据劫持”了
  • 通过npm或yarn自动生成vue组件
  • 问题之ssh中Host key verification failed的解决
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 函数计算新功能-----支持C#函数
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • #NOIP 2014# day.1 T2 联合权值
  • (C语言)共用体union的用法举例
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)EOS中账户、钱包和密钥的关系
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • ::
  • ??eclipse的安装配置问题!??
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ SNOI 2013 ] Quare
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [383] 赎金信 js
  • [acm算法学习] 后缀数组SA
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行