20175314 实验二 Java面向对象程序设计

一、实验报告封面

课程:Java程序设计 班级:1753班 姓名:薛勐 学号:20175314

指导教师:娄嘉鹏 实验日期:2019年5月3日

实验时间:15:35 - 17:15 实验序号:三

实验名称: 敏捷开发与XP实践

实验要求:

1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。

2、实验报告中统计自己的PSP(Personal Software Process)时间;

3、掌握使用IDEA完成基础编程与程序调试的能力。

二、实验内容

  • XP基础
  • XP核心实践
  • 相关工具

三、实验步骤

(一)代码格式化

创建“175314.exp3”项目,在该项目下创建CodeStandard.java,并输入代码:

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

打开Settings ->Plugins ->Browse repositories,在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装

安装后右键点击类名,再点击“编码规约扫描”

  • 发现代码中不规范的地方后进行纠正:

打开Code->Reformate Code,格式化代码:

我认为最好用的工具是Reformate Code,可以快速规范代码格式,方便观察及编写,还有就是Override Methods,提供了Java.lang包中的一些类的方法重写

(二)邀请搭档加入码云项目,对搭档的代码进行Junit测试

在我的码云中创建Teamwork项目,邀请自己的搭档20175316盛茂淞成为“开发者”

引入搭档在实验二中的Complex代码,加入多个Junit测试用例并编译:

搭档的 Complex.java:

public class Complex {
double R;
double I;
Complex(double R, double I) {
this.R = R;
this.I = I;
}
public static double getRealPart(double R) {
return R;
}
public static double getImagePart(double I) {
return I;
}
public Complex ComplexAdd(Complex c) {
return new Complex(R + c.R, I + c.I);
}
public Complex ComplexSub(Complex c) {
return new Complex(R - c.R, I - c.I);
}
public Complex ComplexMulti(Complex c) {
return new Complex(R * c.R - I * c.I, R * c.I + I * c.R);
}
public Complex ComplexDiv(Complex c) {
return new Complex((R * c.I + I * c.R) / (c.I * c.I + c.R * c.R), (I * c.I + R * c.R) / (c.I * c.I + c.R * c.R));
}
public String toString() {
String str = "";
if (I > 0)
str = R + "+" + I + "i";
if (I == 0)
str = R+"";
if (I < 0)
str = R + "" + I + "i";
return str;
}
public boolean equals(Object obj){
if (this == obj)
return true;
if(obj==null)
return false;
if(obj instanceof Complex){
Complex p = (Complex) obj;
if(p.R==this.R &&p.I==this.I )
return true;
}
return false;
}
}

ComplexTest:



出现“绿条”,通过测试

在命令行中使用git语句将代码传到我和搭档新建的共同项目Teamwork,然后输入git log并截图:

(三)重构的练习

下载一个搭档的代码,我选择了MyUtil.java:

代码中存在的问题与分析

  • 问题:根据截图中的结果分析,没有考虑分数不能低于0分而且分数可以等于100分

根据以上问题,对代码进行了如下重构

else if (grade < 100)
return "优秀";
  • 修改为:
else if (grade <= 100)
return "优秀";
  • 添加:
if ((grade < 0))
return "错误";

对修改的代码进行Junit测试,出现“绿条”,结果正确

(四)Java密码学算法的学习

编写一个实现MD5加密的程序:

import javax.swing.*;
import java.io.Console;
import java.security.*;
import java.util.Scanner;
public class MD5{
public static void main(String args[ ]) throws Exception{
System.out.println("请输入密码");
Scanner scanner = new Scanner(System.in);
String pass = scanner.nextLine();
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(pass.getBytes());
byte[] hash = md5.digest();
pass = "";
for (int i = 0; i < hash.length; i++) {
pass += Integer.toHexString(hash[i] & 0xff);
}
System.out.print("加密结果为"+pass);
}
}

运行MD5.java,输入abc,得到如下结果:

阅读并运行DES算法程序并且运行,得到如下结果:

阅读并运行RSA算法程序并且运行,得到如下结果:

四、遇到的问题

  • (MD5.java)Java(pass方法)中只有按值传递,没有按引用传递:



值传递:传递的是存储单元中的内容,而非地址或者引用。

五、感想与收获

这次实验对于我来说依然不轻松,不过学到的也是很多的,特别是再一次更深入地了解了Java里面强大的关于密码的功能(之前在Example8_8也有接触过),Java可以很容易地实现很多密码算法,十分方便,这与我们的信息安全专业紧密地连接到了一起。

六、码云链接

七、Personal Software Process时间

步骤 耗时 百分比
需求分析 40 13.3%
设计 60 20%
代码实现 120 40%
测试 40 13.3%
分析总结 40 13.4%

八、参考资料

实验三 敏捷开发与XP实践

Java 密码学算法

20175314 实验三 敏捷开发与XP实践的更多相关文章

  1. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

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

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  3. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  4. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  5. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  6. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

  7. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

  8. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  9. #实验三 敏捷开发与XP实践---实验报告

    一.实验三 敏捷开发与XP实践-1 1.实验要求 -实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成I ...

随机推荐

  1. rocketmq (一)运行原理以及使用问题

    使用消息中间件可以解决高并发,那是因为消息中间件可以将消息缓存到队列之中. 但是 当消息 过多的时候,几万,几十万...消息中间件也可能会宕机,所以我们可以对消息中间件进行集群,在之前的activem ...

  2. Android屏幕亮度调节相关源码

    如下代码内容是关于Android屏幕亮度调节相关的代码. public static boolean isAutoBrightness(ContentResolver aContentResolver ...

  3. web页面性能

    一.资源压缩合并,减少HTTP请求 二.非核心代码异步加载 1.异步加载的方式 动态脚本加载 defer async 2.异步加载的区别 (1)defer是在HTML解析完之后才会执行,如果是多个,按 ...

  4. 编译问题:'<invalid-global-code>' does not contain a definition for 'Store' and no extension method 'XXX' accepting a first argument of type '<invalid-global-code>' could be found

    这是VS2015上的bug. 我碰到的时候,是VS在合并两个分支的代码时,多加了一个}.导致编译语法报错.. 解决办法就是在错误的附近,找找有没有多余的大括号,删掉即可. 这个问题在vs2017上面没 ...

  5. mysql-xtrabackup备份sh: xtrabackup_56: command not found与error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory

    sh: xtrabackup_56: command not foundinnobackupex: fatal error: no 'mysqld' group in MySQL options解决办 ...

  6. jmeter接口测试-线程组设置(断言失败后用例停止执行)

    问题描述: jmeter跑接口用例的时候,其中一条用例的对断言失败后,后面的用例都不执行了! 解决思路1: 考虑应该有地方设置,在菜单栏找了半天没找到,百度也没有查到 解决思路2: jmeter源码导 ...

  7. 5DAY高级权限

    5DAY高级权限 0xff001 suid\sgid\sticky ; s\s\t ; 4\2\1特殊位 001.描述 suid,sgid针对文件程序时,具备临时提升权限 sgid 针对目录时,该目录 ...

  8. 命令纠正工具 thefuck 的简单使用

    在unix系列的系统中,总会出现 命令拼写或者执行错误的情况, 比如 把 python 写成了pythou, cd 到一个不存在的目录,执行任务的权限 不够的问题, 这是心里 总是 在 fuck,但是 ...

  9. vue.js 自定义事件

    <div id="app"> <h2>{{num}}</h2> <h1>全局组件</h1> <my-compone ...

  10. Thinkphp整合阿里云OSS图片上传实例

    Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...