实验题目

1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。

2.下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

3.完成重构内容的练习,下载搭档的代码,至少进行三项重构

4.以结对的方式完成Java密码学相关内容的学习

实验步骤

(1)编码标准

  • 编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。

本次实验题目如下:

public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}

在IDEA中使用工具Code->Reformate Code将上面的代码格式化后,得到的结果为:

然后再IDEA中,我还学到Code->Move Line UpCode -> Move Line Down能够将代码往上/下移动。

(2)添加单元测试用例

  • 搭档的Complex代码为:
/*** Created by Administrator on 2017/4/21.*/
public class Complex {// 定义属性并生成getter,setterprivate double RealPart;private double ImagePart;public void setterRealPart(double realPart) {this.RealPart = realPart;}public void setterImagePart(double imagePart){this.ImagePart = imagePart;}public double getterRealPart(){return RealPart;}public double getterImagePart(){return ImagePart;}// 定义构造函数public Complex(){}public Complex(double R,double I){this.RealPart = R;this.ImagePart = I;}//Override Objectpublic boolean equals(Object obj){if(this == obj){return true;}if(!(obj instanceof Complex)){return false;}Complex complex = (Complex) obj;if(getterRealPart()!=complex.getterRealPart()){return false;}if(getterImagePart()!=(complex.getterImagePart())){return false;}return true;}public String toString(){String s = new String(Double.toString(getterRealPart()));//  s.concat(Double.toString(getterRealPart()));if(getterImagePart()>0)s = s + '+';s = s + Double.toString(getterImagePart());// s.concat(Double.toString(getterImagePart()));s = s + 'i';return s;}// 定义公有方法:加减乘除Complex ComplexAdd(Complex a){Complex b = new Complex();b.ImagePart = this.ImagePart + a.ImagePart;b.RealPart = this.RealPart + a.RealPart;return b;}Complex ComplexSub(Complex a){Complex b = new Complex();b.ImagePart = this.ImagePart - a.ImagePart;b.RealPart = this.RealPart - a.RealPart;return b;}Complex ComplexMulti(Complex a){Complex b = new Complex();b.RealPart = this.RealPart * a.RealPart - this.ImagePart * a.ImagePart;b.ImagePart = this.RealPart * a.ImagePart + this.ImagePart * a.RealPart;return b;}Complex  ComplexDiv(Complex a) {Complex b = new Complex();b.RealPart = (this.RealPart * a.RealPart + this.ImagePart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);b.ImagePart = (this.ImagePart * a.RealPart - this.RealPart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);return b;}
}
  • ComplexTest代码为:

  • 添加单元测试用例后为:

  • git log的截图:

(3)重构

重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

重构目标

  • 改进软件设计使软件更容易被理解
  • 帮你找到bug
  • 提高软件的开发速度

重构时机

  • 在添加新功能时进行重构。
  • 在修改bug时进行重构。
  • 在代码复审时进行重构。
  • 到了最后的交付期限,不进行重构

下载的搭档的代码为:

重构后的代码为:

(4)结对学习java密码学内容

上周学习了java关于密码学的内容,在此基础上本周和搭档结对继续学习

首先我们学习了娄老师给的凯撒密码的代码:

public static void main(String args[]) throws Exception{
String s=args[0];int key=Integer.parseInt(args[1]);String es="";for(int i=0;i<s.length( );i++)
{  char c=s.charAt(i);if(c>='a' && c<='z') // 是小写字母{ c+=key%26;  //移动key%26位if(c<'a') c+=26;  //向左超界if(c>'z') c-=26;  //向右超界}else if(c>='A' && c<='Z') // 是大写字母
{  c+=key%26;if(c<'A') c+=26;if(c>'Z') c-=26;}es+=c;}System.out.println(es);}

在此基础上,我们对该代码进行了改编,最后得到的代码为:

实验心得与体会

