【作业报告】作业5 四则运算 测试与封装 5.1
测试与封装 5.1
程序开发简介:
【开发环境】:eclipse
【开发人员】:Ives & 郑胜斌
【博客地址】:38郑胜斌
【开发时间】:2015-04-30
【版本】:5.1
【要求】:
- 封装
- 测试
【分工】:
Ives:单元测试。界面。自定义异常。
郑胜斌:封装 Expression类。
封装:
概念
1、良好的封装能够减少耦合。
3、可以对成员进行更精确的控制。
4、隐藏信息,实现细节。
步骤:


1 package com.ives; 2 3 import java.awt.EventQueue; 4 5 public class frame { 6 7 private JFrame frame; 8 private JTextField textField; 9 private JTextField textField_1; 10 private JTextField textField_2; 11 private JTextField textField_3; 12 private JTextField textField_4; 13 private JTextField textField_5; 14 15 int a; 16 int b; 17 int op; 18 String Sa; 19 String Sb; 20 int result; 21 Expression expression = new Expression(); 22 private JButton btnNewButton_1; 23 24 25 /** 26 * Launch the application. 27 */ 28 public static void main(String[] args) { 29 EventQueue.invokeLater(new Runnable() { 30 public void run() { 31 try { 32 frame window = new frame(); 33 window.frame.setVisible(true); 34 } catch (Exception e) { 35 e.printStackTrace(); 36 } 37 } 38 }); 39 } 40 41 /** 42 * Create the application. 43 * @throws Yichang 44 */ 45 public frame() throws Yichang { 46 initialize(); 47 } 48 49 /** 50 * Initialize the contents of the frame. 51 */ 52 private void initialize() throws Yichang{ 53 frame = new JFrame(); 54 frame.setBounds(100, 100, 517, 352); 55 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 56 57 JPanel panel = new JPanel(); 58 frame.getContentPane().add(panel, BorderLayout.CENTER); 59 panel.setLayout(null); 60 61 JLabel lblNewLabel = new JLabel("\u56DB\u5219\u8FD0\u7B97\u56685.1"); 62 lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 63 lblNewLabel.setBounds(141, 0, 208, 57); 64 panel.add(lblNewLabel); 65 66 textField = new JTextField(); 67 textField.setHorizontalAlignment(SwingConstants.CENTER); 68 textField.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 69 textField.setBounds(56, 82, 88, 45); 70 panel.add(textField); 71 textField.setColumns(10); 72 73 textField_1 = new JTextField(); 74 textField_1.setHorizontalAlignment(SwingConstants.CENTER); 75 textField_1.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 76 textField_1.setColumns(10); 77 textField_1.setBounds(220, 82, 88, 45); 78 panel.add(textField_1); 79 80 textField_2 = new JTextField("="); 81 textField_2.setEditable(false); 82 textField_2.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 83 textField_2.setColumns(10); 84 textField_2.setBounds(318, 82, 36, 45); 85 panel.add(textField_2); 86 87 textField_3 = new JTextField(); 88 textField_3.setHorizontalAlignment(SwingConstants.CENTER); 89 textField_3.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 90 textField_3.setColumns(10); 91 textField_3.setBounds(371, 82, 88, 45); 92 panel.add(textField_3); 93 94 JButton btnNewButton = new JButton("\u505A\u5B8C\u4E86"); 95 btnNewButton.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 96 btnNewButton.setBounds(188, 156, 131, 45); 97 panel.add(btnNewButton); 98 99 JLabel lblNewLabel_1 = new JLabel("\u8BA1\u7B97\u7ED3\u679C"); 100 lblNewLabel_1.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 101 lblNewLabel_1.setBounds(56, 222, 131, 35); 102 panel.add(lblNewLabel_1); 103 104 textField_4 = new JTextField(); 105 textField_4.setFont(new Font("微软雅黑", Font.PLAIN, 20)); 106 textField_4.setColumns(10); 107 textField_4.setBounds(188, 222, 161, 35); 108 panel.add(textField_4); 109 110 textField_5 = new JTextField(); 111 textField_5.setEditable(false); 112 textField_5.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 113 textField_5.setText("+"); 114 textField_5.setColumns(10); 115 textField_5.setBounds(159, 82, 44, 45); 116 panel.add(textField_5); 117 118 a = expression.geta(); 119 Sa = String.valueOf(a); 120 textField.setText(Sa); 121 122 b = expression.getb(); 123 Sb = String.valueOf(b); 124 textField_1.setText(Sb); 125 126 btnNewButton_1 = new JButton("\u518D\u6765 "); 127 btnNewButton_1.addActionListener(new ActionListener() { 128 public void actionPerformed(ActionEvent e) { 129 130 } 131 }); 132 btnNewButton_1.setFont(new Font("微软雅黑", Font.PLAIN, 30)); 133 btnNewButton_1.setBounds(366, 222, 107, 36); 134 panel.add(btnNewButton_1); 135 136 137 btnNewButton.addActionListener(new ActionListener() { 138 public void actionPerformed(ActionEvent arg0){ 139 int n3=Integer.valueOf(textField_3.getText().toString()); 140 result = expression.getaswer(); 141 if(textField_3.getText().equals("")) 142 { 143 String inputValue = JOptionPane.showInputDialog("Please input a value"); 144 n3 = Integer.parseInt(inputValue); 145 } 146 try { 147 if(n3<0) 148 149 throw new Yichang("不可能是负数!"); 150 } catch (Yichang e) { 151 // TODO 自动生成的 catch 块 152 e.printStackTrace(); 153 } 154 if(result==n3) 155 { 156 textField_4.setText(" 正确"); 157 }else{ 158 textField_4.setText(" 错误!答案为"+result); 159 } 160 } 161 }); 162 } 163 }
frame


1 package com.ives; 2 3 class Yichang extends Exception 4 { 5 public Yichang(String msg) 6 { 7 super(msg); 8 } 9 }
Yichang
测试代码如下:


1 package com.ives; 2 import static org.junit.Assert.*; 3 4 import org.junit.Test; 5 6 7 public class ExpressionTest { 8 9 @Test 10 public void testExpression() { 11 int a; 12 Expression test = new Expression(); 13 a = test.getaswer(); 14 assertEquals(a, test.answer); 15 } 16 }
ExpressionTest
郑胜斌


1 package com.ives; 2 import java.util.*; 3 4 import com.ives.Input; 5 public class Expression 6 { 7 private int a = (int)(Math.random() * Math.pow(10,2)-1); 8 private int b = (int)(Math.random() * Math.pow(10,2)-1); 9 private int op; 10 static int c;//用户答案 11 int answer;//答案 12 static Scanner in=new Scanner(System.in); 13 14 public int geta() 15 { 16 return a; 17 } 18 19 public void seta(int a) 20 { 21 this.a = a; 22 } 23 24 public int getb() 25 { 26 return b; 27 } 28 29 public void setb(int b) 30 { 31 this.b = b; 32 } 33 34 public int getaswer() 35 { 36 return answer; 37 } 38 public Expression() 39 { 40 answer = a+b; 41 } 42 public static void main(String[] args){ 43 int answer; 44 Expression expression = new Expression(); 45 46 answer = expression.answer; 47 Input input = new Input(); 48 Expression.c = input.a; 49 /*try{ 50 Expression.c = in.nextInt(); 51 } 52 catch(InputMismatchException e) 53 { System.err.println("\n错误! ,请你输入一个整数"); 54 }*/ 55 if(answer==c) 56 { 57 System.out.print("答对了"); 58 } 59 else System.out.print("答错了"); 60 //System.out.print("answer="+answer); 61 } 62 }
Expression
运行截图如下:
个人体会:
终于到了这个版块了。每次写作业报告我都特别喜欢这个版块,能够畅所欲言,为自己代言。哈哈,废话不多说了,还是说点有用的吧。
Duang!
1、前几天和郑童鞋做宿舍里面讨论何谓封装,何谓单元测试,要怎么样去做这次作业的第一个阶段的。虽然讨论完了都断网了,不能玩游戏。但是,真的有充实的感觉,没有玩游戏也没关系,因为学习到了东西。而且和郑童鞋一起讨论交流感觉很愉快,没有争吵,不过不知道下个阶段会不会争吵,不过为了知识而争吵,也是蛮不错的,很期待,到时候专门更新“做汉堡”来给郑童鞋做个好吃的汉堡好了。等着我,小斌斌。
2、知道今天,我才发现了其实我们之前讨论的封装没有讨论到它的核心思想。前面都有提到封装的概念、作用、步骤等等,我就不多说了。我觉得封装就是把属性隐藏,不对外分享。外部要访问只能通过方法。所以每个属性都应该有一对get,set方法。就好比如你有一座房子,房子里面的装饰,家具什么的都随你摆放,别人不能够懂你的任何东西,因为他们没有钥匙打开你的门,但是他们可以通过窗口来看到你里面的摆设。所以一定得留个窗口给别人,不然就会没意义了哦。
ps: 其实封装的概念很广的,助教的那个Code类有争议,有人说没有信息隐藏(没有定义私有化的变量),所以严格不算是封装,但是有人说它定义了对外接口(公共方法),这样也算是封装。嗯,不用纠结概念的。过几天贴一篇关于“封装”的博文出来,有兴趣的小伙伴可以关注哦!
3、自定义异常类很好玩啊。哈哈。第三点我只是想表达这个!至于怎么去定义自定义类什么的教程,请看
Java自定义异常
4.好充实的一天,写了一天的博客。痛并快乐着。
5.对小斌斌说的话:下一个阶段的工作可能会复杂那么一点,但是我相信你,相信我们,相信我。我们会做得更好的,一起加油。
感觉这次的作业报告废话好多啊。哇哈哈。Happying~~~
---------此次的作业报告到此结束,谢谢老师审阅------------
--------如果以上有什么错误或者不足之处,欢迎指出。--------
PS:长期招募小伙伴一起组成一个团队学习软件开发(java), 可以合作开发软件,也可以讨论交流,有志同道合的小伙伴可以发站内消息。
转载于:https://www.cnblogs.com/IvesHe/p/4469621.html
【作业报告】作业5 四则运算 测试与封装 5.1相关推荐
- c语言四则运算程序报告,C语言四则运算测试程序设计报告
<C语言四则运算测试程序设计报告>由会员分享,可在线阅读,更多相关<C语言四则运算测试程序设计报告(23页珍藏版)>请在人人文库网上搜索. 1.昆明理工大学计算机程序设计基础课 ...
- 5.1作业5 四则运算 测试与封装
这次作业是我们小组成员我(21林庆光)和同伴(13卢盛添)的结伴作业,按照老师的要求我们换了同伴组队来完成这次的作业.这次的作业是在上次作业四则运算的基础上完成的,实现了对其计算功能类的封装,完成代码 ...
- 练习5.1更新——四则运算 测试与封装
package com.h1;import static org.junit.Assert.*;import org.junit.Assert; import org.junit.Before; im ...
- c语言作业报告,C语言程序设计综合作业报告——作业管理系统
1.1系统概要 (1) 进入系统之前,用户输入密码1234,进入,共有3次机会. (2) 用户根据需要输入(0-5)或(0-6)实现不同的功能,若输入其他字符,则显示按键错误,并返回界面让用户重新选择 ...
- sql server作业_在SQL Server中报告作业失败并发出警报
sql server作业 SQL Server Agent can be used to run a wide variety of tasks within SQL Server. The buil ...
- 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。
目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...
- 计算机地质应用软件,中国地质大学《质软件应用》作业报告.doc
中国地质大学<质软件应用>作业报告 计算机地质应用软件 MapGIS软件实验报告 学号: 姓名: 实验目的 实验任务 实验步骤 建立新的MapGIS工程: 点击主菜单"图形处理& ...
- 计算机硬件大型作业报告,计算机硬件技术大作业报告.doc
计算机硬件技术大作业报告 计算机硬件技术实践报告 题目 温度测量系统设计 姓名 专业 测控技术与仪器 班级 学号 上海电力学院自动化工程学院 目录: (1) 设计题目 () 开发目的 (3) 小组成员 ...
- 计算机软件技术大作业报告,多媒体技术大作业报告.doc
多媒体技术大作业报告.doc 华南理工大学 多媒体技术 大作业报告 专 业: 班 级: 学 号: 学生姓名: 完成时间: 目录 说 明 --------------------3 第一章概述 ---- ...
- 上海电力学院计算机软件技术大作业,计算机网络应用设计 大作业报告.doc
计算机网络应用设计 大作业报告 上 海 电 力 学 院 课程设计(大型作业)报告 设计名称 计算机网络应用课程设计 课程代码 1305312 院 (系) 电子与信息工程学院 专 业 通信工程 班 级 ...
最新文章
- Java入门培训班怎么选择
- mysql 同步备份数据库
- Web server调研分析
- Java 内建函数式接口
- face alignment by 3000 fps系列学习总结
- 云OS:Linux在桌面打翻身仗的机会?
- TOP 10 开源的推荐系统简介
- windows 根据父进程pid查找所有子进程id(C++)
- 转:Java多线程学习(吐血超详细总结)
- vb.net使用DirectX入门知识
- html 自动阅读,自动阅读软件脚本
- PTA 基础练习答案
- usb3.0传输速度测试软件,Win10系统如何测试usb3.0设备传输速度
- codeforces1608C. Game Master题解(图论)
- 握手协议(pvld/prdy或者valid-ready或AXI)中ready打拍技巧
- java(jfinal) 接入ios苹果内购(连续包月订阅),服务端将二次验证。
- 将MindManager添加到鼠标右键新建项
- 复合赋值运算符“+=、-=、*=、/=、%=”详解
- DDoS防护方式以及产品
- 刘强东事件已过谈谈中国出生率
热门文章
- bitmap存入mysql,[MySQL] mysql中bitmap的简单运用
- python对文件操作的统一步骤_基于Python实现对各种数据文件的操作
- 终于等到你:国内***团队360Vulcan公布iOS 12.1越狱漏洞细节
- es6.2.4-ansible部署
- vscode好用的扩展及常用的快捷键
- $(document).ready(function(){}),$().ready(function(){})和$(function(){})三个有区别么
- 导入导出mysql数据库
- C#中跨工程跨项目注释的显示
- PPG信号滤波过后的时频分析
- 敏捷思维- 架构设计中的方法学(1)