实验要求

1.初步掌握单元测试和TDD

2.理解并掌握面向对象三要素:封装、继承、多态

3.初步掌握UML建模

4.熟悉S.O.L.I.D原则

5.了解设计模式

实验内容

一、单元测试

1.三种代码

伪代码:以简洁的自然语言表明设计步骤

百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“及格” 如果成绩在70与80之间,转成“中等” 如果成绩在80与90之间,转成“良好” 如果成绩在90与100之间,转成“优秀” 其他,转成“错误”

产品代码:用以实现特定功能的程序或机器语言;

package exp1;

public class EVER{

public static String percentage2fivegrade(int grade){

//如果成绩小于60,转成“不及格”

if (grade < 60)

return "不及格";

//如果成绩在60与70之间,转成“及格”

else if (grade < 70)

return "及格";

//如果成绩在70与80之间,转成“中等”

else if (grade < 80)

return "中等";

//如果成绩在80与90之间,转成“良好”

else if (grade < 90)

return "良好";

//如果成绩在90与100之间,转成“优秀”

else if (grade < 100)

return "优秀";

//其他,转成“错误”

else

return "错误";

}

}

测试代码:用以对产品代码进行测试的代码

  • TDD测试

  • 一般步骤

    • 明确当前要完成的功能,记录成一个测试列表

    • 快速完成编写针对此功能的测试用例

    • 测试代码编译不通过(没产品代码呢)

    • 编写产品代码

    • 测试通过

    • 对代码进行重构,并保证测试通过

    • 循环完成所有功能的开发

  • TDD的编码节奏是

1、增加测试代码,JUnit出现红条

2、修改产品代码

3、JUnit出现绿条,任务完成

二、复数的四则运算

原设计代码如下:

import java.util.Scanner;

class complex {

double a, b;

complex() {

this.a = 0;

this.b = 0;

}

complex(double a) {

this.a = a;

this.b = 0;

}

complex(double a, double b) {

this.a = a;

this.b = b;

}

complex add(complex p1, complex p2) {

complex p = new complex(p1.a + p2.a, p1.b + p2.b);

return p;

}

complex minus(complex p1, complex p2) {

complex p = new complex(p1.a - p2.a, p1.b - p2.b);

return p;

}

void print() {

System.out.println("复数的值为:");

if (this.b != 0)

System.out.println(this.a + "+" + this.b + "i");

else

System.out.println(this.a);

}

}

public class compleXX {

public static void main(String[] args) {

System.out.printf("依次输入两组数字每组表示一个复数:");

Scanner scanner=new Scanner(System.in);

int q,w,e,r,t;

q=scanner.nextInt();

w=scanner.nextInt();

e=scanner.nextInt();

r=scanner.nextInt();

complex c = new complex();

complex c1 = new complex(q, w);

complex c2 = new complex(e, r);

c1.print();

c2.print();

System.out.printf("输入1来选择加法运算输入2来选择减法运算");

t=scanner.nextInt();

switch (t){

case (1):

System.out.println("这两个复数的和为:");

System.out.println((c.add(c1, c2).a + "+" + c.add(c1, c2).b + "i").toString());

case (2):

System.out.println("这两个复数的差为:");

System.out.println((c.minus(c1, c2).a + "+" + c.minus(c1, c2).b + "i").toString());}

}

}

修改plan
public class Complex

