Java实例:在一个大学里,有若干教师和学生。根据这个信息设计三个类University、Teacher、Person和Student,一个接口Learnable。

问题描述

        在一个大学里,有若干教师和学生。根据这个信息设计三个类University、Teacher、Person和Student,一个接口Learnable。要求:

        (1) 设计University类,里面使用常量属性:NAME,其值为NUIST,该类使用单例模式设计。

        (2) 设计Person类,属性包括姓名name和年龄age,添加无参和全参构造方法,并封装。

        (3) 写出Learnable接口,里面包含study()和exercise()两个方法。

        (4) 设计Teacher类(增加工号teacherID属性和工资salary属性)和Student类(增加学号studentID属性和专业major属性),它们继承Person类。

        (4) 学生实现Learnable接口,内容自定。

        (5) University添加类集,包含一个数组,里面存有所有教师和学生对象。

        该类中有如下方法:

        1)void register(Person person) 注册某人

        2)void fire(Person person) 开除一个人

        3)List<Person> searchPerson(String name)根据名字查出所有与此名相同的Person,得到一个数组。

        4)double getTotalSalary() 计算大学里面所有教师的工资总和。

代码实现

(1)University类

package ThreeWork;
import java.util.LinkedList;
import java.util.List;

public class University {
    public static final String NAME = "NUIST";
    private static University university = new University(); //University实例化
    private static Person person = new Person(); //Person实例化
    static List<Person> list = new LinkedList<>(); //List

    //无参构造方法
    public University(){

    }

    //注册某人
    public static void register(Person person){
        list.add(person); //注册一个人
    }

    //开除一个人
    public static void fire(Person person) {
        list.remove(person); //开除一个人
    }

    //根据名字查出所有与此名相同的Person,得到一个数组
    public static Person searchPerson(String name) {
        for (Person person: list) {
            if (person.getName().equals(name)) {
                return person;
            }
        }
        return null;
    }

    //计算大学里面所有教师的工资总和
    public static double getTotalSalary() {
        double totalSalary = 0;
        for (Person person: list) {
            if (person instanceof Teacher) {
                totalSalary = totalSalary + ((Teacher)person).getSalary();
            }
        }
        return totalSalary;
    }

}
(2)设计Person类

package ThreeWork;
public class Person {
    private String name; //名字
    private int age; //年龄

    //Setter
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }

    //Getter
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }

    //无参构造方法
    public Person(){

    }
    //有参构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

(3)写出Learnable接口

package ThreeWork;
public interface Learnable {

    public void study(); //方法1
    public void exercise(); //方法2
}

(4)设计Teacher类

package ThreeWork;
public class Teacher extends Person{
    public String teacherID; //工号
    public double salary; //工资

    //Setter
    public void setTeacherID(String teacherID) {
        this.teacherID = teacherID;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }

    //Getter
    public String getTeacherID() {
        return teacherID;
    }
    public double getSalary() {
        return salary;
    }

    //无参构造方法
    public Teacher(){

    }
    //有参构造方法
    public Teacher(String name, int age, String teacherID, double salary) {
        super(name, age);
        this.teacherID = teacherID;
        this.salary = salary;
    }
}

(5)设计Student类

package ThreeWork;
public class Student extends Person implements Learnable{
    public String studentID; //学号
    public String major; //专业

    @Override
    public void study() {
        System.out.println("学习中.............");
    }
    @Override
    public void exercise() {
        System.out.println("锻炼中...........");
    }

    //无参构造方法
    public Student(){

    }
    //有参构造方法
    public Student(String name, int age, String studentID, String major) {
        super(name, age);
        this.studentID = studentID;
        this.major = major;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_54158068/article/details/124222509
今日推荐