20165115 实验二 面向对象程序设计

这一次的实验,老师按照实验内容的不同将实验分成了五个部分进行。五个部分的侧重难易都有区别,实验报告中的叙述也会有所区别。

第一部分

先上实验结果截图:

这一部分的实验内容没有什么创造性的内容,机械单纯的重复一下博客中给出的代码就可以得到相应的实验结果。另一方面,这一部分的内容主要目的还是掌握基础的Junit的用法。相对来讲没有什么难度,不做赘述。

第二部分

依旧先是截图:

到了这一部分就是juint实战操作了。需要对junit的使用方法有清晰的认识才能够完成junit部分的代码撰写。但是相对来讲并不难,掌握了基本原理之后写起来还是很快的。在给出的博客的指导下也并没有遇到什么问题。

第三部分

截图:

这一部分开始真正的写一些新的代码了。这一部分的内容我有一个最大的疑惑就是,让已有的程序支持Java语言中已有的系统类,如Long、Float类等等,是在程序中直接对这些类进行继承修改等操作,这在C语言当中是不能想象的。最开始出现了问题时我还一度怀疑是不是老师给出的示例出现了问题(后来发现时敲错了一个单词....)但是这也体现了Java代码相对自由度较高的特点。

这一部分的代码内容虽然理解并不是非常深入,但是依照之前的经验和博客中给出的样例还是可以完成基本要求的。现在我对这一部分的代码还是有一些概念上的不理解,希望可以在课上听到老师的讲解。

第四部分

这一部分几乎可以说是这一次实验最复杂的部分。与之前各部分的难度完全不在一个次元。既然是完全写代码的部分,测试通过的截图就不那么重要了,下面是两个部分的代码:

public class MyComplex {

double a, b;

MyComplex(double m, double n) {//构造函数设置实部虚部

a = m;

b = n;

}

public double getRealPart() {//返回实部

return a;

}

public double getImagePart() {//返回虚部

return b;

}

public MyComplex ComplexAdd(MyComplex y) {//加法

double m = y.getRealPart();

double n = y.getImagePart();

double x = a + m;

double z = b + n;

return new MyComplex(x, z);

}

public MyComplex ComplexSub(MyComplex y) {

double m = y.getRealPart();

double n = y.getImagePart();

double x = a - m;

double z = b - n;

return new MyComplex(x, z);

}

public MyComplex ComplexMulti(MyComplex y) {

double m = y.getRealPart();

double n = y.getImagePart();

double x = a * m;

double z = b * n;

return new MyComplex(x, z);

}

public MyComplex ComplexDiv(MyComplex y) {

double m = y.getRealPart();

double n = y.getImagePart();

double x = a / m;

double z = b / n;

return new MyComplex(x, z);

}

@Override

public java.lang.String toString() {

String s = "";

if (a != 0 && b > 0 && b != 1) {

s += a + "+" + b + "i";

}

else if (a != 0 && b == 1) {

s += a + "+i";

}

else if (a != 0 && b < 0 && b != -1) {

s += a + "" + b + "i";

}

else if (a != 0 && b == -1) {

s += a + "-i";

}

else if (a != 0 && b == 0) {

s += a;

}

else if (a == 0 && b != 0) {

s += b + "i";

}

else if (a == 0 && b == 0) {

s += "0.0";

}

return s;

}

}

以上是计算器的代码;

import junit.framework.TestCase;

import org.junit.Test;

public class MyComplexTest extends TestCase {

MyComplex a=new MyComplex(0,0);

MyComplex b=new MyComplex(1,1);

MyComplex c=new MyComplex(-1,-1);

MyComplex d=new MyComplex(20.16,53.10);

MyComplex e=new MyComplex(2,3);

@Test

public void testgetReal(){

assertEquals(0.0,a.getRealPart());

assertEquals(-1.0,c.getRealPart());

assertEquals(20.16,d.getRealPart());

}

@Test

public void testgetIma(){

assertEquals(0.0,a.getImagePart());

assertEquals(-1.0,c.getImagePart());

assertEquals(53.1,d.getImagePart());

}

@Test

public void testComAdd(){

assertEquals("0.0",b.ComplexAdd(c).toString());

assertEquals("1.0+i",a.ComplexAdd(b).toString());

assertEquals("19.16+52.1i",c.ComplexAdd(d).toString());

assertEquals("-1.0-i",a.ComplexAdd(c).toString());

assertEquals("21.16+54.1i",b.ComplexAdd(d).toString());

}

@Test

public void testComSub(){

assertEquals("1.0+i",b.ComplexSub(a).toString());

assertEquals("-21.16-54.1i",c.ComplexSub(d).toString());

assertEquals("2.0+2.0i",b.ComplexSub(c).toString());

}

@Test

public void testComMul(){

assertEquals("0.0",a.ComplexMulti(d).toString());

assertEquals("-1.0-i",b.ComplexMulti(c).toString());

assertEquals("-20.16-53.1i",c.ComplexMulti(d).toString());

assertEquals("40.32+159.3i",d.ComplexMulti(e).toString());

}

@Test

public void testComDiv(){

assertEquals("0.0",a.ComplexDiv(b).toString());

assertEquals("-1.0-i",c.ComplexDiv(b).toString());

assertEquals("-0.5-0.3333333333333333i",c.ComplexDiv(e).toString());

assertEquals("10.08+17.7i",d.ComplexDiv(e).toString());

}

}

