java程序面向对象show,20165309 实验二 Java面向对象程序设计

2017-2018-2 20165309实验二《Java面向对象程序设计》实验报告

一、实验内容

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

二、实验步骤

(一)单元测试

1.三种代码:伪代码、测试代码、产品代码

需求:在一个MyUtil类中解决一个百分制成绩转成“优、良、中、及格、不及格”五级制成绩的功能。

先用自然语言写出从意图层面来解决问题的伪代码:

百分制转五分制:

如果成绩小于60,转成“不及格”

如果成绩在60与70之间,转成“及格”

如果成绩在70与80之间,转成“中等”

如果成绩在80与90之间,转成“良好”

如果成绩在90与100之间,转成“优秀”

其他,转成“错误”

然后用Java语言将伪代码“翻译”成产品代码MyUtil.java。

写测试代码MyUtilTest.java来检验产品代码:

JUnit测试用例:

正常情况

错误情况(负数,超过100的数)

边界情况(0,60,70,80,90,100)

在项目上右键选择New->Directory建目录test,右键单击test目录,在弹出的菜单中选择Mark Directory as->Test Sources Root来设置SOURCEPATH环境变量。

测试通过的截图如下:

2a3e027938f0253665248d9efa8995dd.png

完善产品代码。

测试代码和最终的产品代码在代码链接里。

2.测试驱动开发TDD(测试代码->产品代码)

在新目录下创建StringBufferDemo类, 鼠标单击类名旁出现的灯泡状图标,在弹出的菜单中Create Test。

测试StringBufferDemo类的方法charAt()、capacity()、indexOf()、length():

char charAt(int index)返回此序列中指定索引处的 char 值。

int capacity()返回当前容量。

int indexOf(String str)返回第一次出现的指定子字符串在该字符串中的索引。

int length()返回长度(字符数)。

测试结果如下:

d24a2c69ba6a554a8785bd1913e26fe3.png

(二)对设计模式示例进行扩充,让其支持Long类

如果要求支持Long类,Document类要修改构造方法,这违反了OCP原则。封装、继承、多态解决不了问题,这时就需要设计模式了:

class Long extends Data

class LongFactory extends Factory

在MyDoc类中添加测试代码: public class MyDoc {

static Document d;

public static void main(String[] args) {

d = new Document(new LongFactory());

d.DisplayData();

}

}

运行结果如下:

b5818b7eccca7be00208ee9aebe499f3.png

代码在码云链接里。

(三)以TDD的方式开发一个复数类Complex

伪代码: Complex类要输出实部、虚部,并按照a+bi的形式输出复数。

Complex类中有两个变量,实部A和虚部B。

方法:

getA(int a);返回实部

getB(int b);返回虚部

ComplexAdd(Complex c);实现复数相加

ComplexMinus(Complex c);实现复数相减

ComplexMulti(Complex c);实现复数相乘

ComplexDiv(Complex c);实现复数相除

toString(int a,int b);将复数输出成a+bi的格式。

测试结果:

5f30162638632305a1c0a51ee9f57d90.png

产品代码和测试代码在码云链接。

(四)面向对象三要素

抽象

封装、继承与多态

使用UML对实验二中代码进行建模

代码: public abstract class Animal {

private String color;

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public abstract String shout();

}

public class Cat extends Animal {

public String shout() {

return "喵喵";

}

public String toString() {

return "The Cat's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";

}

}

public class Dog extends Animal

{

public String shout() {

return "汪汪";

}

public String toString() {

return "The Dog's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";

}

}

UML图(由网页ProcessOn制作)

b5cf80a2764d6de4c83fc2693aac6a28.png

三、实验中遇到的问题及解决

问题1:当时安装IDEA的时候选择的都是默认路径,而且也不算是经常用,所以没有找到Junit jar 包。

解决1:右键桌面上的IntelliJ IDEA Ultimate,点进属性里面,复制地址再粘到“+”就方便找到了~

94e545a6b0d3751000f1d2fab808168e.png

