20175212童皓桢 实验三敏捷开发与XP实践实验报告
20175212童皓桢 实验三敏捷开发与XP实践实验报告
实验内容
- XP基础
- XP核心实践
- 相关工具
实验步骤
一、Code菜单功能的研究
- Move Line/statement Down/Up:将某行、表达式向下、向上移动一行
- suround with:用 try-catch,for,if等包裹语句
- comment with line/block comment:把选中它区域变成注释
- show reformat file dialog:按照格式自动对齐
- Optimize imports:可以优化imports,去除不必要的imports
- Insert Live Template:插入一些记不起来的 Live Template 缩写
二、下载搭档的Complex代码并添加单元测试
1.添加搭档仓库
2.产品代码
/**
* @author Jason Tong
* @date 2019/4/29 14:32.
*/
public class Complex {
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
public Complex(){}
public Complex(double R,double I){
ImagePart = I;
RealPart = R;
}
public boolean equals(Object obj){
if(this == obj) {
return true;
}
if(!(obj instanceof Complex)) {
return false;
}
Complex complex = (Complex) obj;
if(complex.RealPart != ((Complex) obj).RealPart) {
return false;
}
if(complex.ImagePart != ((Complex) obj).ImagePart) {
return false;
}
return true;
}
public String toString() {
String str = "";
if (ImagePart > 0)
str = RealPart + "+" + ImagePart + "i";
if (ImagePart == 0)
str = RealPart + "";
if (ImagePart < 0)
str = RealPart + " " + ImagePart + "i";
return str;
}
// 定义公有方法:加减乘除
Complex ComplexAdd(Complex a) {
return new Complex(RealPart+a.RealPart,ImagePart+a.ImagePart);
}
Complex ComplexSub(Complex a) {
return new Complex(RealPart-a.RealPart,ImagePart-a.ImagePart);
}
Complex ComplexMulti(Complex a) {
return new Complex(RealPart*a.RealPart,ImagePart*a.ImagePart);
}
Complex ComplexDiv(Complex a) {
if(a.RealPart==0||a.ImagePart==0) {
System.out.println("被减数不能为0");
return new Complex();
}
double d = Math.sqrt(a.RealPart*a.RealPart)+Math.sqrt(a.ImagePart*a.ImagePart);
return new Complex((RealPart*a.RealPart+ImagePart*a.ImagePart)/d,Math.round((RealPart*a.ImagePart-ImagePart*a.RealPart)/d));
}
}
3.测试代码
import static org.junit.Assert.*;
import org.junit.Test;
import junit.framework.TestCase;
public class ComplexTest extends TestCase {
Complex complex = new Complex(1,1);
@Test
public void testAdd(){
assertEquals(new Complex(4.3,4.4), complex.ComplexAdd(new Complex(3.3,3.4)));
}
//测试加法
@Test
public void testSub(){
assertEquals(new Complex(-4.3,-3.4), complex.ComplexSub(new Complex(5.3,4.4)));
}
//测试减法
@Test
public void testMulti(){
assertEquals(new Complex(4.0,3.0), complex.ComplexMulti(new Complex(4.0,3.0)));
}
//测试乘法
@Test
public void testDiv(){
assertEquals(new Complex(1.0,1.0), complex.ComplexDiv(new Complex(1.0,1.0)));
assertEquals(new Complex(0.0,0.0), complex.ComplexDiv(new Complex(1.0,0.0)));
//assertEquals(new Complex(0.0,0.0), complex.ComplexDiv(new Complex(3,4)));
//边缘测试
}
@Test
public void testequals(){
assertEquals(true, complex.equals(new Complex(1.0,1.0)));
}
//测试判断相等
}
三、重构的练习
原代码为:
class A {
final double PI=3.1415926;// PI是常量
public double getArea(final double r) {
return PI*r*r;
}
public final void speak() {
System.out.println("您好,How's everything here ?");
}
}
public class Example5_9 {
public static void main(String args[]) {
A a=new A();
System.out.println("面积:"+a.getArea(100));
a.speak();
}
}
对类名以及变量名进行重构
进行封装
重构后的代码为:
/**
* @author Jason Tong
* @date 2019/4/29 16:53.
*/
class Calculate {
final double PI=3.1415926;// PI是常量
private int r;
public double getArea() {
return PI* getR() * getR();
}
public final void speak() {
System.out.println("您好,How's everything here ?");
}
public int getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
}
public class Example5_9 {
public static void main(String args[]) {
Calculate a=new Calculate();
a.setR(10);
System.out.println("面积:"+a.getArea());
a.speak();
}
}
四、用Java完成密码学内容
用java实现凯撒密码
代码为:
/**
* @author Jason Tong
* @date 2019/5/3 16:58.
*/
public class Caesar {
public static void main(String args[]) throws Exception{
String s=args[0];
int key=Integer.parseInt(args[1]);
Movement m=new Movement();
int n=s.length();
String es="";
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(c >= 'a' && c <= 'z'){
es=m.realizeMove(n,c,key,'a','z');
}
else if (c >= 'A' && c <= 'Z'){
es=m.realizeMove(n,c,key,'A','Z');
}
}
System.out.println(es);
}
}
/**
* @author Jason Tong
* @date 2019/5/3 16:59.
*/
public class Movement {
String es="";
public String realizeMove(int n,char c,int key,char a,char b){
//移动key%26位
c+=key%26;
if(c<a) {
c+=26;
//向左超界
}
if(c>b) {
c-=26;
//向右超界
}
es+=c;
return es;
}
}
实验中遇到的问题
- 问题一:使用alibaba插件检查代码规范性,提示缺少开发者信息
- 解决办法一:
File>Setting>Editor>File and Code Template
按照下图输入开发者信息,新建类时自动添加信息。
完成代码规范
- 问题二:无法推送搭档的仓库
- 解决办法二: 根据命令行提示,表明身份信息,即可推送
感悟和体会
- 学会使用Java作为工具,帮助其他学科的学习,比如密码学或是数据结构
- 可以在仓库中添加其他成员,以便于将来的结对和团队学习
- 血泪教训!!! 修改博客随笔时一定要及时备份!!经常记得
git pull
!!!
参考博客
https://blog.csdn.net/weixin_42254058/article/details/81219931
http://www.cnblogs.com/rocedu/p/4795776.html
20175212童皓桢 实验三敏捷开发与XP实践实验报告的更多相关文章
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- 20165308实验三 敏捷开发与XP实践实验报告
实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20155220 实验三 敏捷开发与XP实践 实验报告
20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- # 20155224 实验三 敏捷开发与XP实践 实验报告
20155224 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155226 实验三 敏捷开发与XP实践 实验报告
20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155311 实验三 敏捷开发与XP实践 实验报告
20155311 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 xp核心工具 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
随机推荐
- tomcat启动报ClassNotFound
排除本来就缺少该类的原因,经过自己经验和网上查的资料,解决方式如下: jar包冲突(关闭其他项目) eclipse的java版本不对,点击项目,右键properties在project facets, ...
- 06 Python网络爬虫requets模块高级用法
一. 基于requests模块的cookie操作 - cookie概念: 当用户通过浏览器访问一个域名的时候,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就 ...
- JS实现table表格在鼠标移动出现一行变色或者十字叉变色
1,一行变色 <script> function trBg(){ var tab=document.getElementById("table"); var tr=ta ...
- 【有钱的大佬看过来】Java开发学习大纲
Java开发学习大纲文档V7.0 有钱的大佬可以买下这个版权,全网最完整最详细了,没钱的大佬可以按照自己的方式去整理.有需要的私聊作者QQ:253173641 来源于-幸福的沉淀:https://ww ...
- hdu4405 概率dp
飞行棋游戏 问从0结束游戏的投色子次数期望是多少 设dp[i]表示i到n的期望,那么可以得到dp[i]=(dp[i+1]+dp[i+2]+dp[i+3]+dp[i+4]+dp[i+5]+dp[i+6] ...
- tensorflow以文件形式运行程序实例
在命令行中进入到代码所在文件夹 执行python mnist2.p或python aaa/mnist2.py这种形式
- 第二章 Vue快速入门-- 28 自定义按键修饰符
事件处理-按键修饰符 js 里面的键盘事件对应的键码 <!DOCTYPE html> <html lang="en"> <head> <m ...
- CentOS 6的系统启动流程
一.POST加电自检 按下电源后ROM芯片中的CMOS程序执行并检测CPU.内存等设备是否存在并正常运行,CMOS中的程序叫BIOS,可以设置硬盘接口,网卡声卡开关之类的简单设置.一般PC机主板上有一 ...
- jar启动名称示例
nohup java -jar -Dspring.profiles.active=20dev -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+Print ...
- Java分级考试
石家庄铁道大学选课管理系统 1.项目需求: 本项目所开发的学生选课系统完成学校对学生的选课信息的统计与管理,减少数据漏掉的情况,同时也节约人力.物力和财力.告别以往的人工统计. 2.系统要求与功能设计 ...