20155207 《Java程序设计》实验报告二:Java面向对象程序设计
实验要求
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面向对象程序设计的更多相关文章
- Python程序设计实验报告二:顺序结构程序设计(验证性实验)
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩 日期 2020.3.22 指导老师 修宇 [实验 ...
- 20145312《Java第一次实验报告》
20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告
20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...
- 20145221 《Java程序设计》实验报告二:Java面向对象程序设计
20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- 实验二Java面向对象程序设计实验报告(2)
实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
随机推荐
- Python 处理脚本的命令行参数-getopt
# -*- coding:utf-8 -*- import sys def test(): """ 参数列表:sys.argv 参数个数:len(sys.argv) 脚本 ...
- kafka部分重要参数配置-broker端参数
broker端参数主要在config/server.properties目录下设置: 启动命令:nohup ./kafka-server-start.sh -daemon ../config/serv ...
- Directed Graphs
有向图 Introduction 就是边是有方向的,像单行道那样,也有很多典型的应用. 点的出度指从这个点发出的边的数目,入度是指向点的边数.当存在一条从点 v 到点 w 的路径时,称点 v 能够到达 ...
- linux setup 相关text mode图形配置工具的安装
centos 6.4 x86_64 minimal安装后发现setup命令不可用 yum update yum install setup 安装完了还是不可用,不知为什么,难道装的那个包不对?yum ...
- jq实现 元素显示后 点击页面的任何位置除元素本身外 隐藏元素
$(".share-weixin").on("click",function(e){ var $wx=$(".weixin-share"), ...
- Math Summary 数论总结
一.素数 Miller-Rabin 首先介绍一下伪素数:若n是一个正整数,且存在正整数a满足$a^{n-1}\equiv1\;(mod\;n)$ (费马小定理,但n不一定为素数) 那么我们说n是基于a ...
- Kali-linux使用Wifite破解无线网络
一些破解无线网络程序是使用Aircrack-ng工具集,并添加了一个图形界面或使用文本菜单的形式来破解无线网络.这使得用户使用它们更容易,而且不需要记住任何命令.本节将介绍使用命令行工具Wifite, ...
- Luogu_3239 [HNOI2015]亚瑟王
Luogu_3239 [HNOI2015]亚瑟王 vim-markdown 真好用 这个题难了我一下午 第一道概率正而八经\(DP\),还是通过qbxt讲解才会做的. 发现Sengxian真是个dal ...
- Java Web 程序猿的职业进阶之路
啥也不说了,都在图里了.希望能够给大家的职业规划一些提示,尤其是写了几年程序,却越来越迷茫的同学.
- 深入理解Java虚拟机(一) 运行时数据区划分
前言:从我学Java的第一天开始,我的大学老师就告诉我 Java语言相比C.C++的语言有一个非常强大的功能,那就是自动内存管理:我们用Java编码时不需要申请或释放内存等,这些工作全部交由我们的Ja ...