I want to model this scenario in object oriented language:
- A hospital has number of patients
- A patient can have zero or more medical conditions
- A medical condition is identified by name and date
Please review my code and tell me:
- What can I do to incorporate object oriented fundamentals like reusability and extensibility?
- Do I need to implement an
equals
method in theMedicalCondition
class? - Do I need to initialize all the instance variables in constructor?
import java.util.Date;
import java.util.*;
import java.text.*;
class Patient
{
private String name;
private String streetAdress1;
private String phoneNumber;
private String streetAdress2;
private String zipCode; //I really dont need to preform any numerical operations.
private List<MedicalCondition> mcList;
public Patient(String name) //Public for constructor.
{
this.name = name;
mcList = new ArrayList<MedicalCondition>();
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
//All setter and getters
public void addMedicalCondition(MedicalCondition mc)
{
mcList.add(mc);
}
public void deleteMedicalCondition(MedicalCondition mc)
{
mcList.remove(mc);
}
public List<MedicalCondition> getMedicalConditions()
{
return mcList;
}
public String toString(){
return name;
}
}
class MedicalCondition
{
private String nameOfCondition;
Date dateOfReport;
public MedicalCondition(String nameOfCondition,Date dateOfReport)
{
this.nameOfCondition = nameOfCondition;
this.dateOfReport = dateOfReport;
}
public String toString()
{
return nameOfCondition;
}
}
public class HelloWorld{
public static void main(String args[]) throws ParseException{
Patient p1 = new Patient("Mike");
DateFormat format = new SimpleDateFormat("mm/dd/yyyy");
MedicalCondition mc1 = new MedicalCondition("Diabetes",format.parse("03/23/2000"));
p1.addMedicalCondition(mc1);
System.out.println(p1);
for(MedicalCondition mc : p1.getMedicalConditions())
{
System.out.println(mc);
}
p1.deleteMedicalCondition(mc1); //Delete the condition
System.out.println(p1);
for(MedicalCondition mc : p1.getMedicalConditions())
{
System.out.println(mc);
}
}
}