• 2018-2019-2 20175202实验三《敏捷开发与XP实践》实验报告


    2018-2019-2 20175202实验三《敏捷开发与XP实践》实验报告

    一、实验要求:

    • 完成实验三 敏捷开发与XP实践中的内容,参考Java密码学算法相关内容
    • 其中Eclipse相关的内容参考Intellj IDEA 简易教程换成IDEA实现
    • 完成云班课中的检查点,也可以先完成实验报告,直接提交。注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明。实验报告中一个检查点要有多张截图。
    • 发表实验报告博客,标题“学期(如2018-2019-2) 学号(如20175300)实验三《敏捷开发与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菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。

    2.实验代码:

    3.规范后的代码格式:

    4.实验过程:IDEA中的插件,通过Jetbrains官方仓库安装:打开“ Settings ->Plugins ->Marketplace”在搜索框输入“alibaba”即可看到“Alibaba Java Code Guidelines”插件,点击Install进行安装,然后重启IDE生效;在项目名称上单击右键,在弹出菜单上选择“编码规约扫描”;在IDEA中使用工具“(Code->Reformate Code)”把代码重新格式化。Code菜单中的一些选项的简单用法;

    5.实验截图:

    !!

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

    2.实验过程:在码云中打开自己的仓库,复制链接给搭档,加入即可。

    3.搭档的complex代码:

    public class Complex {
    private double RealPart;//复数的实部
    private double ImagePart;//复数的虚部
    public Complex() {}
    public Complex(double R,double I){
    setRealPart(R);
    setImagePart(I);
    }
    public void setRealPart(double R){
    RealPart=R;//设置复数的实部
    }
    public void setImagePart(double I){
    ImagePart=I;//设置复数的虚部
    }
    public double getRealPart(){
    return RealPart;//返回复数的实部
    }
    public double getImagePart(){
    return ImagePart;//返回复数的虚部
    }
    Complex ComplexAdd(Complex a) {
    Complex New =new Complex();
    New.RealPart=this.RealPart+a.RealPart;
    New.ImagePart=this.ImagePart+a.ImagePart;
    return New;
    }
    Complex ComplexSub(Complex a){
    Complex New =new Complex();
    New.RealPart=this.RealPart-a.RealPart;
    New.ImagePart=this.ImagePart-a.ImagePart;
    return New;
    }
    Complex ComplexMulti(Complex a){
    Complex New =new Complex();
    New.RealPart=this.RealPart*a.RealPart-this.ImagePart*a.ImagePart;
    New.ImagePart=this.ImagePart*a.RealPart+this.RealPart*a.ImagePart;
    return New;
    }
    Complex ComplexDiv(Complex a){
    double sum=a.ImagePart*a.ImagePart+a.RealPart*a.RealPart;
    Complex b = new Complex(a.getRealPart()/sum, -a.getImagePart()/sum);
    return ComplexMulti(b);
    }
    @Override
    public String toString() {
    if(ImagePart>0.0)
    return RealPart+"+"+ImagePart+"i";
    else if(ImagePart==0.0)
    return RealPart+" ";
    else
    return RealPart+""+ImagePart+"i";
    }
    @Override
    public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Complex complex = (Complex) o;
    return Double.compare(complex.getRealPart(), getRealPart()) == 0 && Double.compare(complex.getImagePart(), getImagePart()) == 0;
    }
    }
    4.测试用例代码:
    import junit.framework.TestCase;
    import org.testng.annotations.Test;
    public class ComplexTest extends TestCase {
    Complex complex1=new Complex(5.0,1.0);
    Complex complex2=new Complex(-1.0,3.0);
    @Test
    public void getRealPart(){
    assertEquals("5.0",complex1.getRealPart());
    assertEquals("-1.0",complex2.getRealPart());
    }
    @Test
    public void getImagePart(){
    assertEquals("1.0",complex1.getImagePart());
    assertEquals("3.0",complex2.getImagePart());
    }
    @Test
    public void testComplexAdd() {
    assertEquals("4.0+4.0i",complex1.ComplexAdd(complex2).toString());
    }
    @Test
    public void testComplexSub() {
    assertEquals("6.0-2.0i",complex1.ComplexSub(complex2).toString());
    }
    @Test
    public void testComplexMulti() {
    assertEquals("-8.0+14.0i",complex1.ComplexMulti(complex2).toString());
    }
    @Test
    public void testComplexDiv() {
    assertEquals("-0.2-1.6i", complex1.ComplexDiv(complex2).toString());
    }
    @Test
    public void testtoString() {
    assertEquals("5.0+1.0i",complex1.toString());
    assertEquals("-1.0+3.0i",complex2.toString());
    }
    @Test
    public void testequals() {
    assertEquals(false,complex1.equals(complex2));
    Complex c = new Complex(complex1.getRealPart(),complex1.getImagePart());
    assertEquals(true,complex1.equals(c));
    }
    }
    5.码云上传截图:
     
    !!
    1.题目:完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
    2.需要重构的地方:重复代码,方法过长,条件逻辑过度复杂,分支语句,基本类型迷恋,数据泥团。
    3.实验过程:对代码进行规约扫描,对提示进行修改。
    4.重构后的代码:
    /**
    * Demo class
    *
    * @author 20175216
    * @date 2019/04/29
    */
    public class Complex {
    private double RealPart;//复数的实部
    private double ImagePart;//复数的虚部
    public Complex() {}
    public Complex(double R,double I){
    setRealPart(R);
    setImagePart(I);
    }
    public void setRealPart(double R){
    RealPart=R;//设置复数的实部
    }
    public void setImagePart(double I){
    ImagePart=I;//设置复数的虚部
    }
    public double getRealPart(){
    return RealPart;//返回复数的实部
    }
    public double getImagePart(){
    return ImagePart;//返回复数的虚部
    }
    Complex ComplexAdd(Complex a) {
    Complex New =new Complex();
    New.RealPart=this.RealPart+a.RealPart;
    New.ImagePart=this.ImagePart+a.ImagePart;
    return New;
    }
    Complex ComplexSub(Complex a){
    Complex New =new Complex();
    New.RealPart=this.RealPart-a.RealPart;
    New.ImagePart=this.ImagePart-a.ImagePart;
    return New;
    }
    Complex ComplexMulti(Complex a){
    Complex New =new Complex();
    New.RealPart=this.RealPart*a.RealPart-this.ImagePart*a.ImagePart;
    New.ImagePart=this.ImagePart*a.RealPart+this.RealPart*a.ImagePart;
    return New;
    }
    Complex ComplexDiv(Complex a){
    double sum=a.ImagePart*a.ImagePart+a.RealPart*a.RealPart;
    Complex b = new Complex(a.getRealPart()/sum, -a.getImagePart()/sum);
    return ComplexMulti(b);
    }
    @Override
    public String toString() {
    if(ImagePart>0.0) {
    return RealPart+"+"+ImagePart+"i";
    } else if(ImagePart==0.0) {
    return RealPart+" ";
    } else {
    return RealPart+""+ImagePart+"i";
    }
    }
    @Override
    public boolean equals(Object o) {
    if (this == o) {
    return true;
    }
    if (o == null || getClass() != o.getClass()) {
    return false;
    }
    Complex complex = (Complex) o;
    return Double.compare(complex.getRealPart(), getRealPart()) == 0 && Double.compare(complex.getImagePart(), getImagePart()) == 0;
    }
    }

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


     三、码云链接:

            自己码云链接:https://gitee.com/GeXuYang/1059724060/commit/30eae9e11b62604e1838441f41abe2cae856545c

            搭档码云链接:https://gitee.com/besti20175216/20175216_snow_plains

    四、实验心得与体会:

           这次实验我学会了很多新知识,诸如代码重构,规约扫描和Java在密码学中的一些应用。通过规约扫描,可以使我们编程更加规范、美观和标准,使非常实用的方法。本次实验最大的问题是自己只是通过了搭档的测试用例,却没有能够真正的理解他的代码,有时间一定好好看看。彼此促进。

  • 相关阅读:
    十二、 Spring Boot 静态资源处理
    九、 Spring Boot 拦截器
    docker之搭建私有仓库
    docker之Dokcerfile 常用指令
    docker之网络管理
    docker之故障问题解决方案
    docker之搭建LNMP
    docker之容器数据持久化
    都说岁月不饶人,我们又何曾饶过岁月
    docker之容器管理
  • 原文地址:https://www.cnblogs.com/gexvyang/p/10804229.html
Copyright © 2020-2023  润新知