您的位置:首页 > 其它

四则运算,测试与封装。

2015-05-05 15:21 239 查看

测试与封装 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


  

个人体会:

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

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

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

我相信在接下来的合作中,我们会做得更好,小强,一起努力吧!哈哈哈....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: