实验内容与要求

1.XP基础

极限编程(Extreme Programming,XP)是一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流:

  • XP是以开发符合客户需要的软件为目标而产生的一种方法论
  • XP是一种以实践为基础的软件工程过程和思想
  • XP认为代码质量的重要程度超出人们一般所认为的程度
  • XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件
    XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。

    2.XP核心实践

3.相关工具

敏捷开发与XP实践-1

实验目的与要求:

  • http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
  • 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。
  • 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buf![](https://img2018.cnblogs.com/blog/1272669/201905/1272669-20190502160118003-975536005.png)fer.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));
}
}

实验步骤

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

  • Settings ->Plugins -> Browse repositories...——安装alibaba
  • 在项目名称上单击右键,在弹出菜单上选择编码规约扫描
  • 不规范的地方,有中文提示并且定位到了行,alibaba把问题分为block/critical/major三个等级。根据报错提示,进行了修改。

  • Code->Reformate Code
  • 重新格式化之后

  • 我发现Code->Surround with...功能很好用,例如我们想改变自己代码的部分逻辑结构,加个if语句,直接用这个功能就好了,先选择范围
  • Surround后

敏捷开发与XP实践-2

实验目的与要求:

  • 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
  • 提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

    实验内容

  • 搭档代码
public class Complex {double RealPart;double ImagePart;public Complex(){}public Complex(double R,double I){RealPart=R;ImagePart=I;}public boolean equals(Complex a){if(a.RealPart==this.RealPart&&a.ImagePart==this.ImagePart){return true;}else {return false;}}public String toString(){return "Complex{"+RealPart+","+ImagePart+"}";}
}
  • 加入不少于三个JUnit单元测试用例,并且测试成功
Complex:
public class Complex {double RealPart;double ImagePart;public Complex(){}public Complex(double R,double I){RealPart=R;ImagePart=I;}public boolean equals(Complex a){if(a.RealPart==this.RealPart&&a.ImagePart==this.ImagePart){return true;}else {return false;}}public String toString(){return "Complex{"+RealPart+","+ImagePart+"}";}Complex ComplexAdd(Complex a) {return new Complex(this.RealPart + a.RealPart,this.ImagePart + a.ImagePart);}Complex ComplexSub(Complex a){return new Complex(this.RealPart - a.RealPart,this.ImagePart - a.ImagePart);}Complex ComplexMulti(Complex a){return new Complex(this.RealPart*a.RealPart-this.ImagePart*a.ImagePart,this.ImagePart*a.RealPart+this.RealPart*a.ImagePart);}Complex ComplexDiv(Complex a){double change = a.RealPart*a.RealPart + a.ImagePart*a.ImagePart;Complex b = new Complex(a.RealPart / change, - a.ImagePart / change);return this.ComplexMulti(b);}
}
ComplexTest:
public class Complex {double RealPart;double ImagePart;public Complex(){}public Complex(double R,double I){RealPart=R;ImagePart=I;}public boolean equals(Complex a){if(a.RealPart==this.RealPart&&a.ImagePart==this.ImagePart){return true;}else {return false;}}public String toString(){return "Complex{"+RealPart+","+ImagePart+"}";}Complex ComplexAdd(Complex a) {return new Complex(this.RealPart + a.RealPart,this.ImagePart + a.ImagePart);}Complex ComplexSub(Complex a){return new Complex(this.RealPart - a.RealPart,this.ImagePart - a.ImagePart);}Complex ComplexMulti(Complex a){return new Complex(this.RealPart*a.RealPart-this.ImagePart*a.ImagePart,this.ImagePart*a.RealPart+this.RealPart*a.ImagePart);}Complex ComplexDiv(Complex a){double change = a.RealPart*a.RealPart + a.ImagePart*a.ImagePart;Complex b = new Complex(a.RealPart / change, - a.ImagePart / change);return this.ComplexMulti(b);}
}

上传码云

  • git push
  • git log

敏捷开发与XP实践-3

实验目的与要求:

  • http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
  • 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

    实验内容及结果截图:

    重构方法:

  • refactor->Rename给类、包、方法、变量改名字
  • refactor->Encapsulate Field封装
  • Source->Generate toString()toString()方法
  • refactor->Extract Method提炼出重复的代码

    重构后代码

class xmnew {private int num;private String name;private int java;public int getNum() {return num;}@Overridepublic String toString() {return "xmnew{" +"num=" + num +", name='" + name + '\'' +", java=" + java +'}';}public void setNum(int num) {this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getJava() {return java;}public void setJava(int java) {this.java = java;}
}
public class xmnewTest {public static void main(String[] args) {studentdark student = new studentdark();student.setName("caoge");student.setNum(5312);student.setJava(94);System.out.println("学号为"+ student.getNum() +",姓名为"+ student.getName() +"java成绩为"+ student.getJava());}
}

运行截图

敏捷开发与XP实践-4

实验目的与要求:

  • 参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
  • 提交学习成果码云链接和代表性成果截图,要有学号水印。

    实验步骤:

