西南科技大学Java程序设计与实践 实验三 类的继承与多态的应用 一、实验目的: 1、练习类的继承与多态设计过程; 2、练习面向对象的图形用户界面设计、事件设计方法。 二、实验内容: 1、利用多态性编程,创建一个 square 类实现,求三角形、正方形和圆等形状面 积。方法抽象出一个共享父类,定义一个函数为求 square 面积,根据形状共有 特征构建父类及子类继承关系,再重新定义各形状的求面积函数。要求在主类当 中创建不同类的对象,并求不同形状的面积。 2、在第 1 题的基础上,在抽象类中增加一个 drawSquare()方法,具体类中实现 这个方法。 三、实验要求: 1、将第 1 题抽象类名改为 Figure,三角形改为“等腰直角三角形”,各具体类名称 分别为 RightTriangle、Square 和 Cycle; 2、编写测试类 TestSquare,检验第 1 题的结果; 3、在第 1 题的基础上,在抽象类中增加一个 drawSquare()方法,具体类中实现 这个方法; 4、设计一个类似 Windows 的 Application 应用程序,在窗体上调用第 2 题的 《西南科技大学Java程序设计与实践——实验三:类的继承与多态的应用》 本次实验主要目的是深化理解和应用Java中的类的继承与多态特性,同时结合图形用户界面设计进行实战训练。实验内容分为三个部分,旨在通过具体的编程任务来巩固面向对象编程的基本概念。 实验的第一个任务是利用多态性设计一个图形面积计算程序。我们需要抽象出一个共享父类,例如命名为`Figure`,并定义一个公共方法`getArea()`来计算面积。接着,根据各种图形的共同特征(如都有边界)构建父类和子类的关系。创建`RightTriangle`(等腰直角三角形)、`Square`(正方形)和`Cycle`(圆形)三个子类,它们分别继承自`Figure`。在每个子类中,我们需要重新定义`getArea()`方法以适应各自图形的面积计算规则。此外,主类中应创建这些子类的对象并调用`getArea()`方法来计算不同形状的面积。 实验的第二个任务是在`Figure`抽象类中增加一个`drawSquare()`方法,然后在各个具体类中实现它。这使得每个图形不仅能够计算面积,还能够绘制自己。这体现了Java中多态性的优点,即可以使用父类的引用处理子类的对象,实现代码的通用性。 实验的第三部分是扩展图形界面应用程序。根据要求,我们需要设计一个类似Windows应用程序的界面,该界面包含一个画板,可以调用`drawSquare()`方法显示不同类型的图形。为此,我们需定义一个`DrawFrame`类,它继承自`JFrame`,并采用边界布局管理器。画板区域分为两部分:北部的控制面板(用于选择图形和颜色),以及中心的画布区。画布区由`MyCanvas`类实现,它继承自`Canvas`,并处理鼠标事件以实现图形的绘制。同时,我们需要定义一个内部类`MyActionListener`,实现`ActionListener`接口,处理按钮点击事件,通过switch-case语句根据用户的选择调用相应的图形类进行绘制。 在图形类设计方面,`Figure`抽象类包含起始点、终点和颜色属性,并提供绘图、计算面积和周长的抽象方法。每个子类如`Cycle`、`Square`和`RightTriangle`需要覆盖这些方法,实现各自的特性。例如,`Cycle`需要根据终点坐标计算半径,`Square`根据终点确定边长,而`RightTriangle`则需要记录三个顶点坐标和两个直角边的长度。 实验过程中,学生应完成代码编写并运行测试,确保图形能够正确绘制,面积计算无误,且用户界面交互流畅。通过这个实验,学生不仅加深了对类的继承和多态的理解,还掌握了图形用户界面的设计与事件处理技巧,提升了实际编程能力。
剩余29页未读,继续阅读
- 粉丝: 444
- 资源: 24
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- 1
- 2
- 3
- 4
- 5
前往页