实验报告

课程:程序设计与数据结构
班级: 1623
姓名: 张旭升
学号:20162329
指导教师:娄嘉鹏 王志强
实验日期:4月14日

实验密级: 非密级
预习程度: 已预习

必修/选修: 必修
实验序号: cs_29

实验名称: Java面向对象程序设计

实验要求:

  1. 没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

  2. 完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

  3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

  4. 请大家先在实验楼中的~/Code目录中用自己的学号建立一个目录,代码和UML图要放到这个目录中,截图中没有学号的会要求重做,然后跟着下面的步骤练习。

实验内容

  1. 初步掌握单元测试和TDD

  2. 理解并掌握面向对象三要素:封装、继承、多态

  3. 初步掌握UML建模

  4. 熟悉S.O.L.I.D原则

  5. 了解设计模式

实验过程

一.单元测试

1. 书写三种代码
  • 伪代码
  • 产品代码
  • 测试代码

    2.IDEA上进行驱动开发
  • 由之前已写好的自定义类通过驱动自动生成测试代码,帮助我们节省时间精力。

    二.面向对象三要素

    1. 三种要素
  • 封装
  • 继承
  • 多态

    2. 熟悉三要素的使用
  • 通过实验练习类的书写和测试来熟悉面向对象三要素。

    三.实验练习

    1. 练习代码
      public class ComplexNumber {private int i;private double a, b;static private double W, X, Y;static private String Z,z;public ComplexNumber(){}public ComplexNumber(double A, double B){this.a = A;this.b = B;     }public void Show(){System.out.println("Show a complex number: z=a+bi" );}   public static void Count(ComplexNumber C1,char C2,ComplexNumber C3){switch (C2){case '+' :X = C1.a + C3.a;Y = C1.b + C3.b;Z = "("+X+")" + "+" + "("+Y+")" + "i";break;case '-' :X = C1.a - C3.a;Y = C1.b - C3.b;Z = "("+X+")" + "+" + "("+Y+")" + "i";break;case '*' :X = C1.a * C3.a - C1.b * C3.b;Y = C1.b * C3.a + C1.a * C3.b;Z = "("+X+")" + "+" + "("+Y+")" + "i";break;case '/' :W = Math.pow(C3.a,2)+Math.pow(C3.b,2);X = (C1.a * C3.a + C1.b * C3.b)/W;Y = (C1.b * C3.a - C1.a * C3.b)/W;Z = "("+X+")" + "+" + "("+Y+")" + "i";break;default:System.out.println("The input is not a valid operator!");}}public void Length(){double m;if (b != 0){double s = (int)Math.pow(a, 2)+Math.pow(b, 2);m = Math.sqrt(s);           }elseif(a>=0)m = this.a;elsem = this.a * -1;System.out.println("This complex number length is: " + m);}public static String getCount(){return Z;}public String toString(){z = "("+a+")" + "+" + "("+b+")" + "i";return z;}}
    2. 实验练习测试

实验中遇到的问题

  • 问题:

    开始我是想先建立一个Number的接口,用来设置所有数都有的表示功能(Show)和计算(count)功能,后来在做复数的类(ComplexNumber)时发现计算是无法实现的。

  • 原因和解决办法:

    因为计算这个方法在每类数中表达方式都是不同的,所传入参数也是不同的,最终我还是把接口中的count方法去掉了,导致我的接口实际意义也变得非常小,就也被我取缔了,最终虽然是完成了但是这些都还是不足,希望在今后的学习中能改进。

实验不足

本次实验练习中还是没有太多的体现出多态,虽然我对相关的概念感觉是理解了,但是到了要做这个程序的时候发现好多想的却有些难以实现,时间紧迫也就都简化了,这些还要慢慢改进。

## 实验心得

  • 在设计代码时先写出伪代码是一个非常节省时间的办法,伪代码可以帮你理清思路,减少思想逻辑上花费的时间。

转载于:https://www.cnblogs.com/Zhangxusheng/p/6710594.html

