zoukankan      html  css  js  c++  java
  • 20172316 2017-2018-2 《程序设计与数据结构》 实验三报告

    课程:《程序设计与数据结构》
    班级: 1723
    姓名: 赵乾宸
    学号:20172316
    实验教师:王志强
    必修/选修:必修


    1.实验内容

    敏捷开发与XP实践

    • (1)代码规范
    • (2)协同测试
    • (3)重构
    • (4)密码学应用

    2. 实验过程及结果

    (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));
    }
    }
    

    首先安装alibaba 插件,实现代码重新格式化
    得到

    /**
     * CodeStandard class 
     * 
     * @author 赵乾宸
     * @date 2018/05/16
     */
    public class CodeStandard {
        public static void main(String[] args) {
            final int maxCapacity = 20;
            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() < maxCapacity) {
                buffer.append("1234567");
            }
            for (int i = 0; i < buffer.length(); i++) {
                System.out.println(buffer.charAt(i));
            }
        }
    }
    

    --->研究Code菜单,找出感觉最好的功能,我最喜爱的是Move Statement Down, Move Statement Up这两个可以将光标所在的statement(语句块?)向上或向下挪动。

    -->蓝墨云地址<--


    (2)协同测试

    取用20172329王文彬同学的代码Mycomplex.java进行测试,测试完毕后git log如下:

    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    public class MyComplexTest {
        static MyComplex com1 = new MyComplex(1, 1);
        static MyComplex com2 = new MyComplex(1, 1);
        static MyComplex com3 = new MyComplex(2, 2);
        static MyComplex com4 = new MyComplex(0 ,0);
        static MyComplex com5 = new MyComplex(1, 0);
        static MyComplex com6 = new MyComplex(0, 2);
    
        @Test
        public void equals() throws Exception{
            assertEquals(com1.equals(com2), true);
        }
    
        @Test
        public void complexAdd() throws Exception{
            assertEquals(com1.ComplexAdd(com2).toString(), com3.toString());
        }
    
        @Test
        public void complexSub() throws Exception{
            assertEquals(com1.ComplexSub(com2).toString(), com4.toString());
        }
    
        @Test
        public void complexMulti() throws Exception{
            assertEquals(com1.ComplexMulti(com2).toString(), com6.toString());
        }
    
        @Test
        public void complexDiv() throws Exception{
            assertEquals(com1.ComplexDiv(com2).toString(), com5.toString());
        }
    
    }
    

    码云地址为https://gitee.com/CS-IMIS-23/20172327wwb/blob/master/Test/exp/MyComplexTest.java

    -->蓝墨云地址<--

    (3)重构

    对同学代码进行三项重构,
    第一个:pp23.java,对其求商的变量名进行重构。

    第二个:homework2.java, 对其文件名进行重构。

    第三个:Cow.java,将其中几个父类封装过的变量引用重构为getter。

    防止出现意外错误,结果没有上传至王文彬码云,但蓝墨云有重构后详细截图

    -->蓝墨云地址<--

    (4)密码学应用

    参考http://www.cnblogs.com/rocedu/p/6683948.html以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。

    凯撒密码

    成果:

    Java对称加密-DES算法

    成果:

    Java非对称加密-RSA算法

    成果:

    使用密钥协定创建共享密钥

    成果:

    Java摘要算法- MD5

    成果:

    -->蓝墨云地址<--


    3. 实验过程中遇到的问题和解决过程

    • 问题1:代码不符合格式(alibaba的),特别是创建者信息部分,改了几次不行
    • 问题1解决方案:一直改动,其中还尝试了教科书上的格式
    //*******************************************************************
    //  CodeStandard.java       Author: ZhaoQianchen
    //
    //  A standard of code.
    //*******************************************************************
    

    没有效果,查看了Inspection Result信息之后,发现alibaba代码规范的这一部分的格式十分严格必须一模一样,像这样:

    /**
     * CodeStandard class
     *
     * @author 赵乾宸
     * @date 2018/05/16
     */
    

    • 问题2:从同学码云上clone下来的程序修改后push不上
    • 问题2解决方案:根据IDEA的提示,进行merge(合并),虽然不太懂,之前一直以为合并会发生文件还原的现象,导致自己的测试类被删除,一直不敢点击。不过点完之后还是没什么问题,成功上传。


    其他(感悟、思考等)

    参考资料

    《Java程序设计与数据结构教程(第二版)》
    《Java程序设计与数据结构教程(第二版)》学习指导
    《Intellj IDEA 简易教程》
    《实验三 敏捷开发与XP实践》

  • 相关阅读:
    单位矩阵
    向量的内积(也叫点积)
    svm
    vue.js 中this.$router.push()的使用
    Spring Bean 的加载过程
    Solr是什么?
    Servlet中如何获取用户提交的查询参数或表单数据?
    Redis面试题大全含答案
    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    抽象类(abstract class)和接口(interface)有什么异同?
  • 原文地址:https://www.cnblogs.com/zhaoqianchen/p/9102634.html
Copyright © 2011-2022 走看看