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. .net 超长URL请求返回404错误-解决方法

    <system.webServer> <security> <requestFiltering> <requestLimits maxQueryString= ...

  2. centos7虚拟机克隆后设置固定IP

    虚拟机centos7克隆一份出来之后,新centos7更改了固定IP,可是不生效.重启网卡时报错: network.service: control process exited, code=exit ...

  3. 'pip' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    之前python2.7是没有pip的,需要安装python3.6 以上. 但是安装3.6版本后,还是一样.官网提示需要执行以下命令:python -m ensurepip --default-pip ...

  4. [android]adb 模拟双击 快速点击屏幕

    1,记录数据文件到recordtap dd if=/dev/input/event1 of=/sdcard/recordtap 2,点击需要点击的位置,产生点击数据,然后按 ctrl+c 结束 3,写 ...

  5. MYSQL-联合索引

    深入理解 index merge 是使用索引进行优化的重要基础之一.理解了 index merge 技术,我们才知道应该如何在表上建立索引. 1. 为什么会有index merge 我们的 where ...

  6. visual studio 2015引入开源控件DockPanel(最简单的方法)

    一.DockPanel简介 DockPanel是一个开源控件,能够实现子窗口的浮动,在官方给的demo有演示,在vs2017微软已经集成进入常用控件中.我主要使用的是多窗口浮动,和tabControl ...

  7. 三、CSS样式——字体

    概念: CSS字体属性定义文本的字体系列.大小.加粗.风格和变形. 属性 描述 font-family 设置字体系列 font-size 设置字体的大小 font-style 设置字体的风格 font ...

  8. css常见布局问题

    1.如何实现一个盒子在页面中上下左右居中 方法一:(盒子宽高固定时) .box{ width:400px; height:200px; background:#000; position:absolu ...

  9. Oracle监听已经启动了 sqlplus / as sysdba 仍然报 ERROR:ORA-12560

    我的Oracle是11g的 system 的密码忘记了, 但是scott的密码我还记得而且能登录 . 想以sqlplus /as sysdba 修改system密码 一直在报 ERROR:ORA-12 ...

  10. 6. spring启动类配置问题

    1. @SpringBootApplication(scanBasePackages={"com.example.*"}) 相当与 @SpringBootApplication @ ...