在本次实验中,首先了解了IDEA对代码特别方便的运用,这与虚拟机中的vim的命令是相似的;其次git colne了搭档的代码,在这过程中,最难完成的是,git后IDEA会出现各种错,且不太好解决,但实验二添加单元测试用例这是对上周学习的内容的复习。实验三让我了解了重构,重构在编写代码时能够使我们的代码更清晰,更简便。最后结对学习java密码学,这让我学到了结对学习的重要性,因为两个人会有不同的思路,这样能够筛选出好的思路进行编写代码。

我的PSP时间

步骤 耗时 百分比
需求分析 30分钟 18.75 %
设计 30分钟 18.75%
代码实现 60分钟 37.5%
测试 30分钟 18.75%
分析总结 10分钟 6.25%

参考资料

  • java密码学
  • 实验三 敏捷开发与XP实践

转载于:https://www.cnblogs.com/fyhtvxq/p/6822219.html

20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告相关推荐

  1. 20155220 实验三 敏捷开发与XP实践 实验报告

    20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  2. 20155226 实验三 敏捷开发与XP实践 实验报告

    20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

  3. 20175212童皓桢 实验三敏捷开发与XP实践实验报告

    20175212童皓桢 实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 一.Code菜单功能的研究 Move Line/statement Down/Up:将某 ...

  4. 20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告

    20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告 码云博客链接 https://gitee.com/dky20175312/dky_20175312_warehouse_ ...

  5. 实验三 敏捷开发与XP实践 实验报告 20135232王玥

    一.实验内容 1. XP基础 2. XP核心实践 3. 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2. ...

  6. java for xp_20155328 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    一.编码标准 编程标准包含:具有说明性的名字.清晰的表达式.直截了当的控制流.可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性. 下面是没有最基本的缩进的一个程序: publi ...

  7. 20155328 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    一.编码标准 编程标准包含:具有说明性的名字.清晰的表达式.直截了当的控制流.可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性. 下面是没有最基本的缩进的一个程序: publi ...

  8. 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践

    20165205 2017-2018-2 <Java程序设计>实验三 敏捷开发与XP实践 20165205 2017-2018-2 <Java程序设计>实验三 敏捷开发与XP实 ...

  9. 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...

  10. 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践

    20155314 2016-2017-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统 ...

最新文章

  1. 算法导论——lec 10 图的基本算法及应用
  2. 洛谷P1073最优贸易——双向取值
  3. d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported
  4. java 日期的工具类_java 日期时间工具类
  5. POJ 1469 匈牙利算法
  6. ios中的视频采集及参数设置和相机操作
  7. mysql as不能用吗,MySQL SUM不能与AS一起工作
  8. JS获取屏幕宽度高度
  9. bat脚本 - 通过bat脚本一键启动[开机启动]日常应用
  10. 【Vue插件】一款很好用的vue日历插件——vue-sweet-calendar
  11. win7如何调整计算机c盘,win7系统让c盘和d盘合并的两种方法
  12. 殿影酒店即将开业,推出电影和酒店的跨界创新模式
  13. DataFrame中实现int、float存储形式列之间的除法运算
  14. git命令出现fatal: Unable to create ‘xxx/.git/index:File exists
  15. 帝国竞争算法(ICA)详解与python 实现
  16. 世界女性科技群落(四):技术与流行文化顶格发展,日韩女性的科技暗面
  17. AI 人工智能之概率论基础(1)
  18. 023 《计量经济学》学习笔记
  19. autojs-webview上传文件
  20. spire doc for java 设置word中图片大小

热门文章

  1. Operating System-进程/线程内部通信-信号量和PV操作
  2. 关于Window的快捷方式,图标缓存的清理
  3. MapReduce TopK统计加排序
  4. node-OSDomainNetPath
  5. hdu4829 带权并查集(题目不错)
  6. POJ2186 强联通
  7. system , DOS 命令
  8. 【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 遍历查找后坐力数据 | 尝试修改后坐力数据 )
  9. 【MATLAB】矩阵操作 ( 矩阵下标 | 矩阵下标排列规则 )
  10. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )