Java 程序设计 类的高级应用

黎 浩然/ 22 12 月, 2021/ JAVA/ 0 comments

实验目的

1. 初步掌握面向对象编程中类的编写。

实验内容与要求

1.  “自行车”、“小汽车”、“火车”都可以称之为“车”。请通过分析,抽象它们所共有的性质,定义一个抽象类Vehicle。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

2.编写一个Person类。该类包含三个成员变量name、weight和height,分别代表一个人的身高和体重。在该类中重写Object类的toString方法,当调用它重写的toString方法时,输出这个人的姓名、体重和身高。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

3.编写一个队列类Queue,用来存储float型数据,队列中的数据是先进先出的。具体要求如下:成员变量float [] elements用来存储float型数据;成员变量int size用来表示存储的float型数据的个数;构造方法Queue在初始化队列的时候,设置队列的容量为12;方法enqueue(float v)用来往队列中添加一个float型数据;方法dequeue()用从队列中删除并返回一个float型数据;方法getSize()用来返回队列的大小。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

4.编写一个秒表类StopWatch,成员变量和方法自定。编写一个支持快速排序算法的类QuickSort,成员变量和方法自定。对100000, 1000000, …等不同长度的数组中的元素(元素的值随机给定)进行排序,并用秒表对象来记录排序所用的时间。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

报告写作。要求:主要思路有明确的说明,重点代码有详细的注释,行文逻辑清晰可读性强,报告整体写作较为专业。20分,这一项的评分,采用20分、10分和0分三个级别)

说明:

(1)本次实验课作业满分为100分,占总成绩的比例(待定)。

(2)本次实验课作业截至时间2019年10月24日(周四)23:59。

(3)报告正文:请在指定位置填写,本次实验不需要单独提交源程序文件。

(4)个人信息:WORD文件名中的“姓名”、“学号”,请改为你的姓名和学号;实验报告的首页,请准确填写“学院”、“专业”、“报告人”、“学号”、“班级”、“实验报告提交时间”等信息。

(5)提交方式:截至时间前,请在Blackboard平台中提交。

(6)发现抄袭(包括复制&粘贴整句话、整张图),该次作业记零分。

(7)延迟提交,不得分;如有特殊情况,请于截至日期之后48小时内发邮件到feiqiao@szu.edu.cn,并在邮件中注明课程名称、作业名称、姓名、学号等信息,以及特殊情况说明,我收到后会及时回复。

(8)期末考试阶段补交无效。

实验过程及结果

1.“自行车”、“小汽车”、“火车”都可以称之为“车”。请通过分析,抽象它们所共有的性质,定义一个抽象类Vehicle。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

程序代码如下:

运行结果如下:

2. 编写一个Person类。该类包含三个成员变量name、weight和height,分别代表一个人的身高和体重。在该类中重写Object类的toString方法,当调用它重写的toString方法时,输出这个人的姓名、体重和身高。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

程序代码如下:

运行结果如下:

3. 编写一个队列类Queue,用来存储float型数据,队列中的数据是先进先出的。具体要求如下:成员变量float [] elements用来存储float型数据;成员变量int size用来表示存储的float型数据的个数;构造方法Queue在初始化队列的时候,设置队列的容量为12;方法enqueue(float v)用来往队列中添加一个float型数据;方法dequeue()用从队列中删除并返回一个float型数据;方法getSize()用来返回队列的大小。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

程序代码如下:

运行结果如下:

4.编写一个秒表类StopWatch,成员变量和方法自定。编写一个支持快速排序算法的类QuickSort,成员变量和方法自定。对100000, 1000000, …等不同长度的数组中的元素(元素的值随机给定)进行排序,并用秒表对象来记录排序所用的时间。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

程序代码如下所示:

秒表类:

快速排序方法:

生成随机数组的方法:

主方法:

结果如下(单位为毫秒):

若为1000000个数,stackoverflow

实验总结与体会

(写写感想、建议等)

  1. 对于第三题,由于java没有指针,无法创建动态链表;所以采用静态链表的时间复杂度

会更低。但由于静态链表较为复杂, 故此处采用顺序表, 为不浪费存储空间, 每次dequeue后将队列向左移动一位。

  • Java无法将float按引用传递,所以dequeue返回类型为float,而dequeue无法检测队列

为空的状态。

3 .当函数里面的变量比较多的时候,JVM的栈空间很快就会被用完

Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*