仔细阅读DataSet.java,该类实现了如下功能:
- 通过add(…)接收一组double类型数据;
- 通过getAverage()返回接收到的所有数据的平均值;
- 通过getMaximum()返回接收到的所有数据中最大的一个;
利用接口技术改写此程序,扩展程序功能,要求改写后程序能够实现
- 通过add(…)接收一些自定义的类的对象;(提示:这些类实现了某个接口,而这个接口中的某个方法返回了类的测量值);
- 通过getAverage()返回接收到的所有对象测量值的平均值;
- 通过getMaximum()返回接收到的所有对象测量值最大的一个对象;
并用改写后的DataSet类,接收一组Human/Student对象,输出这一组对象的平均值,和其中测量值最大的一个对象。
DataSet.java
package InterfaceExercise;
/**
Computes the average of a set of data values.
*/
public class DataSet
{
/**
Constructs an empty data set.
*/
public DataSet()
{
sum = 0;
count = 0;
maximum = 0;
}
public void add(Human s)
{
sum = sum + s.getData();
if (count == 0 || maximum < s.getData()) maximum = s.getData();
count++;
}
/**
Gets the average of the added data.
@return the average or 0 if no data has been added
*/
public double getAverage()
{
if (count == 0) return 0;
else return sum / count;
}
/**
Gets the largest of the added data.
@return the maximum or 0 if no data has been added
*/
public double getMaximum()
{
return maximum;
}
private double sum;
private double maximum;
private int count;
}
Human
package InterfaceExercise;
import java.util.Objects;
public class Human implements InterfaceDataSet{
private String name;
private int age;
public Human(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public double getData() {
return this.age;
}
}
InterfaceDataSet
package InterfaceExercise;
public interface InterfaceDataSet {
public double getData();
}
main
package InterfaceExercise;
public class main {
public static void main(String[] args) {
Human p1 = new Human("a",17);
Human p2 = new Human("b",19);
Student s1 = new Student("c", 30,2);
Student s2 = new Student("ddd", 25,3);
DataSet data = new DataSet();
data.add(p1);
data.add(p2);
data.add(s1);
data.add(s2);
System.out.println(data.getAverage());
System.out.println(data.getMaximum());
}
}
Student
package InterfaceExercise;
import java.util.Objects;
public class Student extends Human{
private int grade;
public Student(String name, int age, int grade) {
super(name, age);
this.grade = grade;
}
public int getGrade() {
return grade;
}
}