四则运算,测试与封装。

测试与封装 5.1

程序开发简介:

【开发环境】:eclipse

【开发人员】:Ives & 郑胜斌

【博客地址】:http://www.cnblogs.com/IvesHe/

【开发时间】:2015-04-30

【版本】:5.1

【要求】:

  • 封装
  • 测试

【分工】:

      Ives:单元测试。界面。自定义异常。

      郑胜斌:封装 Expression类。

封装:

概念

  封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private实现封装。什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。

作用

    1、良好的封装能够减少耦合。

    2、类内部的结构可以自由修改。

    3、可以对成员进行更精确的控制。

    4、隐藏信息,实现细节。

步骤:

    1、修改属性的可见性来限制对属性的访问。(通常将类的成员变量声明为private)

      2、为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。

      3、在赋值和取值方法中,加入对属性的存取限制。

单元测试小白式教程:

             在Eclipse中使用JUnit4进行单元测试(图文教程一)

Ives:

登陆界面

package com.ives;

import java.awt.EventQueue;

public class frame {

    private JFrame frame;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private JTextField textField_3;
    private JTextField textField_4;
    private JTextField textField_5;

    int a;
    int b;
    int op;
    String Sa;
    String Sb;
    int result;
    Expression expression = new Expression();
    private JButton btnNewButton_1;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    frame window = new frame();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     * @throws Yichang
     */
    public frame() throws Yichang {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() throws Yichang{
        frame = new JFrame();
        frame.setBounds(100, 100, 517, 352);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        frame.getContentPane().add(panel, BorderLayout.CENTER);
        panel.setLayout(null);

        JLabel lblNewLabel = new JLabel("\u56DB\u5219\u8FD0\u7B97\u56685.1");
        lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        lblNewLabel.setBounds(141, 0, 208, 57);
        panel.add(lblNewLabel);

        textField = new JTextField();
        textField.setHorizontalAlignment(SwingConstants.CENTER);
        textField.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        textField.setBounds(56, 82, 88, 45);
        panel.add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        textField_1.setHorizontalAlignment(SwingConstants.CENTER);
        textField_1.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        textField_1.setColumns(10);
        textField_1.setBounds(220, 82, 88, 45);
        panel.add(textField_1);

        textField_2 = new JTextField("=");
        textField_2.setEditable(false);
        textField_2.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        textField_2.setColumns(10);
        textField_2.setBounds(318, 82, 36, 45);
        panel.add(textField_2);

        textField_3 = new JTextField();
        textField_3.setHorizontalAlignment(SwingConstants.CENTER);
        textField_3.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        textField_3.setColumns(10);
        textField_3.setBounds(371, 82, 88, 45);
        panel.add(textField_3);

        JButton btnNewButton = new JButton("\u505A\u5B8C\u4E86");
        btnNewButton.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        btnNewButton.setBounds(188, 156, 131, 45);
        panel.add(btnNewButton);

        JLabel lblNewLabel_1 = new JLabel("\u8BA1\u7B97\u7ED3\u679C");
        lblNewLabel_1.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        lblNewLabel_1.setBounds(56, 222, 131, 35);
        panel.add(lblNewLabel_1);

        textField_4 = new JTextField();
        textField_4.setFont(new Font("微软雅黑", Font.PLAIN, 20));
        textField_4.setColumns(10);
        textField_4.setBounds(188, 222, 161, 35);
        panel.add(textField_4);

        textField_5 = new JTextField();
        textField_5.setEditable(false);
        textField_5.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        textField_5.setText("+");
        textField_5.setColumns(10);
        textField_5.setBounds(159, 82, 44, 45);
        panel.add(textField_5);

        a = expression.geta();
        Sa = String.valueOf(a);
        textField.setText(Sa);

        b = expression.getb();
        Sb = String.valueOf(b);
        textField_1.setText(Sb);

        btnNewButton_1 = new JButton("\u518D\u6765 ");
        btnNewButton_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

            }
        });
        btnNewButton_1.setFont(new Font("微软雅黑", Font.PLAIN, 30));
        btnNewButton_1.setBounds(366, 222, 107, 36);
        panel.add(btnNewButton_1);

        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0){
                int n3=Integer.valueOf(textField_3.getText().toString());
                result = expression.getaswer();
                if(textField_3.getText().equals(""))
                {
                    String inputValue = JOptionPane.showInputDialog("Please input a value");
                    n3 = Integer.parseInt(inputValue);
                }
                try {
                 if(n3<0)

                        throw new Yichang("不可能是负数!");
                    } catch (Yichang e) {
                        // TODO 自动生成的 catch 块
                        e.printStackTrace();
                    }
                 if(result==n3)
                {
                    textField_4.setText(" 正确");
                }else{
                    textField_4.setText(" 错误!答案为"+result);
                }
                }
        });
    }
}

frame

  自定义异常代码

package com.ives;

class Yichang extends Exception
{
    public Yichang(String msg)
    {
        super(msg);
    }
}  

Yichang

  测试代码如下:

package com.ives;
import static org.junit.Assert.*;

