Java程序设计实验:类继承与多态应用探索

版权申诉
5星 · 超过95%的资源 13 下载量 161 浏览量 更新于2024-07-03 2 收藏 583KB DOC 举报
"西南科技大学Java程序设计与实践的实验三主要关注类的继承与多态的应用,旨在让学生熟练掌握面向对象编程的关键概念。实验要求学生设计一个基于图形用户界面(GUI)的应用,能够计算和绘制不同形状的面积,如等腰直角三角形、正方形和圆形。" 在实验中,首先需要理解类的继承和多态的基本原理。继承是面向对象编程的核心特性,它允许创建一个新类(子类)从已存在的类(父类)继承属性和方法。多态则是指一个接口可以有多种不同的实现,使得代码更具通用性和灵活性。 实验内容的第一部分要求创建一个抽象类`Figure`作为所有形状的基类,包含一个计算面积的通用方法。然后,创建三个具体形状类:`RightTriangle`(等腰直角三角形)、`Square`和`Cycle`(圆形),它们继承自`Figure`并重写求面积的方法,以适应各自特定的计算规则。在主程序中,实例化这些类的对象,并调用相应的面积计算方法。 第二部分,需要在`Figure`抽象类中添加一个`drawSquare()`方法,每个具体形状类都需要实现这个方法来绘制对应的形状。这进一步体现了多态的概念,因为每个形状的绘制方式不同,但都通过相同的接口完成。 实验要求还包括编写测试类`TestSquare`来验证形状面积计算的正确性,以及设计一个类似Windows应用的图形界面。这个界面使用了Java的Swing库,通过`DrawFram`类(继承自`JFrame`)来实现,内含一个`MyCanvas`类(继承自`Canvas`)来处理绘图事件。边界布局管理器用于组织界面元素,如放置绘制形状的按钮,同时定义了鼠标事件处理器来响应用户的交互,如点击和拖动操作。 整个实验设计了一个模拟画板,用户可以通过界面上的按钮选择要绘制的形状,程序会根据用户的选择调用相应形状类的`drawSquare()`方法在画布上绘制。这不仅锻炼了学生的面向对象编程技能,还涵盖了GUI设计和事件处理的实践。 通过完成这个实验,学生将深入理解类的继承如何简化代码结构,多态如何增强代码的可扩展性和可复用性,以及如何在实际项目中结合图形用户界面进行面向对象的设计和实现。这对于他们的Java编程学习和未来的软件开发工作都是非常宝贵的经验。
2023-05-29 上传
学生实训任务单 5-2 【作业 5-4】 物流快递系统程序设计 当人们在购物网站下单后, 订单中的货物就会通过快递送达客户手中,分析快递 系统完成的任务,包含这样几个实体:交通工具、快递任务、货物定位。下面依 次设计相关类和接口,实现:输出送货前、送货、送货后的交通工具、送货人、 快递单号、定位地址等信息。 1. 在物流快递系统中,首先需要定义运输货物的交通工具类 Transportation.java。 (1)由于交通工具可能有很多种,所以,将交通工具类定义为一个抽象类。 (2)Transportation.java 类中需要定义 交通工具编号 number、类型 model、运货负责人 admin 三个成员变量,用于存储交通工具的编号、类型和 负责人信息。 (3)定义交通工具抽象类的无参构造和给 3 个成员变量初始化的构造方法。 (4)创建 3 个成员变量的 get/set 方法。 (5)定义一个抽象的运输方法 tarnsport()。 2. 交通工具需要进行保养,定义一个交通工具保养接口 Careable.java,该 接口中包含车辆保养的方法 upKeep()。 (提示:接口中的方法原则上默认为抽 象方法)。 3. 定义一个专用运输车类 Ztransportatin.java。 (1)专用运输车类 Ztransportatin.java,继承交通工具类,并实现保养 接口。 (2)定义专用运输车辆类的无参构造和 3 个参数的构造(这里 3 个参数,是从 父类继承的)。 (3)实现父类的抽象方法 transport(),输出"运输进行中…"语句。 (4) 实现接口Careable.java的抽象方法upKeep(), 输出 "车辆保养完毕! " 信息。 4. 在货物运输中,需要对运输车辆定位,以便随时跟随货物的位置信息。定位 功能可以使用 GPS,而考虑到能够实现定位功能的设备可能有很多,例如手机, 定位仪等,可以定义 GPS 接口,以及实现了该接口的仪器类。 (1) 定义 GPS 接口, 该接口中仅仅包含一个显示定位坐标的方法 showPoint()。 (提示:接口中的方法都是抽象方法)。 5. 定义 GPS 接口实现类 Phone.java,拥有定位功能。 (1)定义 Phone.java 类的无参构造。 (2) 重写定位方法 showPoint(), 返回定位坐标字符串, 例如: "123,456" . 6. 物流快递系统中,快递是一个实体,因此,需要定义快递任务类,包含快递 单号和货物重量的属性,以及货物发送前、发送途中和送到后的方法。 (1)定义快递任务类 SendTask.java,包含快递单号 number、货物重量 goodsWeight 三个成员变量。 (2)定义无参构造和给 2 个成员变量初始化的构造方法。 (3)货物在运输前、运输时和运输后,都需要检查和记录,因此,需要定义 3 个方法。 送货前的准备方法: sendBefore(), 无参, 输出文字信息, 以及货物重量、 快递单号等信息。输出如下图所示。 发送货物方法:send(),2 个参数,抽象类 Transportation 变量,接 口 GPS 变量,分别接收交通工具对象和定位坐标;实现输出运货人、交通工 具编号、交通工具类型信息。输出效果如下图所示。 送货后操作方法:sendAfter(),1 个参数,以抽象类 Transportation 变量为参数,接收交通工具对象。输出效果如下图所示。 7. 定义测试类,实例化对象并传入数据,测试运行结果。 (1)创建快递任务类对象,并初始化。 (2)通过快递任务类变量,访问 sendBefore()方法,输出快递送货前准备工 作。 (3)创建专用交通工具类对象,并初始化为: "Z205" "大卡车" "秦承斌"。 (4)创建手机类对象。 (5) 通过快递任务类变量, 访问 send ()方法, 以创建的专用交通工具类对象、 手机类对象为实参,输出快递送货信息。 (6)通过快递任务类变量,访问 sendAfter()方法,输出送货后信息。 输出总效果如下图所示。