实验要求

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. centos7 docker 使用pipework 做虚拟机

    网卡配置文件 及 bridge的静态配置 centos7 Bridge配置 [root@mon-1 ~]# cd  /etc/sysconfig/network-scripts/ [root@mon- ...

  2. System.Buffer 以字节数组(Byte[])操作基元类型数据

    1. Buffer.ByteLength:计算基元类型数组累计有多少字节组成. 该方法结果等于"基元类型字节长度 * 数组长度" , , }; , , }; , , }; Cons ...

  3. Fiori Fundamentals和SAP UI5 Web Components

    这周有位同事邀请我给团队讲一讲SAP技术的演进历史,所以我准备了下面几个主题来介绍. 其中SAP的技术回顾和演进,我的思路就是从前后台两方面分别介绍. 我画了一张非常简单的图: 去年5月我写过一篇文章 ...

  4. 【转】深入浅出 iOS 之生命周期

    [iOS]深入浅出 iOS 之生命周期 深入浅出 iOS 之生命周期  http://blog.csdn.net/kesalin/article/details/6691766 罗朝辉(http:// ...

  5. 《梦断代码》读书笔记 part3

    第六章:搞掂设计方案 备份很重要. 必须从小项目开始,而且永远不要期望它变大,如果你这么想,就会做过度设计,把它想象得过于重要,更坏的情况是,你可能会被自己想象中的艰难工作所吓到.所以要从小 处起步, ...

  6. JavaScript设计模式导学

    如何成为一名合格的工程师? 作为一名合格的工程师,不仅需要懂代码,还要懂设计,一名合格工程师的必备条件: 前端开发有一定的设计能力,一般三年开发经验的同学,面试必须考设计能力 成为项目技术负责人,设计 ...

  7. Linux下安装PHP并在nginx服务器中进行配置的详细方法

    先介绍一下使用的环境:centos 7.4, PHP 7.0 , nginx 1.12 Linux系统版本可以通过命令:lsb_release -a 查看. 现在开始步入正题了! 1.  首先查看一下 ...

  8. 《metasploit渗透测试魔鬼训练营》学习笔记第五章--网络服务渗透攻击

    三.网络服务渗透攻击 3.1 内存攻防技术      3.1.1 缓冲区溢出漏洞机理              缓冲区溢出是程序由于缺乏对缓冲区的边界条件检查而引起的一种异常行为.           ...

  9. Owin+ASP.NET Identity浅析系列(一)用户登录注册

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 使用VS2015创建MVC项 ...

  10. [LuoguP3668][USACO17OPEN]现代艺术2

    [LuoguP3668][USACO17OPEN]Modern Art2(Link) 现在你有一块长为\(N\)的画布,每次可以选择一段连续的区间进行颜色填涂,新颜色会覆盖旧颜色.每一次填涂都要耗费一 ...