Disease class givenSolutionpackage disease class Person pri
Solution
package disease;
class Person {
private String name;
 private int health;
public Person(String name, int health) {
 this.name = name;
 this.health = health;
 }
public int getHealth() {
 return health;
 }
public void setHealth(int health) {
 this.health = health;
 }
public String getName() {
 return name;
 }
@Override
 public String toString() {
 return \"Person{\" + \"Name=\" + name + \", Health=\" + health + \'}\';
 }
   
 }
-----------------------------------------------------------------------------------------------------
package disease;
public abstract class Disease {
public final String name;
 protected int severity;
 protected double chanceOfTransmitting;
 protected String preconditions;
 protected String postconditions;
public double getChanceOfTransmitting() {
 return chanceOfTransmitting;
 }
public Disease(String name, int severity, double chanceOfTransmitting) {
 this.name = name;
 this.severity = severity;
 this.chanceOfTransmitting = chanceOfTransmitting;
 }
public int getSeverity() {
 return severity;
 }
public String getName() {
 return name;
 }
   
 public abstract void impact(Person P);
   
 public abstract void treat();
@Override
 public String toString() {
 return \"Disease{\" + \"Name=\" + name + \", Severity=\" + severity + \", Chances Of Transmitting=\" + chanceOfTransmitting + \'}\';
 }
}
-------------------------------------------------------------------------------------------------------
package disease;
 public class Zika extends Disease {
public Zika(int severity, double chanceOfTransmitting) {
 super(\"Zika\", severity%11, chanceOfTransmitting);
 }
@Override
 public void impact(Person P) {
 this.postconditions = \"\";
 this.preconditions = \"\";
 P.setHealth(P.getHealth()-severity);
 this.severity = this.severity -1;
 this.chanceOfTransmitting = this.chanceOfTransmitting * 0.9;
 System.out.println(P.toString());
 System.out.println(this.toString());
 }
@Override
 public void treat() {
 this.postconditions = \"\";
 this.preconditions = \"\";
 this.severity = this.severity/2;
 this.chanceOfTransmitting = this.chanceOfTransmitting/2;
 System.out.println(this.toString());
}
 }
---------------------------------------------------------------------------------------------------------
package disease;
public class Plague extends Disease{
public Plague(int severity, double chanceOfTransmitting) {
 super(\"Plague\", severity%101, chanceOfTransmitting);
 }
@Override
 public void impact(Person P) {
 this.postconditions = \"\";
 this.preconditions = \"\";
 if(this.severity>50)
 P.setHealth(P.getHealth()-5);
 else if(this.severity<=50 && this.severity>0)
 P.setHealth(P.getHealth()-2);
 System.out.println(P.toString());
 System.out.println(this.toString());
 }
@Override
 public void treat() {
 this.postconditions = \"\";
 this.preconditions = \"\";
 this.severity = this.severity / 3;
 System.out.println(this.toString());
 }
 }
----------------------------------------------------------------------------------------
package disease;
import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
/**
 *
 * @author Gojkid
 */
 public class Driver {
 private static Person p;
 private static Plague pl;
 private static Zika z;
public static void main(String args[]) throws IOException
 {
 int n;
 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
 System.out.println(\"1: Add a person : \");
 System.out.println(\"2: Simulate Zika on the person\");
 System.out.println(\"3: Simulate Plague on the person\");
 System.out.println(\"4: Treat the person\");
 System.out.println(\"5: Exit\");
 do{
 System.out.println(\"Enter your choice: \");
 n=Integer.parseInt(br.readLine());
 switch(n){
 case 1:
 System.out.println(\"Enter the name of the person: \");
 String name=br.readLine();
 System.out.println(\"Enter the health of the person: \");
 int health=Integer.parseInt(br.readLine());
 p = new Person(name,health);
 break;
case 2:
 System.out.println(\"Enter the severity of Zika: \");
 int severity=Integer.parseInt(br.readLine());
 System.out.println(\"Enter the chancces of transmitting Zika: \");
 double chance=Double.parseDouble(br.readLine());
 z = new Zika(severity,chance);
 z.impact(p);
 break;
 case 3:
 System.out.println(\"Enter the severity of Plague: \");
 int sever=Integer.parseInt(br.readLine());
 System.out.println(\"Enter the chancces of transmitting Plague: \");
 double chances=Double.parseDouble(br.readLine());
 pl = new Plague(sever,chances);
 pl.impact(p);
 break;
case 4:
 if(p!=null)
 {
 if(z!=null)
 {
 z.treat();
 }
 else if(pl!=null)
 {
 pl.treat();
 }
 }
 break;
case 5:
 break;
default:
 System.out.println(\"Not a correct choice\");
 }
 }while(n!=5);
 }
 }