import org.junit.Test;

public class ExpressionTest {

    @Test
    public void testExpression() {
        int a;
        Expression test = new Expression();
        a = test.getaswer();
        assertEquals(a, test.answer);
    }
}

ExpressionTest

  

郑胜斌

计算代码如下:

package com.ives;
import java.util.*;

import com.ives.Input;
public class Expression
{
    private int a = (int)(Math.random() * Math.pow(10,2)-1);
    private int b = (int)(Math.random() * Math.pow(10,2)-1);
    private int op;
    static int c;//用户答案
    int answer;//答案
    static Scanner in=new Scanner(System.in);

public int geta()
{
    return a;
}

public void seta(int a)
{
    this.a = a;
}

public int getb()
{
    return b;
}

public void setb(int b)
{
    this.b = b;
}

public int getaswer()
{
    return answer;
}
public Expression()
{
    answer = a+b;
}
public static void main(String[] args){
    int answer;
    Expression expression = new Expression();

    answer = expression.answer;
    Input input = new Input();
    Expression.c = input.a;
    /*try{
        Expression.c = in.nextInt();
    }
    catch(InputMismatchException e)
    {   System.err.println("\n错误!  ,请你输入一个整数");
    }*/
    if(answer==c)
    {
        System.out.print("答对了");
    }
    else System.out.print("答错了");
    //System.out.print("answer="+answer);
}
}

Expression

  

个人体会:

其实一开始老师说要做封装,我是拒绝的,但为了期末成绩,我还是蛮拼的......

这次实验要找新的伙伴,我就想到了小强童鞋。之前就想找他合作了,这次终于有了个机会和他合作了。

一开始和小强童鞋讨论的时候,讨论了一个晚上,我终于弄懂了他的四则运算的代码,还有让我做的内容。然后到了第二天他过来宿舍说,昨天那个先放下,晚上把封装搞好,然后一个晚上在我宿舍两个人一台机,慢慢把封装和测试那些搞好了。和小强合作很有趣,我们都有不同的想法,小强的能力要比我好一点,还好我们遇到问题后都能协调解决好,这一点我觉得是比较好的。小强经常带我装逼带我飞,但是我会好好学习的,就像这次,我学到了很到东西。

我相信在接下来的合作中,我们会做得更好,小强,一起努力吧!哈哈哈....

时间: 2024-10-11 06:52:46

四则运算,测试与封装。的相关文章

作业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

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

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

四则运算测试与封装5.1 结对

开发环境:eclipse 结对同伴 :罗凯杰 同伴博客:http://www.cnblogs.com/lkjie/ 未封装的程序: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Size { public static void main(String[] args) { // TODO Auto-generated method stub myframe f=new myframe(

练习5.1——四则运算 测试与封装

主程序 package com.h2; import java.text.DecimalFormat; import java.util.Scanner; import java.util.regex.Pattern; /* * 1.定制数量 * 2.控制是否有乘除法 * 3.控制数值范围 * 4.定制真分数练习题 * 5.校检用户输入 * 6.输出答题正确率 */ public class Main { public static int max = 10;// 控制算式个数 public s

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

刘恒 http://www.cnblogs.com/iliuh/ chaorenken http://www.cnblogs.com/lixuanzong/ 这个是主函数 package tion; import java.util.*; import java.applet.*; //引入Applet类 import java.awt.*; import java.awt.event.*; //引入系统事件类包. public class ta extends Applet implement

四则运算 测试与封装 (完善) 5.2 5.3

一.结对小伙伴:陈淑筠 http://www.cnblogs.com/babybluecsj/ 二.(1)我用小伙伴上一次5.1的作业来单元测试,发现当除数为零时,运行时未抛出异常,于是我们加上了    1.     if(fh2=='/'){             if(b==0){                 throw new Exception("除数不能为0!");             }             answer=a/b;         } 2. t

练习5.1更新——四则运算 测试与封装

1 package ppackage; 2 import java.util.Random; 3 import java.util.Scanner; 4 import java.util.regex.Pattern; 5 6 7 public class Colc { 8 public int sighfh,fuhaosl; 9 public float sighsz1,sighsz2,answer2,sum2=0,sum3=0; 10 public float []sighsz=new flo

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

import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class fengzhuang {// Software Engineering 軟件工程 作業2 static String jia = "+"; static String jian = "-"; static String cheng = "*"; static Str

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

1 import java.math.BigDecimal; 2 import java.text.NumberFormat; 3 import java.util.*; 4 public class Core { 5 public int calc(String zifu,int max,int fanwei1,int fanwei2,int jingdu) throws ChushulingException, fanweiException, zifushuException 6 { 7

四则运算测试与封装5.2 5.3 结对

开发环境:eclipse 结对同伴 :罗凯杰 同伴博客:http://www.cnblogs.com/lkjie/ 收获与心得: 这次的编写主要是抛出程序异常,在编写过程中遇到很多的麻烦,但通过两个人的合作,共同调试从而解决问题得出结果,发现结对的编写的好处越来越多了,从中获得的知识不少,期待下次团队的合作.