标签:
一、实验内容
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
5. 了解设计模式
二、实验过程(本次试验都是在自己电脑上完成,没有使用实验楼)
(一)单元测试
用程序解决问题时,要会写三种码:伪代码、产品代码、测试代码
这种先写测试代码,然后再写产品代码的开发方法叫“测试驱动开发”(TDD)
TDD的一般步骤如下:
(二)面向对象三要素
1.抽象
抽象就是抽出事物的本质特征而暂时不考虑他们的细节。对于复杂系统问题人们借助分层次抽象的方法进行问题求解;在抽象的最高层,可以使用问题环境的语言,以概括的方式叙述问题的解。在抽象的较低层,则采用过程化的方式进行描述。在描述问题解时,使用面向问题和面向实现的术语。 程序设计中,抽象包括两个方面,一是过程抽象,二是数据抽象。
2.封装、继承与多态
面向对象(Object-Oriented)的三要素包括:封装、继承、多态。
过程抽象的结果是函数,数据抽象的结果是抽象数据类型。
封装实际上使用方法(method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,从而带来模块化(Modularity)和信息隐藏(Information hiding)的好处;接口(interface)是封装的准确描述手段。
(三)设计模式初步
(1)S.O.L.I.D原则
面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,S.O.L.I.D类设计原则是一个很好的指导:
(2)模式与设计模式
模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道。
在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。
(四)练习
1.使用TDD的方式设计关实现复数类Complex。
伪代码:
首先设计一个复数类complex,定义三个构造方法:
①没有参数时默认为实部和虚部都为0;
②一个参数时默认为实数,即虚部为0,
③两个参数时分别为实部和虚部
再定义两个成员方法计算两个复数的和与差.定义一个print()方法输出复数的值,当虚部为0时不输出虚部.
最后定义一个song类使用complex类,在这个类的主方法中创建两个复数对象,分别计算这两个复数的和与差并输出.
产品代码:
测试代码:
运行结果:
2.PSP(Personal Software Process)时间
步骤 |
耗时百分比 |
需求分析 |
15% |
设计 |
25% |
代码实现 |
35% |
测试 |
15% |
分析总结 |
10% |
4.总结
在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试,可以查找错误、写出高质量的代码、提高编程水平。
单元测试的好处远不止我目前发现的这些。它可以使代码可以放心修改和重构、使程序员从调用者而不是实现者的角度设计软件模块、
使程序员将软件模块写得易于测试和调用,从而有利于解耦、测试本身可作为被测代码的用法说明,从而替代了一部分文档功能。
三、遇到的问题及解决
1.提示Animal代码有错,Dog和Cat需要在文件中被定义。将Animal和Dog、Cat放在不同的class文件中编译
2.Complex伪代码时不知道应该如何分类。查询复数类的构造方法,得知可以定义三类
四、实验收获
写程序先写出三种代码:伪代码、产品代码、测试代码,这样的程序才有实际意义。
运用好单元测试可以在未来的程序设计中让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质
量能得到稳定的、量化的保证。
标签:
原文地址:http://www.cnblogs.com/20135336wwz/p/4486448.html