问题2:对StringBuffer的了解不够。

解决2:可以参考学习这个网址:www.runoob.com/java/java-stringbuffer.html。

解决3:long型的范围是-2147483648~2147483647

问题4:在设计实现复数类时不知道怎么去拼接字符串。

解决4:尝试concat()方法后仍存在问题,突然又意识到可以直接+....

四、实验收获

这次的实验让我学会了如何去写测试代码,也让我规范了编写代码的习惯。跟着老师的博客教程和蓝墨云上的要求去做的同时,我也意识到了自己对一些基础方面的知识还不够熟悉...得认真看书才是。

步骤

耗时

百分比

需求分析

15min

12.5

设计

20min

16.7

代码实现

40min

33.3

测试

25min

20.8

分析总结

20min

16.7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jade软件_TEM衍射斑点标定之DM软件

虽然透射电子显微镜(TEM) 能在纳米尺度上实现对待测样品形貌、 尺寸的分析; 结合选区电子衍射(SAED),可以更进一步实现对待测样品的晶体结构、 晶相组成的鉴定,从而提高样品分析的准确度和可靠性。可是,每个刚接触TEM的小白&#…

dorado 7 怎么样_一点点奶茶怎么样?消费者眼中的网红奶茶

最近在朋友圈, -款奶茶火速蹿红,不错,那正是近期疯传的网红奶茶一点点奶茶。一点点奶茶是-款主打台湾正宗波霸奶茶的茶饮品牌,而这样的奶茶在现在的市场中就表现的十分有潜力, 尤其受年轻群体的喜欢!一点点奶茶怎么样?它的崛起是无可厚非的,它那美丽的外形,别具-格的属性&…

gatewayproperties 是空_杨丞琳演唱会踩空,从二楼高台掉到一楼,手脚擦伤,引发网友热议...

11月6日,据台湾媒体报道,杨丞琳今晚在台北举办连续三天的演唱会,她开场在两层楼高的高台上唱歌,结束后意外从高台踩空掉到一楼,从二楼高台掉到一楼,手脚擦伤。引发网友们的热议。当时幸好身边有工作人员抱住…

easyx 备忘录_报到?上课?我被自己的备忘录骗到了

2020年6月的某一天小莔被一股神秘力量支配打开了手机里的备忘录突然发现了自己曾经记录下的一则消息小莔现在看到真的是回忆满满从一月到现在我们经历了许多变数看到了世间的温暖感受到了爱与希望其中遇到的一些感动我们可能会忘记就像我们成长的过程中也会经历很多要做许多事情…

基于matlab的ldpc编码的构造,基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)...

基于LDPC编码的GMSK调制与解调及matlab仿真实现(含录像)(开题报告,论文10700字,程序代码,录像)摘 要随着无线通信技术的不断发展与进步,数字电视广播、移动视频点播等对数据吞吐量要求很高的业务逐渐变得可能。为了在有限的带宽内用有限的发射功率保证信息在空间传播…

linux查看内存_嵌入式操作系统的内存,你了解多少?

关注、星标公众号,不错过精彩内容来源:EDN电子技术设计linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍 linux 内存组织结构和页面布局,内存碎片产生…

结构体内部申请空间_墙体的重要承重结构以及作用方向分类

内容提要:墙体是房屋的重要承重结构,墙体也是建筑物的主夏围护结构。其造价、工程量和自重往往是建筑物所有构件中所占份額最大的,因此在建筑设计中,合理地选择墙体的材料、结构方案、构造做法十分重要。墙体在建筑物中所处的不同…

fastcopy比正常复制快多少_高中三年,每个阶段考多少分才正常?快对比一下

原标题:高中三年,每个阶段考多少分才正常?快对比一下高一阶段众所周知,在高一阶段并没有文理科之分,除去英语、语文、数学,还有政、史、地、理、化、生六门课程。语数外各占150分,另外6门各占10…

java 调用tomcat api,调用servlet接口流程

