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

课程:Java程序设计实验   班级:1352             姓名: 于佳心           学号:20135206

成绩:               指导教师:娄嘉鹏                   实验日期及时间:2015.05.05

座位号:             必修/选修:选修               实验序号:02

实验名称:Java开发环境的熟悉

实验设备:

实验仪器:

名称

型号

数量

计算机

 

1

实验楼

 

1

实验内容:

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

 

步骤

耗时

百分比

需求分析

20min 

10% 

设计

 50min

25% 

代码实现

50min 

25% 

测试

30min 

10% 

分析总结

50min 

                             40%

 

实验步骤:

(一)单元测试

(1)三种代码

伪代码:伪代码与具体编程语言无关,不要写与具体编程语言语法相关的语句

产品代码:将伪代码用特定编程语言翻译

测试代码:证明自己的代码没有问题

 

伪代码和产品代码

技术分享

简单测试

技术分享

比较完整的测试

技术分享

对于错误输入的测试,发现问题!

技术分享

解决问题

技术分享

对于边缘数的测试,发现问题!

技术分享

解决问题,得到完好的程序

技术分享

(2)TDD

TDD的一般步骤如下:

  • 明确当前要完成的功能,记录成一个测试列表
  • 快速完成编写针对此功能的测试用例
  • 测试代码编译不通过(没产品代码呢)
  • 编写产品代码
  • 测试通过
  • 对代码进行重构,并保证测试通过(重构下次实验练习)
  • 循环完成所有功能的开发

创建Source Folder

技术分享

创建JUnit Test Case

技术分享

技术分享

输入测试代码,有错误(因为还没有产品代码呢)

技术分享

测试条是红的,失败

技术分享

写出完整的代码,测试条是绿的,测试通过

技术分享

在不同方面进行测试,均通过

技术分享

 

(二)面向对象三元素

(1)抽象

(2)封装、继承和多态(三元素)

 

Animal类(最终程序)

技术分享

Dog类(最终程序)

技术分享

Cat类(最终程序)

技术分享

测试类(最终程序)

技术分享

 

 

 

实验介绍了Umbrello使用方法:

建立一个名为Dog的小方框(类)

 

技术分享

在Display中删去Public Only

技术分享

创建私有的功能

技术分享

 

创建公有功能技术分享

最终完整版,与上面的程序对应,带三角的直线直线父类,表示继承

技术分享

 

(三)设计模式初步

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,依赖倒置原则)

模式可以看作对一个问题可复用的专家级解决方法

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

 

(四)使用TDD的方式设计并实现复数类Complex

伪代码:

技术分享

 

产品代码:

技术分享技术分享技术分享

 

测试代码:

技术分享

测试结果:通过计算,测试通过(想不到更好的测试方法了)

技术分享

单元测试的好处:

1、经过单元测试的代码,质量能够得到保证
2、单元测试发现的问题很容易定位。
3、修改代码犯的错,经过单元测试易发现
4、单元测试可以在早期就发现性能问题

 

本次实验中遇到的问题:

1.经常一不小心使用中文字符,导致编译失败

2.猫和狗的那个程序,刚开始怎么都编译不成功,后来想到把Cat类和Dog类作为单独的文件,编译成功

3.复数的定义,涉及到int和double的问题,刚开始定义的乱七八糟,后来经过反复纠错,统一用int,并将除法的值也int化,重要解决

4.还是不太习惯虚拟机,好多按键都找不到,所以除了umbrello之外都是在windows里完成(虚拟机比以前好用了,可以动了,但因为网速问题,还是不流畅)

 

实验收获:

这次实验的难度明显比上次加大,花费时间也长了好多,好在实验指导里的步骤很详细,还介绍了好多知识,前两个实验论代码都是简单的内容,但涉及了TDD,掌握了新的编程技能,umbrello软件有点好玩,最后那个程序难度比较大,好久才出来(复数是什么本来早就忘记了,计算方法也忘得差不多了,到网上现找资料补习)

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。