实验二 Java面向对象程序设计
一、 实验要求
1.完成实验、撰写实验报告,以博客方式发表在博客园
2.实验报告重点是运行结果、遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法
3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施
二、实验内容
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
5. 了解设计模式
三、实验过程
(一)单元测试
1.知识点:伪代码,产品代码,测试代码
举例:(1)伪代码:从意图层面来解决问题,最终,伪代码是产品代码最自然的最好的注释。
(2)产品代码:有了伪代码,我们用特定编程语言翻译一下,就是可用的产品代码
(3)测试代码:用以对产品代码进行测试的代码
以将学生成绩分等级为例,实现代码如下:
正常的测试,如果55不是fail,则测试失败等
因为之前没有考虑100,所以边缘测试时100是fail的,只要在100那加上<=,就可以,改进结果如下:
(二)TDD(Test Driven Devlopment, 测试驱动开发)
先写测试代码,然后再写产品代码的开发方法叫“测试驱动开发”(TDD)。TDD的一般步骤如下:
- 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
- 测试代码编译不通过(没产品代码呢)
- 编写产品代码
- 测试通过
- 对代码进行重构,并保证测试通过(重构下次实验练习)
- 循环完成所有功能的开发
以下是一个TDD实例的练习运行结果图(绿条表明测试通过):
(三)面向对象三要素
(1)抽象:抽出事物的本质特征而暂时不考虑他们的细节。
(2)封装、继承与多态:
主要为umbrella软件的使用,在Linux虚拟机中运行结果如下:
Dog,Cat,Animal类的使用,
一下为最后一个结果截图:只需要一个getInfo,参数为父类Animal,当方法参数类型为父类时,可以传入子类的对象
(四)设计模式初步
(1)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)的惯用解决之道。其中最重要的是设计模式。
(3)设计模式实示例
设计模式四个基本元素
Pattern name:描述模式,便于交流,存档
Problem:描述何处应用该模式
Solution:描述一个设计的组成元素,不针对特例
Consequence:应用该模式的结果和权衡
以下为一个实例的结果截图:
(五)练习
使用TDD的方式设计实现复数类Complex。
首先建立一个类,标准复数:ai+b。那么在类里,如果a或b等于0时,输出error,否则输出复数的标准式。在TDD方法中,如果每一个测试都通过,则最后条为绿色,一下为结果截图: