Java语言程序设计 上机实验4 掌握声明接口、一个类实现接口的声明和使用方法
Java语言程序设计 上机实验4
实验目的:
理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口、一个类实现接口的声明和使用方法;熟悉Java语言包和实用包中的常用类。
实验内容:(*)为选做
- 声明圆柱体类Cylinder,继承椭圆类Ellipse(实现周长Perimeter接口和面积Area接口),为圆柱体类设计较为全面的构造方法,并实现体积Volume接口,计算表面积和体积。
- 将Java的若干关键字(15个以上)保存在一个字符串数组中,对其按升序排列,再采用顺序查找和二分法查找,判断一个字符串是否是Java关键字。
- (*) 调试和修改” 实验4-src.zip”中的源代码,使GroupSort程序能正确执行。再在GroupSort.java中增加按姓名查找的模糊查询和按出生日期排序的功能。比如,在Person对象数组中模糊查找名字包含”小”字的对象。
实验要求:
1. 在实验报告中给出程序运行结果截图。
2. 源程序代码附到实验报告的最后。
3. 认真填写实验报告并妥善存档,在下次上机实验课之前发送电子版实验报告至 wsycup@foxmail.com。
注意,“邮件标题”与“附件实验报告文件名”均为:
Java2实验报告N_学号_姓名
其中N为阿拉伯数字,指第几次实验,例如:
Java2实验报告3_ 2012010400_李雷
请严格按照规定的格式发送邮件(注意标题中“Java”后的数字“2”),邮件标题不符合格式要求等同于未交作业,并在规定的时间发送实验报告邮件,过期无效。
4. 实验报告雷同者将不能得到相应的平时分。
附录:实验报告
实验题目__实验四___
学号_2014011329_ 姓名_许恺__ 班级__计算机14-1____ 时间__2016.4.26____
实验题目解答
一.
二.
附:源程序
一.
Cylinder.Java package one; public class Cylinder extends Ellipse implements IVolume{ /** * @param args */ int high; Cylinder(){ this.high=6; } public double Volume(){ return radius_a*radius_b*3.14*high; } public double Area(){ return radius_a*radius_b*3.14*2+high*Perimeter(); } public static void main(String[] args) { // TODO Auto-generated method stub IVolume A=new Cylinder(); IVolume V=new Cylinder(); System.out.println("表面积是"+A.Area()); System.out.println("体积是"+V.Volume()); } } Ellipse.java package one; public class Ellipse implements IPerimeter,IArea{ //椭圆类 protected double radius_a; //a轴半径 protected double radius_b; //b轴半径 public Ellipse(double radius_a) { //构造方法 this.radius_a = radius_a; } public Ellipse(double radius_a, double radius_b) { //构造方法 this.radius_a = radius_a; this.radius_b = radius_b; } public Ellipse() { this(4,4); } public String toString() { return "a轴半径"+this.radius_a+",b轴半径"+this.radius_b; } public double Area() { //计算椭圆面积,覆盖父类的抽象方法 return Math.PI*this.radius_a*this.radius_b; } public double Perimeter(){ //计算椭圆周长,覆盖父类的抽象方法 return Math.PI*(this.radius_a+this.radius_b); } } IArea.java package one; public interface IArea { public double Area(); } IPerimeter.java package one; public interface IPerimeter { public double Perimeter(); } IVolume.java package one; public interface IVolume { public double Volume(); public double Area(); } 二. package two; import java.util.Arrays; public class Q2 { public static void main(String[] args) { // TODO Auto-generated method stub String[] a=new String[20]; String b=new String(); String c=new String(); b="g"; a[0]="a";a[1]="b";a[2]="c";a[3]="d";a[4]="e";a[5]="f";a[6]="g";a[7]="h"; a[8]="i";a[9]="j";a[10]="k";a[11]="l";a[12]="m";a[13]="n";a[14]="o"; for(int i=0;i<15;i++){ for(int j=i+1;j<15;j++){ if(a[i].compareTo(a[j])>0){ c=a[i]; a[i]=a[j]; a[j]=c; } } } if(sxcz(b,a)){ System.out.println("顺序查找法已查找到"); } else{ System.out.println("顺序查找未找到"); } if(efcz(b,a)){ System.out.println("二分法查找法已查找到"); } else{ System.out.println("二分法查找未找到"); } } public static boolean sxcz(String b,String[] a){ for(int i=0;i<20;i++){ if(b==a[i]){ return true; } } return false; } public static boolean efcz(String b,String[] a){ int front=0; int end=14; int mid=7; for(;end>=front;){ if(a[mid]==b) return true; else if(a[mid].compareTo(b)>0){ end=mid-1; mid=(mid+front)/2; } else{ front=mid+1; mid=(front+end)/2; } } return false; } }
反思与总结:
这次实验锻炼了对于接口的使用,也让我更加理解接口的功能和在整个java体系中的位置和作用,我觉的对于接口的使用和理解还可以更加的深入一些,让大家我们更加体会到java语言的强大。