zoukankan      html  css  js  c++  java
  • 2018-2019-2-20175327 蜂凯南 实验三 《敏捷开发与XP实践》实验报告

    2018-2019-2-20175327 蜂凯南 实验三 《敏捷开发与XP实践》实验报告

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

    一.实验内容:

    • 安装alibaba 插件,解决代码中的规范问题。在IDEA中使用工具(Code->Reformate Code)格式化代码,研究一下Code菜单,比较功能。

    • 在码云上把自己的学习搭档加入自己的项目中,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试并上传代码至码云

    • 下载搭档的代码,完成重构内容的练习。

    • 结合重构,git,代码标准,以结对的方式完成Java密码学相关内容的学习。

    二.实验步骤:

    (一)安装alibaba 插件,解决代码中的规范问题。在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。

    • 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。

    • 打开preferences ->Plugins在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效:

    • 使用比较简单:在项目名称上单击右键,在弹出菜单上选择编码规约扫描:

    • 在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能IDEA中的Code菜单如下:

    1.Override Methods(Ctrl+O):重载基本类的方法;
    2.Implement Methods(Ctrl+I):完成当前类 implements 的(或者抽象基本类的)接口的方法;
    3.Generate(Alt+Insert):创建类里面任何字段的 getter 与 setter 方法;
    4.Surround With(Ctrl+Alt+T):使用if-else、try-catch、do-while等包装代码段;
    5.Insert Live Template(Ctrl-J):执行一些记不起来的 Live Template 缩写;
    6.Comment with Line Comment(Ctrl+斜杠)/Comment with Block Comment(Ctrl+Shift+斜杠):用 Ctrl+斜杠 与 Ctrl-Shift-/ 来注释(或反注释)代码行与代码块。 用Ctrl+斜杠单行注释标记(“ //… ”)来注释(或反注释)当前行或者选择地代码块。而 Ctrl+Shift+斜杠则可以用块注释标记(“ /* */”)把所选块包围起来。要反注释一个代码块就在块中任何一个地方按 Ctrl+Shift+斜杠 即可;
    7.Reformat Code(Ctrl+Alt+L):将代码按标准格式缩进;
    8.show reformat file dialog:按照格式自动对齐
    9.Optimize imports:可以优化imports,去除不必要的imports
    10.Move Line/statement Down/Up:将某行、表达式向下、向上移动一行
    

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

    • 将搭档拉入自己码云项目

    • 下载搭档代码

    public class Complex {
        double RealPart=0;
        double ImagePart=0;
        public Complex(){}
        public Complex(double RealPart,double ImagePart){
            this.RealPart=RealPart;
            this.ImagePart=ImagePart;
    
        }
        public double getRealPart(){
            return RealPart;
        }
        public double getImagePart(){
            return ImagePart;
        }
        public String toString(){
            String s = "";
            double r=RealPart;
            double i=ImagePart;
            if(r==0&&i==0){
                s="0";
            }
            else if(r==0&&i!=0){
                s=i+"i";
            }
            else if(r!=0&&i==0){
                s=r+"";
            }
            else if(r!=0&&i<0){
                s=r+""+i+"i";
            }
            else
            {
                s=r+"+"+i+"i";
            }
            return s;
        }
        public boolean equals(Object obj){
            if(this==obj){
                return true;
            }
            else return false;
        }
    
        public Complex ComplexAdd(Complex a){
            return new Complex(RealPart+a.getRealPart(),ImagePart+a.getImagePart());
        }
        public Complex ComplexSub(Complex a){
            return new Complex(RealPart-a.getRealPart(),ImagePart-a.getImagePart());
        }
        public Complex ComplexMulti(Complex a){
            double r=RealPart*a.getRealPart()-ImagePart*a.getImagePart();
            double i =ImagePart*a.getRealPart()+RealPart*a.getImagePart();
            return new Complex(r,i);
        }
        public Complex ComplexDiv(Complex a){
            double r=(RealPart * a.ImagePart + ImagePart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart);
            double i=(ImagePart * a.ImagePart + RealPart * a.RealPart) / (a.RealPart * a.RealPart + a.RealPart * a.RealPart);
            return new Complex(r,i)
        }
    }
    
    • 对搭档代码进行测试
    mport static org.junit.Assert.*;
    
    public class ComplexTest {
    
        @org.junit.Test
        public void getRealPart() {
        }
    
        @org.junit.Test
        public void getImagePart() {
        }
    
        @org.junit.Test
        public void complexAdd() {
        }
    
        @org.junit.Test
        public void complexSub() {
        }
    }
    

    测试结果:

    • 测试成功后git add .; git commit -m "自己学号 添加内容";git push;提交搭档项目git log的截图,包含上面git commit的信息

    克隆搭档链接:

    上传代码:

    git log结果:

    (三)完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

    • 添加创建者信息
    • 给覆写方法加上@Override注解
    • 方法名,参数名,成员变量,局部变量都统一使用lowerCamelCase,遵从驼峰形式。

    (四)以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。提交学习成果码云链接和代表性成果截图,要有学号水印。

    通过学习Java密码学算法,了解了对称及非对称算法,以及如何进行秘钥的共享的知识。
    (1)根据凯撒密码特性设计算法
    (2)传入需要计算的字符串
    (3)处理计算结果

    • 产品代码:
      Caesaar.java
    public class Caesar {
    
        public static void main(String[] args) throws EadException {
            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);
                //自定义异常类
                try {
                    boolean exist = ((c > 64) && (c < 91)) || ((c > 96) && (c < 123) || c == 32 || c == 33);
                    if (exist == false) {
                        throw new EadException(s);
                    }
                } catch (EadException e) {
                    System.out.println(e.warnMess());
                }
                //小写字母
                if (c >= 'a' && c <= 'z') {
                    //移动key%26位
                    c += 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);
    
        }
    }
    

    EadException.java

    public class EadException extends Exception{
        String message;
        public EadException(String sourceString){
            message = "The input is not correct";
        }
        public String warnMess(){
            return message;
        }
    }
    
    • 重构截图

    三、遇到问题及解决方案

    • 问题1:在上传代码时出现如下问题:

    • 问题一解决方法:找准好友文件来创建代码之后上传即可

    四、实验体会

    本次实验主要学会了如何在idea中规范代码,如何邀请搭档加入自己的项目,还明白了如何进行内容的重构。在邀请搭档加入自己项目的过程中,我们在互相加入各自2018java的项目的基础上重新建了一个项目,这样方便共同传送文件,避免误删等偶然性失误。与此同时,通过学习Java密码学算法的博客,了解了对称及非对称密码算法(及DES和RSA算法),以及如何进行秘钥的共享的知识。

  • 相关阅读:
    生成doc
    Struts2 配置
    Struts(一)struts2.2概述与MVC模式深度剖析
    [DOM Event Learning] Section 4 事件分发和DOM事件流
    jquery 高亮显示案例
    jquery 下拉菜单
    3_1:操作样式
    2_2:筛选器
    2_1:选择元素
    本地存储小案例:记住用户名
  • 原文地址:https://www.cnblogs.com/hollfull/p/10801281.html
Copyright © 2011-2022 走看看