我有关于医院管理系统的作业。我已经基本完成,但是关于多态性有一个问题。在我的项目中,我有6个班级和1个测试班级。这6个类别是医生,门诊病人,住院病人,病人和人。 Doctor和Patient类扩展了Person类,In / Outpatient类扩展了Patient类。我的老师说,医生现在只有1个患者列表,可以在其中添加住院患者和门诊患者(多态性)。该列表是私下定义的。因此,新添加的addPatient / removePatient方法将用于将患者添加到该列表/从该列表删除。

我怎样才能做到这一点?上课时,我必须写入/门诊数组列表。这是我的代码

Doctor.java

public class Doctor extends Person{

    private int staffId;
    private double salary;

    public ArrayList<Patient> patients = new ArrayList<Patient>();

    public ArrayList<Inpatient> inpatients = new ArrayList<Inpatient>();
    public ArrayList<Outpatient> outpatients = new ArrayList<Outpatient>();
    ...
public void addPatient(Patient a) {
        JFrame j=new JFrame();

        for (int i = 0; i < patients.size(); i++) {
            if ( (patients.get(i)).getRegistrationId() == a.getRegistrationId()) {
                JOptionPane.showMessageDialog(j,"Patient already added before!");
                return;
            }
        }

        patients.add(a);
    }

    public void removePatient(int registrationId) {
        for (int i = 0; i < patients.size(); i++) {
            if (patients.get(i).getRegistrationId() == registrationId) {
                patients.remove(i);
            }
        }
    }


test.java

public static void main(String args[]){
   ...
 Doctor d = new Doctor(111222, "ali", 50, "m", "ankara", 6000); //staffId, name, age, sex, address, salary
 h.addDoctor(d);
 Inpatient in = new Inpatient(333444, "veli", 32, "m", "istanbul", 345.40, 410);
 d.addPatient(in); //Inpatient in is registered to Doctor d.
 Outpatient out = new Outpatient(555666, "helin", 28, "f", "izmir", 610.35);
 d.addPatient(out); //Outpatient out is registered to Doctor d.

...

最佳答案

我认为,您的老师的意思是,您根本不需要inpatientsoutpatients列表。创建patients数组列表时,可以在其中包含两个患者,因为它们扩展了Patient类。

09-06 10:13