实验二 Java面向对象程序设计 20175301李锦然实验报告
实验二 Java面向对象程序设计
实验内容
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
5. 了解设计模式
根据实验提交的规则,把实验为五个部分
面向对象程序设计-1
实验要求:
- 参考:> http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST
- 参考:> http://www.cnblogs.com/rocedu/p/6736847.html
- 提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。
实验步骤:
在IDEA中新建一个工程,然后建立MyUtil类还有检查用的类,下图是最初的类(改了名,问题不大)

然后导入最初的程序

然后看看检验程序结果

果然出错了,检查出错原因是因为不及格的成绩不对啊

修改及格成绩为60,然后继续检测,这次通过了
然后来检测边界情况

看输出是满分出了问题这里输出时faild6遮住了
修改程序然后再检测通过
最终程序:


补一个用junit的,虽然这个实验要求上没有
测试代码如下:
import org.junit.Test;
import junit.framework.TestCase;
public class MyUtilTest extends TestCase {
@Test
public void testNormal() {
assertEquals("不及格", MyUtil.percentage2fivegrade());
assertEquals("及格", MyUtil.percentage2fivegrade());
assertEquals("中等", MyUtil.percentage2fivegrade());
assertEquals("良好", MyUtil.percentage2fivegrade());
assertEquals("优秀", MyUtil.percentage2fivegrade());
}
@Test
public void testExceptions(){//测试出错情况
assertEquals("错误", MyUtil.percentage2fivegrade());
assertEquals("错误", MyUtil.percentage2fivegrade(-));
}
@Test
public void testBoundary(){//测试边界情况
assertEquals("不及格", MyUtil.percentage2fivegrade());
assertEquals("及格", MyUtil.percentage2fivegrade());
assertEquals("中等", MyUtil.percentage2fivegrade());
assertEquals("良好", MyUtil.percentage2fivegrade());
assertEquals("优秀", MyUtil.percentage2fivegrade());
assertEquals("优秀", MyUtil.percentage2fivegrade());
} }
代码全部通过!

面向对象程序设计-2
实验要求:
- 参考积极主动敲代码,使用JUnit学习Java >http://www.cnblogs.com/rocedu/p/4837092.html
- 参考>http://www.cnblogs.com/rocedu/p/6736847.html
- 以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。
实验步骤:
其实我并不喜欢在idea上面编程,但是思考之后确实IDEA更便于发现错误,工具更多,比如这次的junit直接在IDEA中配置就可以了

还有TDD方法第一个例子

然后就开始用JUNIT对StringBufferDemo动手啦
1 正式代码
public class StringBufferDemo{
StringBuffer str=new StringBuffer();
StringBufferDemo(StringBuffer str){
this.str=str;
}
public char charAt(int i){
return str.charAt(i);
}
public int capacity(){
return str.capacity();
}
public int length(){
return str.length();
}
public int indexOf(String buf) {
return str.indexOf(buf);
}
}
2 测试代码
import junit.framework.TestCase;
import org.junit.Test; public class StringBufferDemoTest extends TestCase {
StringBuffer a = new StringBuffer("StringBuffer");//测试12个字符(<=16)
StringBuffer b = new StringBuffer("StringBufferStringBuffer");//测试24个字符(>16&&<=34)
StringBuffer c = new StringBuffer("StringBufferStringBufferStringBuffer");//测试36个字符(>34)
@Test
public void testcharAt(){
assertEquals('S',a.charAt());
assertEquals('B',a.charAt());
assertEquals('r',a.charAt());
}
@Test
public void testcapacity(){
assertEquals(,a.capacity());
assertEquals(,b.capacity());
assertEquals(,c.capacity());
}
@Test
public void testlength(){
assertEquals(,a.length());
assertEquals(,b.length());
assertEquals(,c.length());
}
@Test
public void testindexOf(){
assertEquals(,a.indexOf("Str"));
assertEquals(,a.indexOf("Buff"));
assertEquals(,a.indexOf("er"));
}
}
3 测试结果

ALLPASS
实验二 Java面向对象程序设计-3
实验要求:
参考http://www.cnblogs.com/rocedu/p/6736847.html
对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
实验步骤:
代码:
abstract class Data {
abstract public void DisplayValue();
}
class Integer extends Data {
int value;
Integer() {
value=;
}
public void DisplayValue(){
System.out.println (value);
}
}
class Float extends Data {
float value;
Float() {
value=2.017531F;
}
public void DisplayValue(){
System.out.println (value);
}
}
// Pattern Classes
abstract class Factory {
abstract public Data CreateDataObject();
}
class IntFactory extends Factory {
public Data CreateDataObject(){
return new Integer();
}
}
class FloatFactory extends Factory {
public Data CreateDataObject(){
return new Float();
}
}
class Document { //Client classes
Data pd;
Document(Factory pf){
pd = pf.CreateDataObject();
}
public void DisplayData(){
pd.DisplayValue();
}
}
//Test class
public class MyDoc {
static Document d,f;
public static void main(String[] args) {
d = new Document(new IntFactory());
d.DisplayData();
f = new Document(new FloatFactory());
f.DisplayData();
}
}