使用Servlet接口的整体流程目前对JavaWeb的理解是:用一次提交过程来表示,当点击一个提交的标签。会将url传到tomcat服务器,在tomcat的配置文件中找到管理javaweb项目的配置文件server.xml,在server.xml中配置管理web项目的路径。从…

pve万兆网卡驱动_无线环境下打游戏,还能不能更稳?附各类AX网卡换装思路

无线环境下打游戏,还能不能更稳?附各类AX网卡换装思路 1.写在前面 去年这个时候我还是建议大家持观望状态,然后从今年上半年开始新发布的手机就已经把Wi-Fi 6作为标配了。第三季度开始新发的笔记本和主板也已经全面转向标配ax网卡&#x…

php缩放库,php的缩放图像类使用

标题: php的缩放图像类使用作者:李英江日期: 2006-11-25 14:54:05转载请保留作者内容: http://www.cgsir.com使用缩略图有个好处就是可以减少用户下载的时间,为此要在上传图片时生成一张比原图小的图片,一般的PHP空间都…

网页设计工资一般多少_理发师工资一般多少钱一个月

现在社会物价上涨,就连理发的价格也上涨了,但是虽然价格上涨了,质量却未必保证了。理发师在现在生活中可是少不了的,尤其是对女性朋友来说,发型设计可是至关重要的,因此虽然理发的价格上涨,但是…

五笔字型键盘字根图_手机输入法的派别之争:九宫格和全键盘,哪个更科学?...

本 文 约 3376 字阅 读 需 要10 min有人的地方,就有江湖。而在手机输入法的江湖里,也分为两个派别。一个是九宫格输入法,另一个则是全键盘输入法。该问题的敏感程度,完全不亚于“咸甜豆腐脑”之争。…

java多线程编程_《java多线程编程实战指南》读书笔记 -- 基本概念

展开并发:多个线程操作相同资源,保证线程安全,合理使用资源高并发:服务能同时处理多个请求,提高程序性能测试上下文切换工具Lmbench3 测量上下文切换时长vmstat 测量上下文切换次数减少上下文切换无锁并发编程&#xf…

vue企业网站模板_模板网站VS定制网站,企业如何选择?

步入互联网时代,企业需要建设属于自己的网站,网站建设到底是选择模板网站,还是定制网站呢?笔者接下来跟大家详细分析一下。网站建设的类型一、网站建设的类型模板网站模板型网站是用已经成形的网站为框架进行套用,根据…

这张磁盘有写保护_架构师不得不了解的硬件知识 - 磁盘阵列RAID

概述什么是RAID? RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储…

金蝶二次开发好跳槽吗_金蝶财务软件不会操作怎么办?

还在为不会操作金蝶软件而头疼吗?今天,小编和大家分享一些金蝶软件实操技巧,让大家更快速的完成工作!接下来,跟着小编一起来学习吧~1、新增凭证快捷键2、修改、删除凭证3、凭证审核说明:4、凭证过账说明&a…

可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...

关注“留学壹周刊”,回复专业名称,如“金融”,可以自由查询相关资料介绍本篇微信主要包括如下内容:1、2020Fall英国工业工程与运筹学专业授课类硕士(共26个项目)2、2020Fall英国工业工程与运筹学专业研究类PHD(共14个项目)3、2020…

怎么把此电脑放到桌面_Win10我的电脑怎么放到桌面

1/5点击右键选择“个性化”2/5进入后,点击“主题”3/5在主题页面的右侧点击“桌面图标设置”4/5最后勾选“计算机”5/5再点击“确定”即可

vmware虚拟机安装win7_图文分享虚拟机怎么安装win7系统

最近有朋友问有什么方法可以在不重装系统的情况下体验到其他的操作系统。那就是使用虚拟机吧,下面就以win7为例给大家分享一下在虚拟机安装WIN7的步骤。1,打开运行虚拟机,然后点击界面左上方的“文件”按钮,菜单栏选择“新建虚拟机…