我有关于医院管理系统的作业。我已经基本完成,但是关于多态性有一个问题。在我的项目中,我有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.
...
最佳答案
我认为,您的老师的意思是,您根本不需要inpatients
和outpatients
列表。创建patients
数组列表时,可以在其中包含两个患者,因为它们扩展了Patient
类。