{

double real,img;

public Complex()

{

this.real=0;

this.img =0;

}

public Complex(double real,double img)

{

this.real=real;

this.img =img;

}

public double getReal()

{

return this.real;

}

public double getImage()

{

return this.img;

}

public double getReal(Complex c)

{

return c.real;

}

public double getImage(Complex c)

{

return c.img;

}

public void setReal (double real)

{

this.real=real;

}

public void setImage(double img)

{

this.img =img;

}

public Complex addComplex(Complex a,Complex b)

{

Complex temp =new Complex();

temp.real=a.real+b.real;

temp.img =a.img +b.img;

return temp;

}

public Complex decComplex(Complex a,Complex b)

{

Complex temp = new Complex();

temp.real = a.real - b.real;

temp.img = a.img - b.img;

return temp;

}

public Complex mulComplex(Complex a,Complex b)

{

Complex temp = new Complex();

temp.real = a.realb.real-a.imgb.img;

temp.img = a.realb.img+a.imgb.real;

return temp;

}

public Complex divComplex(Complex a,Complex b)

{

Complex temp = new Complex();

temp.real=(a.realb.real+a.imgb.img)/(b.realb.real+b.imgb.img);

temp.img =(a.imgb.real-a.realb.img)/(b.realb.real+b.imgb.img);

return temp;

}

public void printComplex()

{

System.out.println(""+this.real+"+"+this.img+"i");

}

public String toString()

{

String fin=" ";

if(img>0)

{

fin = real+"+"+img+"i";

}

else if(img<0)

{

fin = real+ ""+img+"i";

}

else

{

fin = fin;

}

return fin;

}

for test:

public static void main(String[] args)

{

Complex q = new Complex(6, 3);

q.printComplex();

Complex w = new Complex(2, 7);

w.printComplex();

Complex asd = new Complex();

asd = asd.addComplex(q, w);

asd.printComplex();

asd= asd.decComplex(q, w);

asd.printComplex();

asd = asd.mulComplex(q, w);

asd.printComplex();

asd = asd.divComplex(q, w);

asd.printComplex();

}

20155207 《Java程序设计》实验报告二:Java面向对象程序设计的更多相关文章

  1. Python程序设计实验报告二:顺序结构程序设计(验证性实验)

      安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩 日期     2020.3.22     指导老师       修宇 [实验 ...

  2. 20145312《Java第一次实验报告》

    20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...

  3. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  4. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  5. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

  6. 20145221 《Java程序设计》实验报告二:Java面向对象程序设计

    20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  7. Java实验报告二:Java面向对象程序设计

    Java实验报告二:Java面向对象程序设计                                                                               ...

  8. 实验二Java面向对象程序设计实验报告(2)

    实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...

  9. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  10. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

随机推荐

  1. January 08 2017 Week 2nd Sunday

    Believe not all that you see nor half what you hear. 眼见的不能全信,耳闻的也不能半信. What you hear, what you see, ...

  2. January 03 2017 Week 1st Tuesday

    It is always morning somewhere in the world. 世界上总是有一个地方可以看到阳光. There may be always someone who can e ...

  3. 用valgrind检测php扩展内存泄露

    原文:https://bugs.php.net/bugs-getting-valgrind-log.php 前提 1,编译php的时候,必须要带上--enable-debug选项. 2,禁用php的内 ...

  4. Safari自动代理

    1. 准备一个代理服务器,我使用的是GoAgent. 2. 准备一个PAC文件,我是从chrome导出的. 3. 准备一个本地文件服务器或web服务器,我是因为手头有一个使用NodeJS的小项目,所以 ...

  5. echarts仪表盘配置参数

    require.config({ paths:{ echarts:"js/chart" } }); require([ 'echarts', 'echarts/chart/gaug ...

  6. 离散对数&&大步小步算法及扩展

    bsgs algorithm ax≡b(mod n) 大步小步算法,这个算法有一定的局限性,只有当gcd(a,m)=1时才可以用 原理 此处讨论n为素数的时候. ax≡b(mod n)(n为素数) 由 ...

  7. swift中的"类型擦除"

    代理模式.或者协议模式 因为swift泛型还不支持逆变和协变也就不会有真的类型擦除,而这里说的"类型擦除"是指:利用一个具体实现的通用泛型类(参看系统库的AnySequence), ...

  8. Django的时区设置问题

    1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行 ...

  9. gluoncv训练faster rcnn的一点小问题

    gt数目超过上限. https://github.com/dmlc/gluon-cv/pull/335/files

  10. nordic对苹果性能测试

    环境: app采用nrf connect或lightblue均可: nordic从端采用nrf52840开发板pca10056: 说明与规定: (1)鉴于手机app无法主动连续快速发送多包数据,故只测 ...