correct
实验二 面向对象程序设计-4
实验要求:
提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印
参考http://www.cnblogs.com/rocedu/p/6736847.html
任务:以TDD的方式开发一个复数类Complex,要求如下:
// 定义属性并生成getter,setter double RealPart; double ImagePart;
// 定义构造函数 public Complex() public Complex(double R,double I)
//Override Object public boolean equals(Object obj) public String toString()
// 定义公有方法:加减乘除 Complex ComplexAdd(Complex a) Complex ComplexSub(Complex a) Complex ComplexMulti(Complex a) Complex ComplexDiv(Complex a)
实验步骤:
代码:
import java.util.Objects;
import java.lang.Integer; public class Complex {
double RealPart;
double ImagePart;
public Complex() {
} public Complex(double R,double I)
{
RealPart = R;
ImagePart = I; }
public double getterRealPart(){
return RealPart;
}
public double getterImagePart(){
return ImagePart;
} public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Complex)) {
return false;
}
Complex complex = (Complex) obj;
if(complex.RealPart != ((Complex) obj).RealPart) {
return false;
}
if(complex.ImagePart != ((Complex) obj).ImagePart) {
return false;
}
return true; }
public String toString(){
String s = "";
if(getterRealPart()==&&getterImagePart()==){
s="";
}
else if(getterRealPart()!=&&getterImagePart()==){
s=s+getterRealPart();
}
else if (getterRealPart()==&&getterImagePart()!=){
s=s+getterImagePart()+"i";
}
else
{
if(getterImagePart()<){
s = s+getterRealPart()+getterImagePart()+"i";
}
else {
s = s+getterRealPart()+"+"+getterImagePart()+"i";
} }
return s;
} Complex ComplexAdd(Complex a){
return new Complex(RealPart + a.RealPart,ImagePart + a.ImagePart);
}
Complex ComplexSub(Complex a){
return new Complex(RealPart - a.RealPart,ImagePart - a.ImagePart);
}
Complex ComplexMulti(Complex a){
return new Complex(RealPart*a.RealPart-ImagePart*a.ImagePart,RealPart*a.ImagePart + ImagePart*a.RealPart);
}
Complex ComplexDiv(Complex a) {
return new Complex((RealPart * a.ImagePart + ImagePart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart), (ImagePart * a.ImagePart + RealPart * a.RealPart) / (a.RealPart * a.RealPart + a.RealPart * a.RealPart));
}
}
测试代码
import junit.framework.TestCase;
import org.junit.Test; public class ComplexTest extends TestCase {
Complex b = new Complex(,);
Complex c = new Complex(,-);
@Test
public void testComplexAdd(){
assertEquals("5.0+2.0i",b.ComplexAdd(c)+"");
}
@Test
public void testComplexMulti(){
assertEquals("41.0-1.0i",b.ComplexMulti(c)+"");
}
@Test
public void testComplexDiv(){
assertEquals("-0.034482758620689655-3.625i",b.ComplexDiv(c)+"");
}
@Test
public void testComplexSub(){
assertEquals("1.0+12.0i",b.ComplexSub(c)+"");
} }
这个Div是因为选数不慎,但是已经修改了

全部过关
五:
实验要求:
使用[WhiteStarUML](http://whitestaruml.sourceforge.net/)对实验二中的代码进行建模,发类图的截图,加上学号水印。
参考http://www.cnblogs.com/rocedu/p/6736847.html
类图中只少两个类。
实验步骤:

实验过程中遇到的问题及其解决
1:无论如何junit没有效果总是红字显示我没有junit
后来发现是因为我在一个文件夹里面总是考了两个相同的类(一个用来@TEST)
解决方法:删除一个
2:做TDD例子的时候总是会便用找不到类??

后来发现是类名写错了,,卡了我好久想想觉得好笑
实验二 Java面向对象程序设计 20175301李锦然实验报告的更多相关文章
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 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 理解并掌握面相对象三要素:封 ...
- 20145113 实验二 Java面向对象程序设计
20145113 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 1.初 ...
- JAVA课程实验报告 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225唐振远 实验二 "Java面向对象程序设计"
20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...
- 20145208 实验二 Java面向对象程序设计
20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 20162311 实验二 Java面向对象程序设计 实验报告
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
随机推荐
- PO,VO,TO,BO,DAO,POJO的解释
java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...
- PostgreSQL For Windows 全功能精简版
预览 精简部分 保留全部 PostgreSQL 相关功能 删除自带的 pgadmin 4 删除文档 删除开发用头文件 删除开发用静态连接库 删除 Stack Build 工具 写了一个管理数据库用的批 ...
- vtop工具使用分析
vtop工具可以为esxtop提供图形界面,并且可以显示实时统计数据,对于我们监控esxi主机的需求匹配度很高,同时,相对于vcenter中的数据统计选项实时性更高,操作简便,可作为工作使用 为便于我 ...
- 应用wavesurfer.js绘制音频波形图小白极速上手总结
一.简介 1.1 引 人生中第一份工作公司有语音识别业务,需要做一个web网页来整合语音引擎的标注结果和错误率等参数,并提供人工比对的语音标注功能(功能类似于TranscriberAG等),(博 ...
- Why Ambari is setting the security protocol of the kafka to PLAINTEXTSASL instead of SASL_PLAINTEXT?
首页 / Data Ingestion & Streaming / Why Ambari is setting the security protocol of the kafka to PL ...
- 解决consul覆盖注册
默认注册consul的服务id为服务名-端口号,相同的服务名和端口号注册会覆盖 解决方式: 1.自定义Consul注册Id import com.ecwid.consul.v1.ConsulClien ...
- VS与Windbg调试
原文 : https://blog.csdn.net/fin86889003/article/details/20126593 原文 : https://blog.csdn.net/u014339 ...
- from语法导入
"""# 在执行文件中能不能直接使用模块中的名字 # import m1# import m1 as m# print(m1.a)# print(m1.b)# print ...
- RequestMapper
@RequestMapping(value = "/v1/getAllUrl", method = RequestMethod.POST) public Object getAll ...
- 逆向工程核心原理-IA-32寄存器
IA-32由四类寄存器组成:通用寄存器,段寄存器,程序状态与控制寄存器,指令指针寄存器. 通用寄存器:用于传送和暂存数据,也可参与算数逻辑运算,并保存运算结果. EAX(0-31) 32位 ...