java接口与实现接口的类实验报告

发布时间:2018-06-29 09:19:06

实验报告

课程名称

面向对象程序设计

实验名称

实验六、接口与实现接口的类

日期

2018/4/29

学生学号

姓名

班级

实验目的:

通过本次实验,要求学生能进一步掌握接口、java.lang包中的基础类库和java.util包中的工具类库的使用方法。

实验条件:

电脑一台、能上网查阅资料。

1.定义Person类,包含name(姓名)、birthday(出生日期)、idCard(身份证号)、sex(性别)、age(年龄)等基本信息,通过使用Comparator接口实验Person类可以按姓名、年龄、出生日期等多种比较规则进行排序。

源代码:

package person;

public class Person {

String name;

String idCard;

String birthday;

char sex;

int age;

public Person() {

}

public Person(String name, String idCard, String birthday, char sex, int age) {

super();

this.name = name;

this.idCard = idCard;

this.birthday = birthday;

this.sex = sex;

this.age = age;

}

}

package person;

import java.util.Comparator;

public class CompareName implements Comparator{

@Override

public int compare(Person p1, Person p2) {

// TODO 自动生成的方法存根

return p1.name.compareTo(p2.name);

}

}

package person;

import java.util.Comparator;

public class CompareBirthday implements Comparator{

@Override

public int compare(Person p1, Person p2) {

// TODO 自动生成的方法存根

return p1.birthday.compareTo(p2.birthday);

}

}

package person;

import java.util.Comparator;

public class CompareAge implements Comparator{

@SuppressWarnings("deprecation")

@Override

public int compare(Person p1, Person p2) {

// TODO 自动生成的方法存根

return new Integer(p1.age).compareTo(new Integer(p2.age));

}

}

package person;

import java.util.s;

public class PersonText {

public static void main(String[] args) {

// TODO 自动生成的方法存根

int n=5;

Person[] person=new Person[n];

person[0]=new Person("张三", "4569", "199666", '', 22);

person[1]=new Person("李四", "1234", "199543", '', 23);

person[2]=new Person("王五", "2589", "199735", '', 21);

person[3]=new Person("赵丽", "3698", "199825", '', 20);

person[4]=new Person("宋月", "5869", "199811", '', 20);

System.out.println("原来顺序为:");

for(int i=0;i<n;i++) {

System.out.println("姓名 :"+person[i].name+" 性别:"+person[i].sex+" 年龄:"+person[i].age+" 生日:"+person[i].birthday);

}

System.out.println("\n按姓名排序后顺序为:");

s.sort(person,new CompareName());

for(int i=0;i<n;i++) {

System.out.println("姓名:"+person[i].name+" 性别:"+person[i].sex+" 年龄:"+person[i].age+" 生日:"+person[i].birthday);

}

System.out.println("\n按年龄排序后顺序为:");

s.sort(person,new CompareAge());

for(int i=0;i<n;i++) {

System.out.println("姓名:"+person[i].name+" 性别:"+person[i].sex+" 年龄:"+person[i].age+" 生日:"+person[i].birthday);

}

System.out.println("\n按生日排序后顺序为:");

s.sort(person,new CompareBirthday());

for(int i=0;i<n;i++) {

System.out.println("姓名:"+person[i].name+" 性别:"+person[i].sex+" 年龄:"+person[i].age+" 生日:"+person[i].birthday);

}

}

}

实验结果:

2.首先定义基本几何图形接口(IShape),然后定义IShape的实现类Circle(圆形)、Square(正方形)和Triangle(三角形)。要求计算各种图形的面积和周长。(提示:求三角形的面积用海伦公式:,其中a,b,c是三角形的边长,L=(a+b+c)/2,即周长的一半。)

源代码:

package jiekoushape;

public interface IShape {

public double area();

public double length();

}

package jiekoushape;

public class Circle implements IShape {

private String name;

private double r;

public Circle(String name, double r) {

super();

this.name = name;

this.r = r;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getR() {

return r;

}

public void setR(double r) {

this.r = r;

}

@Override

public double area() {

// TODO 自动生成的方法存根

return Math.PI*Math.pow(r, 2);

}

@Override

public double length() {

// TODO 自动生成的方法存根

return Math.PI*r*2;

}

@Override

public String toString() {

// TODO 自动生成的方法存根

return name+"周长是:"+length()+","+"面积是:"+area();

}

}

package jiekoushape;

public class Square implements IShape {

private String name;

private double a;

public Square(String name, double a) {

super();

this.name = name;

this.a = a;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getA() {

return a;

}

public void setA(double a) {

this.a = a;

}

@Override

public double area() {

// TODO 自动生成的方法存根

return a*a;

}

@Override

public double length() {

// TODO 自动生成的方法存根

return 4*a;

}

@Override

public String toString() {

// TODO 自动生成的方法存根

return name+"周长是:"+length()+","+"面积是:"+area();

}

}

package jiekoushape;

public class Triangle implements IShape {

private String name;

private double a;

private double b;

private double c;

public Triangle(String name, double a, double b, double c) {

super();

this.name = name;

this.a = a;

this.b = b;

this.c = c;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getA() {

return a;

}

public void setA(double a) {

this.a = a;

}

public double getB() {

return b;

}

public void setB(double b) {

this.b = b;

}

public double getC() {

return c;

}

public void setC(double c) {

this.c = c;

}

public double area() {

// TODO Auto-generated method stub

double l=(a+b+c)/2;

return Math.sqrt(l*(l-a)*(l-b)*(l-c));

}

public double length() {

// TODO Auto-generated method stub

return a+b+c;

}

@Override

public String toString() {

// TODO 自动生成的方法存根

return name+"周长是:"+length()+","+"面积是:"+area();

}

}

package jiekoushape;

public class DemoIShape {

public static void main(String[] args) {

// TODO 自动生成的方法存根

IShape shape=null;

shape=new Circle("圆形",3);

System.out.println(shape.toString());

shape=new Square("正方形", 4);

System.out.println(shape.toString());

shape=new Triangle("三角形", 3, 4, 5);

System.out.println(shape.toString());

}

}

实验结果:

实验总结(结论或问题分析):

本次实验,主要是对接口、java.lang包中的基础类库和java.util包中的工具类库的使用,其中最难得就是使用Comparator对Person类进行排序,通过查阅资料了解了Comparator如何使用,受益匪浅。

实验成绩

任课教师签名

java接口与实现接口的类实验报告

相关推荐