java第二次上机实验程序_JAVA第二次试验

本文是一篇关于Java面向对象程序设计的实验报告,涵盖了单元测试、TDD、面向对象三要素(封装、继承、多态)、SOLID原则以及设计模式的初步介绍。通过实现复数类的加减法操作,阐述了测试驱动开发的过程,并强调了单元测试在项目管理和设计优化中的重要作用。
摘要由CSDN通过智能技术生成

课程:Java实验   班级:201353     姓名:武西垚  学号:2015332

成绩:           指导教师:娄佳鹏     实验日期:15.05.05

实验密级:         预习程度:       实验时间:

仪器组次:         必修/选修:选修    实验序号:2

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

实验目的与要求:

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

实验要求

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

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

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

实验仪器:

名称

型号

数量

PC

1

实验内容、步骤与体会(附纸):

(一)单元测试

(1) 三种代码

编程是智力活动,不是打字,编程前要把干什么、如何干想清楚才能把程序写对、写好。与目前不少同学一说编程就打开编辑器写代码不同,我希望同学们养成一个习惯,当你们想用程序解决问题时,要会写三种码:

伪代码

产品代码

测试代码

e704a2ec004194ec91107f1cdf5f546d.png

(2) TDD(Test Driven Devlopment, 测试驱动开发)

(二)面向对象三要素

422d8f6cb4d00a39355803daecd01f9a.png

7f7f6a4f286fb37faaf555adfa504eab.png

+表示public

#表示 protected

-表示 private

4a1075c43c87f169dac024416f4f9417.png

(三)设计模式初步

(1)S.O.L.I.D原则

面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,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,依赖倒置原则)

(2)模式与设计模式

模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用,每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。 计算机科学中有很多模式:

GRASP模式

分析模式

软件体系结构模式

设计模式:创建型,结构型,行为型

管理模式: The Manager Pool 实现模式

界面设计交互模式

这里面最重要的是设计模式,在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。

(3)设计模式实示例

设计模式(design pattern)提供一个用于细化软件系统的子系统或组件,或它们之间的关系图,它描述通信组件的公共再现结构,通信组件可以解决特定语境中的一个设计问题。

(四)练习

使用TDD的方式设计关实现复数类Complex。

伪代码:

无输入 --- 则复数的实部为0,虚部为0

仅输入实部 --- 复数的实部为所输入的实部,虚部为0

仅输入虚部 --- 复数的实部为0,虚部为所输入的虚部

实部虚部都输入 --- 复数的实部与虚部对应相应输入的实部虚部。

加法 --- 复数的实部与实部相加,虚部与虚部相加 ,即输出p1.rePart+p2.rePart,p1.imPart+p2.imPart

减法 --- 复数的实部与实部相减,虚部与虚部相减 , 即输出 p1.rePart-p2.rePart,p1.imPart-p2.imPart

产品代码:

package Exercise;

public class Complex {  double rePart,imPart;  Complex()  {  this.rePart=0;  this.imPart=0;  }  Complex(double rePart)  {  this.rePart=rePart;  this.imPart=0;  }  Complex(double rePart,double imPart)  {  this.rePart=rePart;  this.imPart=imPart;  }  Complex Jia(Complex p1,Complex p2)  {  Complex p =new Complex(p1.rePart+p2.rePart,p1.imPart+p2.imPart); return p;  }  Complex Jian(Complex p1,Complex p2)  {  Complex p =new Complex(p1.rePart-p2.rePart,p1.imPart-p2.imPart); return p; }  void Print()  {  System.out.println("复数的值为:"); if(this.imPart!=0) System.out.println(this.rePart+"+"+this.imPart+"i");  else System.out.println(this.rePart);  }  }

测试代码:

package Exercise;

public class Test  {  public static void main(String[] args)  {  Complex c=new Complex();  Complex c1=new Complex(2,7); Complex c2=new Complex(5,2);  c1.Print();  c2.Print();  System.out.println("这两复数和为:");  System.out.println((c.Jia(c1, c2).rePart+"+"+c.Jia(c1, c2).imPart+"i").toString());  System.out.println("这两复数差为:");  System.out.println(c.Jian(c1, c2).rePart+"+"+c.Jian(c1, c2).imPart+"i"); }  }

步骤

耗时

百分比

需求分析

5

6.25%

设计

10

12.5%

代码实现

50

62.5%

测试

10

12.5%

分析总结

5

6.25%

总结单元测试的好处:

1.单元测试能保证项目进度还能优化你的设计。

2.单元测试代码可以通过简单的事务回滚功能在生产环境上做基于真实数据的测试而不用担心会产生不必要的数据。

3. 单元测试能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。

遇到的问题:无

解决方法:

实验总结:

本次实验代码较多,难度较大,花费了大量的时间,期间出现了各种大大小小的错误,但这也是对我的一次锻炼,将对我未来的学习产生很大的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值