实验报告(四)继承和多态 (完整代码)
Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接⼝和异常处理实验5 继承、多态、接⼝和异常处理⼀、实验⽬的1、掌握Java的类和对象的声明和使⽤⽅法;2、掌握Java的类的继承和实现⽅法;3、掌握多态性在类的继承中的运⽤;4、掌握接⼝的定义与使⽤;5、掌握基本异常的处理机制;6、熟悉try语句与catch语句的搭配使⽤;7、了解有异常处理与没有异常处理的差别;8、多重catch语句的使⽤;9、使⽤Throws声明异常和Throw抛出异常。
⼆、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、Java sdk程序开发环境、eclipse集成环境。
三、实验内容1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。
假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣2. 和Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。
3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。
四、实验步骤实验内容⼀1.建⽴package experiment5_1,其最终⽬录结构如下:2.建⽴Student类:package experiment5_1;public abstract class Student {final static int CourseNo = 3;String name;String type;int[] courses;String courseGrade;public Student(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name; courses = new int[CourseNo];courseGrade = "" ;}public abstract void calculateGrade();public String getName( ) {return name;}public String getType( ) {return type ;}public String getCourseGrade( ) {return courseGrade;}public int getCourseScore(int courseNumber) {return courses[courseNumber];}public void setName(String name) {/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html = name;}public void setType(String type) {this.type = type;}public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩this.courses[courseNumber] = courseScore ;}}3.建⽴外部类(1)研究⽣类Postjgraduatepackage experiment5_1;public class postgraduate extends Student {public postgraduate(String name) {super(name);type = "研究⽣";}public void calculateGrade() {// TODO Auto-generated method stubint total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += courses[i];};average = total / CourseNo;if (average>=90&&average<100) courseGrade = "优秀"; else if (average>=80&&average<90) courseGrade = "良好"; else if (average>=70&&average<80) courseGrade = "⼀般"; else if (average>=60&&average<70) courseGrade = "及格"; else courseGrade = "不及格";}}(2)本科⽣类UnderGraduatepackage experiment5_1;public class undergraduate extends Student {public undergraduate(String name ) {super(name);type = "本科⽣";}public void calculateGrade() {int total = 0;double average = 0;for (int i = 0; i < CourseNo; i++) {total += getCourseScore(i) ;};average = total / CourseNo;if (average>=80&&average<100) courseGrade = "优秀"; else if (average>=70&&average<80) courseGrade = "良好"; else if (average>=60&&average<70) courseGrade = "⼀般"; else if (average>=50&&average<60) courseGrade = "及格"; else courseGrade = "不及格";}}4.编写代码测试函数package experiment5_1;public class polymorphism {public static void main(String[] args) {Student[] students = new Student[5];students[0] = new undergraduate("陈建平");students[1] = new undergraduate("鲁向东");students[2] = new postgraduate("匡晓华");students[3] = new undergraduate("周丽娜");students[4] = new postgraduate("梁欣欣");for (int i=0; i<5 ;i++) {students[i].setCourseScore(0,87);students[i].setCourseScore(1,90);students[i].setCourseScore(2,78);}for (int i=0; i<5 ;i++) {students[i].calculateGrade();}System.out.println("姓名" + " 类型" +" 成绩");System.out.println("-----------------------");for (int i=0; i<5 ;i++) {System.out.println(students[i].getName( )+" "+students[i].getType( )+" "+students[i].getCourseGrade( ));}}}实验内容⼆1.建⽴package experiment5_2,其最终⽬录结构如下:2.写接⼝Soundable代码:package experiment5_2;public interface Soundable {public void increaseV olume( );public void decreaseV olume( );public void stopSound( );public void playSound( );}3.创建三个类Radio、Walkman和Mobilephone具体实现,分别添加代码:// Mobilephone类package experiment5_2;class Mobilephone implements Soundable{public void increaseV olume( ) {System.out.println("增⼤⼿机⾳量");}public void decreaseV olume( ) {System.out.println("减⼩⼿机⾳量");}public void stopSound( ) {System.out.println("关闭⼿机");}public void playSound( ) {System.out.println("⼿机发出来电铃声");}}// Walkman类package experiment5_2;class Walkman implements Soundable { public void increaseV olume( ) { System.out.println("增⼤随声听⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩随声听⾳量"); }public void stopSound( ) {System.out.println("关闭随声听");}public void playSound( ) {System.out.println("随声听发出⾳乐"); }}// Radio类package experiment5_2;class Radio implements Soundable{ public void increaseV olume( ) { System.out.println("增⼤收⾳机⾳量"); }public void decreaseV olume( ) { System.out.println("减⼩收⾳机⾳量"); }public void stopSound( ) {System.out.println("关闭收⾳机");}public void playSound( ) {System.out.println("收⾳机播放⼴播"); }}4.创建people类及编写测试代码://People类package experiment5_2;class People {public void listen(Soundable s) {s.playSound( );}}//测试代码package experiment5_2;import java.util.Scanner;public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声⾳设备数组中放⼊能发声的设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );soundDevice[2] = new Mobilephone();System.out.println("你想听什么? 请输⼊选择:0-收⾳机1-随声听2-⼿机");i = scanner.nextInt( );//开始听声⾳sportsman.listen(soundDevice[i]);soundDevice[i].increaseV olume( );soundDevice[i].stopSound();scanner.close();}}实验内容三1.建⽴package experiment5_3,其最终⽬录结构如下package experiment5_3;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class DateTransf extends JFrame implements KeyListener{/****/private static final long serialVersionUID = 1L;private static DateTransf frm;private static JTextField txt;private static JTextField data;DateTransf() {setTitle("数字与星期转换");setLocation(700, 300);setSize(400,130);}public static void main(String[] args) {frm = new DateTransf();frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setLayout(new GridLayout(2,2));txt = new JTextField(12);data = new JTextField(12);JLabel lable1 = new JLabel("输⼊数字:");JLabel lable2 = new JLabel("星期⼏:");frm.add(lable1);txt.addKeyListener(frm);frm.add(txt);frm.add(lable2);frm.add(data);frm.setVisible(true);}public void keyPressed(KeyEvent e) {if (e.getSource() == txt) {if (e.getKeyCode() == KeyEvent.VK_ENTER) // 判断按下的键是否是回车键{try {int number = Integer.parseInt(txt.getText());switch (number) {case 1:data.setText("Mon");break;case 2:data.setText("Tue");break;case 3:data.setText("Wen");break;case 4:data.setText("Thu");break;case 5:data.setText("Fri");break;case 6:data.setText("Sat");break;case 7:data.setText("Sun");break;default:JOptionPane.showMessageDialog(null, "您输⼊的数字不是1~7","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMATION_MESSAGE); break;}}catch (Exception e1) {// TODO: handle exceptionJOptionPane.showMessageDialog(null, "您输⼊的不是整数","⽆效⽇期",/doc/1bd4a299a66e58fafab069dc5022aaea998f41e2.html RMA TION_MESSAGE); }}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}2.编译运⾏五、实验结果●实验内容⼀结果:●实验内容⼆结果:●实验内容三结果:六、实验⼩结1.这次实验的内容⽐较多,需要掌握Java的类和对象的声明和使⽤⽅法、Java的类的继承和实现⽅法、多态性在类的继承中的运⽤、接⼝的定义与使⽤、基本异常的处理机制、try语句与catch语句的搭配使⽤等等;2. 在实验过程中,重点是要区分好实例和类,灵活掌握类的调⽤。
实验四 、类的继承与多态

实验四类的继承与多态一、实验目的1.理解类的继承概念和类的继承规则。
根据实际需要正确的运用类的继承。
2.理解类的多态概念,掌握子类对父类方法的重新定义,理解方法的匹配调用原则。
二、实验内容1.模拟编写程序,理解类的继承、多态、继承和多态规则。
2. 独立编程,实现类的继承和多态。
三、实验过程(一)继承(1)模拟编写程序,理解类的继承,继承规则。
请编码实现动物世界的继承关系:(1)动物(Animal)具有行为:吃(eat)、睡觉(sleep)。
(2)动物包括:兔子(Rabbit),老虎(Tiger)。
(3)这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。
请通过继承实现以上需求,并编写测试类AnimalTest进行测试。
1. 定义Animal类,代码如下:public class Animal {public void sleep(){System.out.println("我正睡觉呢!");}public void eat(){}}2. 定义Tiger类,代码如下:public class Tiger extends Animal {public void eat(){System.out.println("我喜欢吃肉!");}}3. 定义Rabbit类,代码如下:public class Rabbit extends Animal {public void eat(){System.out.println("我喜欢吃草和青菜!"); }}4、定义AnimalTest类,代码如下:public class AnimalTest {public static void main(String[] args) {Tiger tiger = new Tiger();tiger.sleep();tiger.eat();System.out.println();Rabbit rabbit = new Rabbit();rabbit.sleep();rabbit.eat();}}5. 编译运行程序,查看运行结果。
.NET继承与多态实验报告

实验报告课程名称.NET程序设计实验项目.NET继承与多态专业计科班级 1 姓名学号指导教师实验成绩年月日一、实验目的(介绍本次实验的预期目标,完成的功能)1.理解类的继承性与多态性,掌握其应用方法。
2.理解抽象类、接口的概念,掌握抽象类与接口的定义及使用方法。
二、实验过程(介绍实验中涉及的关键过程,如核心算法、数据结构等)1.设计一个Windows应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生等派生类,要求具有不同的特性和行为,能通过静态成员自动记录不同学生的人数。
学生类要求的功能:成员变量:学号、姓名、总成绩、性别等;方法:构造函数、析构函数、显示学生的全部信息。
派生类要求的功能:成员变量:小学生类:语文成绩、数学成绩、英语成绩中学生类:化学成绩、物理成绩大学生类:高数成绩、计算机成绩静态变量:人数方法:构造函数、析构函数、显示学生全部信息。
选择“文件”→“新建”→“项目”菜单命令,弹出“新建项目”对话框,在“模板”列表框中选择“控制台应用程序”。
首先创建一个学生类,属性有学号、姓名、总成绩、性别,构造函数里赋值。
代码如图1-1所示:图1-1 学生类源代码然后分别创建小学生类、中学生类和大学生类。
代码如图1-2、1-3、1-4所示:图1-2 小学生类源代码图1-3 中学生类源代码最后创建班级类并实现学生信息管理。
如图1-5、1-6所示:图1-5 班级类图1-6 程序源代码三、实验结果分析(分析实验的最终结果)1.选择“调试”→“启动调试”,或“调试”→“开始执行(不调试)”菜单命令,将程序显示在命令提示符窗口中。
如图2-1所示:图2-1 程序主界面按数字1键,输入班级的学生人数,然后按回车键。
依次输入学生学号、姓名、性别、总成绩。
如图2-2所示:图2-2 输入学生信息按数字2键,可以输入学号来查询学生信息。
如图2-3所示:图2-3 查询学生信息按数字3键可以统计出全班的平均分。
Java继承与多态实验报告

西安邮电大学(计算机学院)课内实验报告实验名称:继承与多态专业名称:计算机科学与技术班级:计科1405班学生姓名:高宏伟学号:04141152指导教师:刘霞林实验日期:2016.10.13一、实验目的通过编程和上机实验理解Java 语言的继承和多态特性,掌握变量的隐藏、方法的覆盖、重载,掌握抽象类和接口的使用。
二、实验要求1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。
2.编写体现类的多态性(成员方法重载)的程序。
3.编写体现类的多态性(构造方法重载)的程序。
4.编写使用接口的程序。
三、实验内容(一)类的继承1.创建公共类Student.(1)编写程序文件Student.java,源代码如下:public class Student{protected String name; //具有保护修饰符的成员变量protected int number;void setData(String m,int h) //设置数据的方法{name =m;number= h;}public void print() //输出数据的方法{System.out.println(name+", "+number);}}(2)编译Student.java,产生类文件Student.class。
2.创建继承的类Undergraduate(1)程序功能:通过Student 类产生子类undergraduate,其不仅具有父类的成员变量name(姓名)、number(学号),还定义了新成员变量academy(学院)、department (系)。
在程序中调用父类的print 方法。
(2)编写Undergraduate 程序:class Undergraduate extends Student{【代码1】//定义成员变量academy【代码2】//定义成员变量departmentpublic static void main(String args[]){【代码3】//创建一个学生对象s【代码4】//用父类的setData方法初始化对象s【代码5】//对象s调用print方法【代码6】//创建一个大学生对象u【代码7】//调用父类的成员方法setData初始化对象u【代码8】//设置对象u的成员变量academy【代码9】//设置对象u的成员变量departmentSystem.out.print(+", "+u.number+", "+u.academy+", "+u.department);}}(3)编译并运行程序注意:公共类Student 与undergraduate 类要在同一文件夹(路径)内。
实验4 继承性和多态

实验四继承性和多态一、实验目的:熟悉JA V A中的继承性和多态性。
掌握子类的定义及用法,继承机制中的隐藏与覆盖。
子类的构造方法的用法,对象的上转型对象,抽象类与抽象方法等。
二、实验要求:1.根据下面的要求,编写Java应用程序实现:编写程序模拟中国人、美国人是人、北京人是中国人。
除主类外,程序中还有4个类:People、ChinaPeople、AmericanPeople和BeijingPeople类。
要求如下:●People类有权限是protected的double型成员变量height和weight,以及public voidspeakHello()、public void averageHeight()和public void averageWeight()方法。
●ChinaPeople类是People的子类,新增了public void chinaGongfu()方法。
要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
●AmericanPeople类是People的子类,新增public void americanBoxing()方法。
要求AmericanPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
●BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera()方法。
要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
实验4 继承、多态、抽象类、接口

实验4 继承、多态、抽象类、接口注意:有些程序由于Word的关系,复制后,tab缩位可能会变成其它符号。
需要你去调整一下,删除缩位,重新Tab一、实验目的 (1)二、实验要求 (1)三、实验内容 (2)1. 类的继承与覆盖练习 (2)1.0 父类的哪些成员可以被继承? (2)1.1 父类Student(学生)与子类HiStudent(大学生) (2)1.2 实例方法为什么需要覆盖 (4)1.3 验证成员方法的覆盖方式 (5)1.4 this、super和super()的使用 (6)1.5 变量、静态方法的隐藏。
(9)1.6 隐藏与覆盖的综合性实例 (10)2. 类的多态性练习 (11)2.1 普通方法的重载(实验3,本实验略) (11)2.2 构造方法的重载(实验3,本实验略) (11)2.3 运行时多态与动态绑定 (11)3. 抽象类 (13)4. 接口 (15)一、实验目的通过编程和上机实验理解Java语言的面向对象特性,了解类的继承性和多态性的作用,掌握它们的实现方法,了解数据域和静态方法的隐藏,了解抽象类和接口的作用。
二、实验要求1、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序;2、编写体现类的多态性的程序;3、编写体现抽象类和接口功能的程序。
三、实验内容1. 类的继承与覆盖练习例如,圆是一种形状。
圆类Circle是形状类Shape的子类。
父类也叫基类、超类,子类也叫次类、扩展类、派生类。
子类可从父类中产生,保留父类的成员变量和方法,并可根据需要对它们加以修改。
新类还可添加新的变量和方法。
这种现象就称为类的继承。
当建立一个父类时,不必写出全部成员变量和成员方法。
只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。
Java 提供了一个庞大的类库让开发人员继承和使用。
设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。
你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,和父类一样,那样没什么用。
Java实验指导4继承与多态

-------------精选文档 -----------------《Java 程序设计》实验指导实验四继承与多态一、实验目的:1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验原理新类可从现有的类中产生,并保留现有类的成员变量和方法,并可根据需要对它们加以修改。
新类还可添加新的变量和方法。
这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。
只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。
被继承的类称为父类或超类(superclass),这个新类称为子类。
Java 提供了一个庞大的类库让开发人员继承和使用。
设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。
你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。
所以,通常要对子类进行扩展,即添加新的属性和方法。
这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。
继承的意义就在于此。
语法格式:类访问限定符子类名extends父类名{⋯⋯}三、实验内容及要求:1.定义一个接口( ShapeArea ),其中包含返回面积的方法(getArea )。
定义一个矩形类( Rectangle),派生出一个正方形类(Square ),再定义一个圆类(Circle ),三者都要求实现接口ShapeArea,自行扩充成员变量和方法。
在主方法中建一数组,数组中放入一些上述类型的对象,并计算它们的面积之和。
2.运行下面的程序,理解成员变量的继承与隐藏,方法的覆盖与重载。
class A{int sum,num1,num2;public A(){num1=10;num2=20;sum=0;}void sum1(){sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum2(int n){num1=n;sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}}class B extends A{int num2;public B(){num2=200;}void sum2(){sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum2(int n){num1=n;sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum3(int n){super.sum2(n);System.out.println("sum="+num1+"+"+num2+"="+sum);}}public class test{public static void main (String arg[]){B m=new B();m.sum1();m.sum2();m.sum2(50);m.sum3(50);}}。
实验4_继承与多态

实验4 继承与多态性实验目的:1.掌握子类的定义和使用方法2.掌握用抽象类实现多态性实验内容:一、编辑、编译和运行程序:1.带参构造方法(RectExample.java)class Rect{ private int length,width;Rect(int l,int w){ length=l; width=w; }int GetArea(){ return length*width; }}class Rectangular extends Rect{ private int height;Rectangular(int l,int w, int h){ super(l,w); height=h;}int GetV(){ return GetArea()*height;}}public class RectExample{ public static void main(String args[]){ Rectangular r=new Rectangular(3,4,5);System.out.println("长方体体积是:"+r.GetV());}}2.用抽象类实现多态性(ShapeTestWithPolymorphism.java)import java.util.Scanner;abstract class Shape//抽象类{ double area;abstract void computeArea();//抽象方法}class Rectangle extends Shape{ private double width, height;Rectangle(double _width, double _height){ width = _width; height = _height; }void computeArea(){ area = width * height; }//抽象方法在子类中的具体实现}class Circle extends Shape{ private double radius;Circle(double _radius){ radius = _radius; }void computeArea(){ area = Math.PI * radius * radius; }}class Square extends Rectangle{ Square(double _side){ super(_side, _side); }}public class ShapeTestWithPolymorphism_1{ public static void main(String args[]){ Scanner reader=new Scanner(System.in);System.out.println("-------------------------------");System.out.println("计算矩形面积,请输入1\n计算园面积,请输入2\n计算正方形面积,请输入3");System.out.println("-------------------------------");System.out.print("请输入选择:");int k=reader.nextInt();String str="";Shape p=null;switch(k){ case 1:System.out.print("请输入矩形宽和高:");int w=reader.nextInt();int h=reader.nextInt();p=new Rectangle(w,h);str="矩形面积是:";break;case 2:System.out.print("请输入园的半径:");int r=reader.nextInt();p=new Circle(r);str="园面积是:";break;case 3:System.out.print("请输入正方形的边长:");int s=reader.nextInt();p=new Square(s);str="正方形面积是:";}puteArea();System.out.println(str+p.area);}}二、用面向对象方法编程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
System.out.println("您所创建的圆按半径由小到大排序如下:\n" + str1);
Shape.sort(rectangle);
String str2 = "";
for (int i = 0; i < rectangle.length; i++) {
输入:
预期输出:
实际输出:
分析
六、实验结果
用与测试用例不同的输入数据运行算法,写出得到的结果,并分析结果是否正确。
输入:
输出结果:
结果分析:
七、总结
对上机实验结果进行分析、上机的心得体会及改进意见。
附录:
如果原来的算法中发现了错误,在附录中附上改正后的算法实现。
setLength(length);
setWidth(width);
}
public double getLength() {
return length;
}
public void setLength(double val) {
this.length = (val <= 0 ? 1 : val);
}
public double getWidth() {
} else {
System.out.println("未找到符合的圆!");
}
System.out.println("要查找的矩形的长和宽?:");
Scanner f6 = new Scanner(System.in);
Rectangle r1 = new Rectangle(f6.nextDouble(), f6.nextDouble());
sort(list);
while (low <= high) {
mid = (low + high) / 2;
if (((Comparable) target).compareTo(list[mid]) < 0) {
high = mid - 1;
} else if (((Comparable) target).compareTo(list[mid]) > 0) {
list[currentMaxIndex] = list[i];
list[i] = currentMax;
}
}
}
public static int search(Shape[] list, Shape target) {
int mid, low = 0, high = list.length - 1;
Scanner b2 = new Scanner(System.in);
int b = b2.nextInt();
Shape[] rectangle = new Shape[b];
System.out.println("总共创建了" + b + "个矩形\n请依次输入各个矩形的长和宽:");
Scanner c3 = new Scanner(System.in);
double e = e5.nextDouble();
Circle c1 = new Circle(e);
if (Shape.search(circle, c1) != 0) {
System.out.println("所查找的圆的位置及其具体信息为:\n" + Shape.search(circle, c1) + c1);
创建一个Java应用项目
把UML项目中的类自动生成代码到Java应用项目中
实现类中的方法及通用的排序和检索程序
进行编译
进行测试,使用的测试用例:
输入:预期输出:
…
五、调试过程
1.编译过程
记录算法实现中发现的语法错误及改正
2.调试过程
记录算法实现中发现的逻辑错误及改正,对每个测试用例,记录实际输出,并与预期输出进行比较,如果不同,分析产生错误的原因并改正。
return Math.PI * radius * radius;
}
public int compareTo(Object o) {
if (radius > ((Circle) o).radius) {
return 1;
} else if (radius < ((Circle) o).radius) {
福建农林大学计算机与信息学院实验报告
系
计算机
专业
年级
12级
成绩
姓名
学号
实验室
机号
实验时间
教师签字
实验(四)
一、实验目的和要求
1.掌握面向对象的继承关系
2.理解面向对象的多态
3.掌握方法的重写
4.掌握接口的实现
二、实验内容和原理
设计一个抽象类Shape,包括2个抽象方法,分别是计算形状的周长和面积。设计具体类Rectangle和Circle,分别表示矩形和圆,它们都是Shapes的子类。使Rectangle和Circle都实现Comparable接口(根据面积比较大小),编写一个通用的排序程序和一个通用的二分查找程序(自己写代码实现),能对这二种类型的数组进行排序并查找指定的对象。
三、实验环境
1.硬件环境:
2.软件环境:JDK1.5
四、算法描述及实验步骤
1.算法描述(可以用类图、流程图、伪代码或源程序描述)
package test;
import javax.swing.JOptionPane;
import java.util.Scanner;
public class Test {
for (int j = i - 1; j >= 0; j--) {
if (((Comparable) currentMax).compareTo(list[j]) < 0) {
currentMax = list[j];
currentMaxIndex = j;
}
}
if (currentMaxIndex != i) {
low = mid + 1;
} else {
return mid + 1;
}
}
return 0;
}
}
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
}
}
}
class Circle extends Shape {
private double radius;
public Circle() {
this(0);
}
public Circle(double radius) {
setRadius(radius);
}
public double getRadius() {
return width;
}
public void setWidth(double val) {
this.width = (val <= 0 ? 1 : val);
}
@Override
public String toString() {
String str = "";
str += "矩形长:" + length + "宽:" + width;
return radius;
}
public void setRadius(double val) {
this.radius = (val < 0 ? 0 : val);
}
@Override
public String toString() {
String str = "";
str += "圆半径:" + radius + "周长:" + String.format("%-6.2f", getPerimeter());
return 2 * (length + wi Nhomakorabeath);
}
protected double getArea() {
return length * width;
}
public int compareTo(Object o) {
if (getArea() > ((Rectangle) o).getArea()) {
for (int i = 0; i < b; i++) {
rectangle[i] = new Rectangle(c3.nextDouble(), c3.nextDouble());
}
Shape.sort(circle);
String str1 = "";
for (int i = 0; i < circle.length; i++) {
public static void main(String[] args) {
System.out.println("要创建几个圆?:");
Scanner a1 = new Scanner(System.in);