以上是测试部分的代码。

测试通过的截图。

第五部分

这一部分来的确实突然==不过好在只涉及到了一个新的软件的学习。基本的操作在界面中就能摸索出来,实在遇到不会的地方百度也可以找到很多教程。不做赘述

截图如下:

java面向对象程序基础实验_20165115 实验二《Java面向对象程序设计》实验报告相关推荐

  1. shadowplay要下载java_Java并发程序设计(二)Java并行程序基础

    Java并行程序基础 一.线程的生命周期 其中blocked和waiting的区别: 作者:赵老师 链接:https://www.zhihu.com/question/27654579/answer/ ...

  2. Java并发程序设计(二)Java并行程序基础

    Java并行程序基础 一.线程的生命周期 其中blocked和waiting的区别: 作者:赵老师 链接:https://www.zhihu.com/question/27654579/answer/ ...

  3. (二)Java并行程序基础

    Java并行程序基础 2.1 线程和进程 2.2 初始线程 2.2.1 新建线程 2.2.2 线程中断 2.2.3 等待(wait)和通知(notify) 2.2.4 挂起(suspend)和继续执行 ...

  4. Linux编译和下载嵌入式实验,嵌入式实验6交叉编译及Linux简单程序设计实验

    <嵌入式实验6交叉编译及Linux简单程序设计实验>由会员分享,可在线阅读,更多相关<嵌入式实验6交叉编译及Linux简单程序设计实验(7页珍藏版)>请在人人文库网上搜索. 1 ...

  5. 交叉编译及linux简单程序设计,嵌入式实验6交叉编译及Linux简单程序设计实验

    实验六交叉编译及Linux简单程序设计实验的实验报告 一实验目的 1.了解和掌握交叉编译模式和方法: 2.熟悉和掌握Linux简单程序设计. 二实验环境 预装Fedora10_A8_Linux的pc机 ...

  6. c语言实验内容.doc答案,C语言程序设计实验内容与答案.doc

    C语言程序设计实验内容与答案 C语言程序设计实验内容与答案 第1周实验内容 本次实验内容为熟悉VC++6.0环境,编写第一个c程序:已知两边求矩形的面积 #include int main() { f ...

  7. Java面向对象程序基础设计之第三章

    3.1.1 自定义包 如果在程序中没有声明包,类将被存放在default的包中,该方式不被提倡. 语法: package 包名 包命名规范: 包的命名规范应当体现出项目资源良好的划分 自定义标签类所在 ...

  8. c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...

    C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...

  9. 设计java application程序_下面哪些步骤是Java Application程序的建立及运行的步骤( )...

    [判断题]运用定量模型进行优化控制是提高管理科学性的要求. [多选题]下列有关数组的声明中,正确的是( ) [填空题]是一种特殊的方法,它是在对象被创建时初始化对象的成员的方法. [判断题]数量化.模 ...

  10. 零基础是学java还是python-零基础自学编程,学Java难还是Python难?

    我第一个语言学的是vb,当时高二,感觉很好玩,就学了. 第二个... 是C++,学之前完全不知道书店里的书<C语言><C++><visual C++>的区别. 后来 ...

最新文章

  1. DataX 安装和使用
  2. Kettle提高表输出写入速度(每秒万条记录)
  3. SQL注入到EXP编写
  4. Netty之自定义编码器MessageToMessageEncoder类
  5. LUN/PV/VG/LV
  6. marquee标签、插入百度地图
  7. pythoninterp error_从Python Interp运行时获取“importterror:尝试使用未知父包进行相对导入”...
  8. 基于树莓派的专用摄像头实时监控
  9. JavaWeb:重定向(redirect)和转发(forward)的区别
  10. 服务器向客户端发送数据自动中断
  11. ArcGIS实验教程:ArcGIS 10.2手把手图文安装教程(经典版)
  12. 浅谈软件工程学习心得
  13. ABYSS genome assemble 详细用法
  14. win7忘记密码不用工具进入
  15. Ti-Click:通过浏览器快速搭建 TiDB 在线实验室 | Ti-可立刻团队访谈
  16. 若依Vue分离版本 RuoYi-Vue管理系统部署
  17. 使用SQL语句创建并管理数据表
  18. CSV文件及用Excel正确的打开方式
  19. java程序调用百度Geocoding API逆地址解析通过经纬度查询位置
  20. 进对的“门”,找对的人 酒店职业发展社交平台门墩儿正式上线

热门文章

  1. 解决mac下adb devices报错failed to check server version
  2. 小一教你轻松爬取全国40城5000+地铁站点数据!附源码和数据集
  3. 浅析 智慧城市“数字孪生”IOC应用
  4. 蓝桥杯2018年省赛真题超详解
  5. 西安交大团队开发了一种混合深度学习模型,用于在基因组中识别启动子
  6. Linux 修改 .bashrc
  7. Thematica: 炫彩主题与黑暗奇观的Vue3之旅
  8. 爬取6271家死亡公司数据,看十年创业公司消亡史
  9. Ubuntu Touch OTA-16(Linux手机测试更新)Arduino+ROS+Python+C++等
  10. MySQL笔记(二)SQL经典实例(上)