In: Computer Science
More Object Concepts (Exercise 4)
Part A:
Open the file BloodData.java that includes fields that hold a blood type (the four blood types are O, A, B, and AB) and an Rh factor (the factors are + and –). Create a default constructor that sets the fields to “O” and “+”, and an overloaded constructor that requires values for both fields. Include get and set methods for each field. Open the file TestBloodData.java and click the Run button to demonstrate that each method works correctly.
Part B:
Open the file Patient.java which includes an ID number, age, and BloodData. Provide a default constructor that sets the ID number to “0”, the age to 0, and the BloodData to “O” and “+”. Create an overloaded constructor that provides values for each field. Also provide get methods for each field. Open TestPatient.java. Click the Run button at the bottom of your screen to demonstrate that each method works correctly.
BloodData.java
public class BloodData
{
public String bType;
public String rh;
public BloodData()
{
bType = "O";
rh = "+";
}
public BloodData(String bType, String rh)
{
this.bType = bType;
this.rh = rh;
}
public void setBloodType(String bType)
{
this.bType = bType;
}
public String getBloodType()
{
return bType;
}
public void setRhFactor(String rh)
{
this.rh = rh;
}
public String getRhFactor()
{
return rh;
}
}
Patient.java
public class Patient
{
// declare private variables here
public Patient()
{
// add default constructor values here
}
public Patient(String id, int age, String bType, String
rhFactor)
{
// add constructor logic here
}
public String getId()
{
// write method code here
}
public void setId(String id)
{
// write method code here
}
public int getAge()
{
// write method code here
}
public void setAge(int age)
{
// write method code here
}
public BloodData getBloodData()
{
// write method code here
}
public void setBloodData(BloodData b)
{
// write method code here
}
}
TestBloodData.java
public class TestBloodData
{
public static void main(String[] args)
{
BloodData b1 = new BloodData();
BloodData b2 = new BloodData("A", "-");
display(b1);
display(b2);
b1.setBloodType("AB");
b1.setRhFactor("-");
display(b1);
}
public static void display(BloodData b)
{
System.out.println("The blood is type " + b.getBloodType() +
b.getRhFactor());
}
}
TestPatient.java
public class TestPatient
{
public static void main(String[] args)
{
Patient p1 = new Patient();
Patient p2 = new Patient("1234", 35, "B", "+");
BloodData b2 = new BloodData("A", "-");
display(p1);
display(p2);
p1.setId("3456");
p1.setAge(42);
BloodData b = new BloodData("AB", "-");
p1.setBloodData(b);
display(p1);
}
public static void display(Patient p)
{
BloodData bt = p.getBloodData();
System.out.println("Patient #" + p.getId() + " age: " + +
p.getAge() +
"\n The blood is type " + bt.getBloodType() +
bt.getRhFactor());
}
}
Please find the answer, all the details are coded as per the instructions given in the question. Both the Test program is executed and output is attached here for the reference.
BloodData.java
public class BloodData { //fields private String bType; private String rh; //default constructor public BloodData() { this.bType = "O"; this.rh = "+"; } //Overloaded Constructor public BloodData(String bType, String rh) { this.bType = bType; this.rh = rh; } public String getBloodType() { return bType; } public void setBloodType(String bType) { this.bType = bType; } public String getRhFactor() { return rh; } public void setRhFactor(String rh) { this.rh = rh; } }
Patient.java
public class Patient { // declare private variables here private String id; private int age; private BloodData bloodData; //default constructor public Patient() { // add default constructor values here this.id = "0"; this.age = 0; this.bloodData = new BloodData(); } //overloaded constructor public Patient(String id, int age, String bType, String rhFactor) { // add constructor logic here this.id = id; this.age = age; this.bloodData = new BloodData(bType,rhFactor); } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public BloodData getBloodData() { return bloodData; } public void setBloodData(BloodData bloodData) { this.bloodData = bloodData; } }
TestBloodData.java
public class TestBloodData { public static void main(String[] args) { BloodData b1 = new BloodData(); BloodData b2 = new BloodData("A", "-"); display(b1); display(b2); b1.setBloodType("AB"); b1.setRhFactor("-"); display(b1); } public static void display(BloodData b) { System.out.println("The blood is type " + b.getBloodType() + b.getRhFactor()); } }
Output
TestPatient.java
public class TestPatient { public static void main(String[] args) { Patient p1 = new Patient(); Patient p2 = new Patient("1234", 35, "B", "+"); BloodData b2 = new BloodData("A", "-"); display(p1); display(p2); p1.setId("3456"); p1.setAge(42); BloodData b = new BloodData("AB", "-"); p1.setBloodData(b); display(p1); } public static void display(Patient p) { BloodData bt = p.getBloodData(); System.out.println("Patient #" + p.getId() + " age: " + + p.getAge() + "\n The blood is type " + bt.getBloodType() + bt.getRhFactor()); } }
Output:
Modified class is highlighted. Please let us know in the comments if you face any problems.