5.2测试与封装

//源代码

package avshabi;
import java.util.StringTokenizer;
public class Calculator {
int numerator; // 分子
int denominator; // 分母

Calculator(){
}

Calculator(int a,int b){
if(a == 0){
numerator = 0;
denominator = 1;
}
else{
setNumeratorAndDenominator(a,b);
}
}

void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母
int c = f(Math.abs(a),Math.abs(b)); // 计算最大公约数
numerator = a / c;
denominator = b / c;
if(numerator<0 && denominator<0){
numerator = - numerator;
denominator = - denominator;
}
}

int getNumerator(){
return numerator;
}

int getDenominator(){
return denominator;
}

int f(int a,int b){ // 求a和b的最大公约数
if(a < b){
int c = a;
a = b;
b = c;
}
int r = a % b;
while(r != 0){
a = b;
b = r;;
r = a % b;
}
return b;
}

Calculator add(Calculator r){ // 加法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b + denominator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

Calculator sub(Calculator r){ // 减法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b - denominator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
} 

Calculator muti(Calculator r){ // 乘法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

Calculator div(Calculator r){ // 除法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b;
int newDenominator = denominator * a;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

// 封装了具体运算,主要为对输入进行转换,对输出封装
public static void compute(String data1,String operation,String data2){
StringTokenizer fenxi = new StringTokenizer(data1,"/");
int data1_1 = Integer.parseInt(fenxi.nextToken());
int data1_2 = Integer.parseInt(fenxi.nextToken());
fenxi = new StringTokenizer(data2,"/");
int data2_1 = Integer.parseInt(fenxi.nextToken());
int data2_2 = Integer.parseInt(fenxi.nextToken());

Calculator r1 = new Calculator(data1_1,data1_2);
Calculator r2 = new Calculator(data2_1,data2_2);

Calculator result;
int a,b;
if(operation.equals("+")){
result = r1.add(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("-")){
result = r1.sub(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("*")){
result = r1.muti(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("/")){
result = r1.div(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}
}
}

// 测试类

package avshabi;

import java.util.Scanner;
public class TestCal {
public static void main(String[] args) {
// TODO Auto-generated method stub

// 用户输入两分数和运算符
Scanner input = new Scanner(System.in);
System.out.println("请用户输入第一个分数(格式a/b)");
String data1 = input.next();
System.out.println("请用户输入要进行运算的运算符(+-*/)");
String operation = input.next();
System.out.println("请用户输入第二个分数(格式c/d)");
String data2 = input.next();

// 根据用户输入进行具体运算
Calculator cal = new Calculator();
System.out.println("运算结果为:");
cal.compute(data1, operation, data2);
//    }
}
}

//JUINT测试应用举例
package avshabi;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculatorTest {
Calculator cal = new Calculator();
    @Test
    public void testSetNumeratorAndDenominator() {
        cal.setNumeratorAndDenominator(2, 3);
    }

    @Test
    public void testF() {
        cal.f(1, 2);
    }

    @Test
    public void testSub() {
        cal.sub(cal);
    }

    @Test
    public void testCompute() {

        cal.compute("1/2", "+", "1/3");
    }

}
时间: 2024-10-07 03:59:39

5.2测试与封装的相关文章

测试与封装5.1

我的队友是52吴舒婷,博客内容主要是白盒黑盒的测试数据分析 我们通过简单的四则运算来进行程序的测试与封装 我们主要完成的是事情 (1)封装:将运算要运用的方法进行封装 文件主要有三个:Calculate(存放运算要用得到方法).CalcuTest(主要main方法).Test(测试) Calculate中主要的方法:Cal()运算.input()输入.judge判断() 代码如下:CalcuTest(主要main方法) package Test.src.src; import java.util

【作业报告】作业5 四则运算 测试与封装 5.1

测试与封装 5.1 程序开发简介: [开发环境]:eclipse [开发人员]:Ives & 郑胜斌 [博客地址]:38郑胜斌 [开发时间]:2015-04-30 [版本]:5.1 [要求]: 封装 测试 封装: 概念 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一种信息隐藏技术,在java中通过关键字private实现封装.什么是封装?封装把对象的所

作业5 四则运算 测试与封装 5.2

作业5 四则运算 测试与封装  5.2 开发环境:   Eclipse 开发人员:   欧其锋(201306114305) 余汉城(201306114317)(http://www.cnblogs.com/yuhancheng/) 分工:   欧其锋:异常处理 余汉城:重构 源代码: 1 package GongNengpk; 2 3 import GongNengpkTest.ChuShuLingException; 4 import GongNengpkTest.JCException; 5

selenium之多线程启动grid分布式测试框架封装(四)

九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.net.MalformedURLException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set;

selenium之多线程启动grid分布式测试框架封装(一)

一.设计思路 在国内市场上,IE内核的浏览器占据了绝大部分的市场份额,那么此次框架封装将进行IE系列的浏览器进行多线程并发执行分布式测试的封装. 运行时主进程与多线程关系如下: 运行线程通俗的说就是我们用来跑用例的线程,其中<监控线程1>用来监控<运行线程1>的运行状态. 二.前期准备 1.创建一个java工程. 2.导入selenium.dom4j.log4j相关jar包 可到网上自行寻找jar包,也可到我云盘中下载,地址: selenium jar 以及源码jar :http:

四则运算,测试与封装。

测试与封装 5.1 程序开发简介: [开发环境]:eclipse [开发人员]:Ives & 郑胜斌 [博客地址]:http://www.cnblogs.com/IvesHe/ [开发时间]:2015-04-30 [版本]:5.1 [要求]: 封装 测试 [分工]: Ives:单元测试.界面.自定义异常. 郑胜斌:封装 Expression类. 封装: 概念 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对

适用于带fifo接口的存储器和显示器测试模块封装 挑战cb

cb说完美是没有极限的,对此我表示赞同,自从用了cb的板子,玩开cmos,fpga,sdram,vga等. 不断涌现的是,双端口sdram,四端口sdram,各式各样的封装,但是大同小异,但总是有些不同,对于初学的我,感觉还是挺费事,玩转各种例程发现,cb的sdram驱动程序很强大但并不完美,其中对sdram有挑选作用,如hy57v641620ftp-7很ok的使用,换成hy57v641620ftp-6就有问题,但是使用其他版本程序测试,这两个ic均ok. 这个问题一度困扰过cb良久,最终cb偶

小学生四则运算程序的简单测试与封装

程序原型:之前写的小学生四运算程序 实验环境:java语言 封装代码如下: 1 package SuanFa; 2 3 public class Core { 4 public double jia(double a,double b) 5 { 6 double c=a+b; 7 return c; 8 } 9 public double jian(double a,double b) 10 { 11 double c=a-b; 12 return c; 13 } 14 public doubl

5.2 测试与封装

//源代码 package avshabi; import java.util.StringTokenizer; public class Calculator { int numerator; // 分子 int denominator; // 分母 Calculator(){ } Calculator(int a,int b){ if(a == 0){ numerator = 0; denominator = 1; } else{ setNumeratorAndDenominator(a,b