2017-2018-2 20165228 实验二《Java面向对象程序设计》实验报告
2017-2018-2 20165228 实验二《Java面向对象程序设计》实验报告
相关知识点
三种代码
- 伪代码:注释,与具体编程语言无关
- 产品代码:由伪代码翻译而来的具体编程语言语法相关的语句
- 测试代码:以测试用例来测试产品代码中是否存在bug
测试驱动开发(TDD)
TDD的一般步骤如下: - 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
- 测试代码编译不通过(没产品代码呢)
- 编写产品代码
- 测试通过
- 对代码进行重构,并保证测试通过(重构下次实验练习)
- 循环完成所有功能的开发
TDD的编码节奏是: - 增加测试代码,JUnit出现红条
- 修改产品代码
- JUnit出现绿条,任务完成
S.O.L.I.D类设计原则: - SRP(Single Responsibility Principle,单一职责原则)
- OCP(Open-Closed Principle,开放-封闭原则)
- LSP(Liskov Substitusion Principle,Liskov替换原则)
- ISP(Interface Segregation Principle,接口分离原则)
- DIP(Dependency Inversion Principle,依赖倒置原则)
实验内容
(一)面向对象程序设计-1
检查点要求:
- 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习
- 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
- 本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试
例子说明:我们要在一个MyUtil类中解决一个百分制成绩转成“优、良、中、及格、不及格”五级制成绩的功能。
码云链接:
相关截图:
(二)面向对象程序设计-2
检查点要求:
- 参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)
以 TDD的方式研究学习StringBuffer - 提交你的单元测试用例和测试通过的截图,截图要加上学号水印
- 测试自己会不会写JUnit测试用例
码云链接:
相关截图:
(三)面向对象程序设计-3
检查点要求:
- 参考实验二 Java面向对象程序设计对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
- 用自己的学号%6进行取余运算,根据结果进行代码扩充:
0:让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
1:让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
2:让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
3:让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
4:让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
5:让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
码云链接:
相关截图:
(四)面向对象程序设计-4
检查点要求:
- 提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印
- 任务:以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)
码云链接:
相关截图:
(五)面向对象程序设计-5
检查点要求:
- 用StarUML对实验二中的代码进行建模,发类图的截图,加上学号水印
- 类图中只少两个类
- 类,继承,接口实现,组合在UML中表达
相关截图:
实验中遇到的问题
- 问题1:在第四个提交点用测试用例来调试bug时,出现了下图中的问题:
当时计算的是11/25,结果应该为0.44,然而计算的结果为0.43999999999999995,这让我很困惑 - 解决方法:经过认真思考和相关问题查找后,也未能解决此问题。使用其他测试用例调试都通过
- 问题2:在第二个提交点写的程序中,我发现
buffer.append('S'); //调用方法append,缓存char型
buffer.append("tringBuffer"); //调用方法append,缓存String型
和
buffer.append("StringBuffer")
打印效果一样,区别是什么?
- 解决方法:通过多次尝试,前者存储的两个数据存在于不同的两个地址内存,只是显示时拼接在一起
2017-2018-2 20165228 实验二《Java面向对象程序设计》实验报告的更多相关文章
- 实验二Java面向对象程序设计实验报告(2)
实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...
- 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 理解并掌握面相对象三要素:封 ...
- 20162311 实验二 Java面向对象程序设计 实验报告
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 实验二 Java面向对象程序设计实验报告
实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...
- 20145326《Java程序设计》实验二Java面向对象程序设计实验报告
20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20155217 实验二 Java面向对象程序设计 实验报告
20155217 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模 ...
- 20145219 《Java程序设计》实验二 Java面向对象程序设计实验报告
20145219 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...
- 20162305 实验二 Java面向对象程序设计 实验报告
20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...
随机推荐
- python使用SQLAlchemy模块连接MySQL
ORM技术:Object-Relational Mapping,负责把关系数据库的表结构映射到对象上. 1.安装SQLAlchemy,MySQLdb模块 MySQLdb安装教程:http://www. ...
- 【Java】XML
一.XML XML(Extensible Markup Language),可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言. 格式: <?xml version="1. ...
- 一、集合框架(HashMap和Hashtable的区别)
一.HashMap和Hashtable 都实现了Map接口,都是以key-value形式保存数据. 区别一: HashMap可以存放null Hashtable不能存放null 区别二: HashMa ...
- Liunx下安装jdk7
一. 查询系统中是否有安装过jdk: # rpm -qa | grep java 查询到有安装,使用命令卸载: # rpm -e --nodeps java-1.6.0-openjdk-1.6.0 ...
- rexec/rlogin/rsh介绍
服务 是否需要密码 是否明文 功能 端口 rexec 是 是 远程执行命令 512 rlogin 是 是 远程登录得到shell 513 rsh 是 是 可远程执行命令,也可远程登录得到shell 5 ...
- 正则表达式test()和exec()、 search() 和 replace()用法实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 研究Duilib的实现结构
第一步:调用RegisterClassEx(): 第二步:调用CreateWindowEx() 第三步:调用ShowWindow(),同时启动消息循环 说明: 1.RegisterClass,Regi ...
- laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据
public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...
- ROM和RAM区别
在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作.存储器的种类很多,按其用途分为主存储器和辅助存储器, ...
- Jquery源码探索
封装原理 这里参考的jquery来进行封装的一个常用方法的一个库,可作为自己的一个库 原理:创建一个构造函数,将所有方法放在该构造函数原型里,访问$()方法时,返回这个构造函数的实例化,这样就简单的实 ...