20162329 张旭升 实验二:实验报告相关推荐

  1. 大学计算机实验二报告表答案,北理大学计算机实验基础实验二实验报告表答案...

    <北理大学计算机实验基础实验二实验报告表答案>由会员分享,可在线阅读,更多相关<北理大学计算机实验基础实验二实验报告表答案(4页珍藏版)>请在人人文库网上搜索. 1.实验二实验 ...

  2. python编程图书批发商店的某本书的零售价是26.5_根据实验指导书,完成实验2的任务一与任务三,使用 实验二(实验报告).docx 完成报告并提交。_学小易找答案...

    [简答题]从键盘输入 n(0 [简答题]完成课本P89,查询学生成绩,提交源代码 [单选题]企业本期生产产品直接耗用原材料 3000 元,生产车间管理方面耗用原材料 2000 元,正确的会计分录是( ...

  3. java上机实验实验报告_Java实验二实验报告.doc

    Java实验二实验报告 本科学生实验报告 ( 二 ) 姓名 学院 计算机科学学院 专业 计算机科学与技术 班级 实验课程名称 Java面向对象设计 试验时间 2012 年 10 月 14 日 指导教师 ...

  4. 20135333苏正生实验二实验报告

    实验报告 课程: Java程序设计 班级: 1353 姓名: 苏正生 学号: 2015333 成绩: 指导教师: 娄家鹏 实验日期: 2015.5.6 实验密级: 预习程度: 实验时间: 3:20~5 ...

  5. 大学计算机实验二报告表答案,北理大学计算机实验基础实验二实验报告表答案(1页)-原创力文档...

    实验二实验报告表 实验名称: 学号姓名:班级:实验时间: 实验报告表 2-1 数值型数据在计算机中的二进制实验记录表 十进制整数分 输入十进制整数 内存整型数据 内存地址号 类 任意正整数 7 000 ...

  6. 20202413 2021-2022-2 《网络与系统攻防技术》实验二实验报告

    20202413 2021-2022-2 <网络与系统攻防技术>实验二实验报告 文章目录 20202413 2021-2022-2 <网络与系统攻防技术>实验二实验报告 1.实 ...

  7. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第七周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第七周学习总结 教材学习内容总结 通过继承实现多态:若两个类是is-a关系,将子类对象向上转型为父类后该变量就可以实现 ...

  8. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第八周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第八周学习总结 教材学习内容总结 1.异常的产生:当程序中出现不符合计算机逻辑的情况,在编译运行时就会出现异常. 2. ...

  9. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第九周学习总结

    20162329张旭升 2016-2017-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 1.建立数据库连接:我们是通过老师给的XAMPP程序来配置自己的数据库,然后根据教程 ...

  10. ORACLE与数据库原理实验 实验二 实验数据库的建立(答案全)

    实验二 实验数据库的建立 [实验目的] [预备知识] [实验内容] [实验目的] 1. 熟悉和掌握 SQL的 Create Table, Drop Table, Alter Table语句语法: 2. ...

最新文章

  1. pandas案例分析
  2. oracle的listagg函数
  3. Uncaught SyntaxError - unexpected end of input
  4. 得到appd url_AppD方法:Java 9支持
  5. Hadoop--Yarn常用命令 与 生产环境核心配置参数
  6. 【Java 基础】枚举、包装类、Math、Radnom、UUID、格式化、DecimalFormat、高精度计算(BigDecimal)
  7. MySQL基本介绍(一)
  8. matlab 数字字母,MATLAB读取txt(包含字母和数字)
  9. 【Mybatis】Mybatis三大组件之StatementHandler
  10. 用foobar2000播放服务器文件,用Foobar2000打造网络电台
  11. Appium iOS 自动化测试总结
  12. 我的世界命令计算机,我的世界电脑版指令大全,你想要的指令都在这里
  13. android自定义秒表,Android:一个简单的秒表实现
  14. 人脸识别: 人脸数据集大全
  15. linux之U盘安装
  16. 阿翔编程学-系统安全
  17. android5.1 MT6735 编译过程
  18. PHP 关于thinkphp5.0使用Imagick
  19. CSS布局设置如何才能做到左边滑动右边不动,右边滑动左边不动
  20. 2021年最新全国30米土地利用数据(中科院二级分类)

热门文章

  1. TextureTailor自制Plist碎图工具
  2. Qt正确的拼接跨平台文件路径
  3. word中空格键编程删除键
  4. QQ个人信息模块思维导图
  5. 提高记忆计算机知识的方法有哪些,有哪些增强记忆力的好方法
  6. part time job c语言,英语面试Part-time Job篇
  7. (54) C# 调用 kernel32.dll
  8. 兆与KB 的换算公式
  9. php目录连接符号,php连接符号
  10. flask-bootstrap-table中文使用说明