一、目的
1、掌握复用类的方式,正确区分和应用组合和继承
2、理解继承和多态
3、理解运行时类型匹配机制RTTI
4、掌握接口的定义和使用、以及多接口的应用
二、实验内容
1、根据UML图设计类
2、实现事务流程,获得输出,要求基本满足如下样例所示要求
输出结果样例:
Fish swim in their tanks all day.
Fluffy likes to play with string.
Spiders catch flies in their webs to eat.
This animal walks on 8 legs.
This animal walks on 0 legs.
Fish, of course, can't walk; they swim.
图3 实验5UML图
三、设计和编码
1.设计思想
首先设计一个父类Animal,然后在设计一个子类Dog来复用类中继承Animal类,然后再设计一个Cat类来复用类组合Animal类,最后在主函数中调用这些类,然后进行输出。
2.类设计说明及类图
(1)、父类:定义了三个变量,legs,age,colors;
Animal |
-legs: int -age: int -colors: String |
+toString(): String |
(2)、子类Dog:继承了父类Animal,使用了复用类中的继承:
Dog |
-name:String |
+toString(): String |
(3)、子类Cat:使用了复用类当中的组合用法,组合父类的animal
Cat |
-name:String -animal:Animal |
+toString(): String |
3.软件体系结构图(类关系图、UML图)
4.主要代码段说明(附代码)
(1)、父类Animal,定义了三个变量,legs,age和colors,然后再用toString返回:
(2)、子类Dog:在这个子类中,不仅继承了父类Animal中的变量,还自己再定义了一个新的变量name’为狗狗的名字,使用了复用类中的继承
(3)、子类Cat:在这个子类当中,又再次定义了一个新的变量name,并且将该变量与父类Animal组合,然后再利用toString返回
四、运行结果及分析
1.运行结果
2.结果分析和说明
结果第一行是调用Animal类进行输出
结果第二行则是调用Dog类并继承Animal类进行输出
结果第三行则是调用Cat类并且组合Animal类进行输出
五、实验小结
1.代码调试中产生的错误及原因分析
错误:在子类Cat中组合了父类Animal,定义了Animal变量,但是在主函数中进行调用的时候却提供了String类型的变量
原因:变量提供错误,改成Animal类变量就可以了
2.实验中遇到的设计问题及解决方法
未遇到
3.实验体会和收获。
本次实验让我体会到了复用类的乐趣,在原来的类上面再进行继承和组合,以达到更加强大的功能,让我更加深刻的体会到了Java语言的奇妙。
六、附录(选)
1. JavaTM教程 第5章。
2. Tutorial/Java/nutsandbolts;Tutorial/Java/JavaOO 。
3. 教案2017/chapter5、6、7。
4.《WEB编程与应用—JSP、XML和Java EE技术》第10章