  • 获取密钥生成器KeyGenerator kg=KeyGenerator.getInstance("DESede");
  • Java中KeyGenerator类中提供了创建对称密钥的方法。KeyGenerator类预定义了一个静态方法getInstance( ),方法getInstance( )的参数为字符串类型,指定加密算法的名称。
  • 初始化密钥生成器kg.init(168);该步骤一般指定密钥的长度。我们写的是“DESede”,则可以是112或168位,其中112位有效。
  • 生成密钥SecretKey k=kg.generateKey( );密钥可用于以后的加密和解密。
  • 通过对象序列化方式将密钥保存在文件中
FileOutputStream f=new FileOutputStream("key1.dat");
ObjectOutputStream b=new ObjectOutputStream(f);
b.writeObject(k);
  • ObjectOutputStream类中提供的writeObject方法可以将对象序列化,以流的方式进行处理。这里将文件输出流作为参数传递给ObjectOutputStream类的构造器,这样创建好的密钥将保存在文件key1.data中。
  • 从文件中获取密钥
FileInputStream f=new FileInputStream("key1.dat");
ObjectInputStream b=new ObjectInputStream(f);
Key k=(Key)b.readObject( );
  • 创建密码器
Cipher cp=Cipher.getInstance("DESede");
  • KeyGenerCipher类是一个工厂类,它不是通过new方法创建对象,而是通过其中预定义的一个静态方法getInstance( )获取Cipher对象。getInstance( )方法的参数是一个字符串,该字符串给出Cipher对象应该执行哪些操作。
  • 初始化密码器
    cp.init(Cipher.ENCRYPT_MODE, k);该方法包括两个参数,第一个参数指定密码器准备进行加密还是解密,若传入Cipher.ENCRYPT_MODE则进入加密模式。第二个参数则传入加密或解密所使用的密钥,即第1步从文件中读取的密钥对象k。
  • 获取等待加密的明文
String s="Hello World!";
byte ptext[]=s.getBytes("UTF8");
  • 执行加密
byte ctext[]=cp.doFinal(ptext);
  • 处理加密结果
FileOutputStream f2=new FileOutputStream("SEnc.dat");
f2.write(ctext);
  • 这里将加密结果保存在文件Senc.dat中。

加密结果:

码云链接

https://gitee.com/SANFENs/Teamwork

实验体会与总结

  • java课程已过去一半,但是java实验还是依然的灵活,让我们可以在课下使用课余时间来学习完成,这仍然是其他实验课没法比拟的,因此我们需要把握住这种学习的机会,将java课学好,让学习的过程更有意义。

转载于:https://www.cnblogs.com/sms369/p/10802452.html

20175316 盛茂淞 2018-2019-2 《Java程序设计》实验三《敏捷开发与XP实践》 实验报告...相关推荐

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

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

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

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

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

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

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

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

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

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

  6. Java课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计     班级:1352     姓名:吕松鸿  学号:20135229 成绩:               ...

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

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

  8. 20175316 盛茂淞 实验一 Java开发环境的熟悉

    20175316 盛茂淞 实验一 Java开发环境的熟悉 实验目的 使用JDK编译.运行简单的Java程序 实验要求 1.建立"自己学号exp1"的目录 2.在"自己学号 ...

  9. 20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结

    20175316盛茂淞 2018-2019-2<Java程序设计>第4周学习总结 教材学习内容总结 第五章 子类与继承 一.继承 1.继承定义:避免多个类间重复定义共同行为 2.子类与父类 ...

  10. 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 内部类与异常类 1.使用 try.catch Java中所有信息都会被打包为对 ...

最新文章

  1. Heartrate:一个牛逼的工具,Python执行实时可视化
  2. 揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活【附下载】| 智东西内参...
  3. 针对智能车声标组的声音定位方案研究
  4. bleve搜索引擎源码分析之索引——mapping和lucene一样,也有_all
  5. 文本显示变量_Axure9实操教程10-变量
  6. 基于python的FFT演示程序
  7. 2021 版 Spring Boot 基础知识复习手册(2w字,建议收藏)
  8. Alibaba-AndFix Bug热修复框架原理及源码解析
  9. linux 3g 程序,ARM板和Linux上的3G配置详解
  10. nssl1162-农夫约的假期【中位数,贪心】
  11. 【py技巧】使用reload重导入修改过的包或模块
  12. 笨办法学 Python · 续 练习 5:`cat`
  13. 【干货】一张蓝图九大行动领域,实现AI赋能的企业转型-IBM.pdf(附下载链接)...
  14. maven 简单实用教程
  15. 什么时候用到id和class?
  16. 蓝桥ROS机器人之CoppeliaSim_Edu_V4_2_0
  17. uniapp 电商小程序 置顶特效/分享特效/红包特效 简单实现效果
  18. 创业维艰:为啥大多数创业者都不开心?
  19. logrotate 管理日志文件不生效
  20. ppt的字母上面插入尖号

热门文章

  1. 外网服务器设置OpenAI代理
  2. 大数据与云计算学习计划 (一) 云计算系统管理 6 Linux中RPM软件包管理操作 、 Yum软件包仓库操作(概念与实操)
  3. 全球与中国聚季铵盐行业调查与未来发展趋势研究报告
  4. Uboot学习笔记①---(文件目录结构、README摘要、uImage的64字节头信息)
  5. ncbi 关键字组合查询bioProjectID - 爬虫
  6. android系统应用的平台化开发
  7. 《Python编程从入门到实践》习题06
  8. 借助github搭建自己的CDN服务
  9. 计算机电源维修教学,笔记本电源维修方法详解【图文教程】
  10. Win10频繁提示“USB端口上的电涌”