In: Computer Science
Problem
Write in drjava is fine.
Using the classes from Assignment #2, do the following:
The Vegetable class should have the usual constructors (default and parameterized), get (accessor) and set (mutator) methods for each attribute, and a toString method
Child classes should call parent methods whenever possible to minimize code duplication.
The driver program must test all the methods in the Vegetable class, and show that the new methods added to the Plant class can be called by each of the child classes. Include comments in your output to describe what you are testing, for example System.out.println(“testing Plant toString, accessor and mutator”);. Print out some blank lines in the output to make it easier to read and understand what is being output.
Assignment Submission:
Submit a print-out of the Plant and Vegetable classes, the driver file and a sample of the output. Also include a UML diagram of the classes involved. (Use tables in Word to create the various classes. Remember to use the correct arrows between the classes)
Marking Checklist
private String lifespan;
class Plant{ String name; String lifeSpan; //Default Constructor public Plant(){ } //Parametrized Constructor public Plant(String name,String lifeSpan){ this.name=name; this.lifeSpan=lifeSpan; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLifeSpan() { return lifeSpan; } public void setLifeSpan(String lifeSpan) { this.lifeSpan = lifeSpan; } public String toString(){ return "\n\tName:"+name+"\n\tLifeSpan:"+lifeSpan; } } class Tree extends Plant{ float height; //Default Constructor public Tree(){ } //Parametrized Constructor public Tree(float height,String name,String lifeSpan){ super(name,lifeSpan); //Super Class Constructor this.height=height; } public float getHeight() { return height; } public void setHeight(float height) { this.height = height; } public String toString(){ return "\n\t"+super.toString()+"\n\tHeight:"+height; } } class Flower extends Plant{ String color; //Default Constructor public Flower(){ } //Parametrized Constructor public Flower(String color,String name,String lifeSpan){ super(name,lifeSpan); //Super Class Constructor this.color=color; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String toString(){ return "\n\t"+super.toString()+"\n\tColor:"+color; } } public class drjava{ public static void main(String args[]){ System.out.println("\n\nPlant DETAILS\n"); Plant plant=new Plant(); System.out.println("Testing Plant Setter and Getter and toString Methods"); plant.setName("Rose"); plant.setLifeSpan("2Years"); System.out.println("Plant Name:"+plant.getName()); System.out.println("Plant LifeSpan:"+plant.getLifeSpan()); System.out.println("Plant toString:"+plant.toString()); System.out.println("\n\nTREE DETAILS\n"); Tree tree=new Tree(); System.out.println("Testing Tree Setter and Getter and toString Methods"); tree.setName(plant.getName()); tree.setLifeSpan(plant.getLifeSpan()); tree.setHeight(3.565f); System.out.println("Tree Name:"+tree.getName()); System.out.println("Tree Height:"+tree.getHeight()); System.out.println("Tree LifeSpan"+tree.getLifeSpan()); System.out.println("Tree toString:"+tree.toString()); System.out.println("\n\nFlower DETAILS\n"); Flower flower=new Flower(); System.out.println("Testing Flower Setter and Getter and toString Methods"); flower.setName("Rose Flower"); flower.setLifeSpan("2days"); flower.setColor("Red"); System.out.println("Flower Name:"+flower.getName()); System.out.println("Flower Lifespan:"+flower.getLifeSpan()); System.out.println("Flower Color:"+flower.getColor()); System.out.println("Flower toString:\n"+flower.toString()); } }
please put each class and driver,thank you!
/******************************Plant.java***************************/
import java.util.ArrayList;
/**
* The Class Plant.
*/
public abstract class Plant {
/** The name. */
private String name;
/** The lifespan. */
private String lifespan;
/**
* Instantiates a new plant.
*/
public Plant() {
name = "no name";
lifespan = "do not know";
}
/**
* Instantiates a new plant.
*
* @param newName the new name
* @param newlife the newlife
*/
public Plant(String newName, String newlife) {
name = newName;
lifespan = newlife;
}
/**
* Gets the name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Gets the life.
*
* @return the life
*/
public String getlife() {
return lifespan;
}
/**
* Sets the name.
*
* @param newName the new name
*/
public void setName(String newName) {
name = newName;
}
/**
* Sets the life span.
*
* @param newlife the new life span
*/
public void setLifeSpan(String newlife) {
lifespan = newlife;
}
/**
* Sets the.
*
* @param newName the new name
* @param newlife the newlife
*/
public void set(String newName, String newlife)
{
name = newName;
lifespan = newlife;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
return "Name:" + name +
"\nLifeSpan:" + lifespan;
}
/**
* Gets the botanical name.
*
* @return the botanical name
*/
public abstract String getBotanicalName();
/**
* Usage.
*
* @return the array list
*/
public abstract ArrayList<String> usage();
}
/******************************************Vegetable.java*********************************************/
import java.util.ArrayList;
/**
* The Class Vegetable.
*/
public class Vegetable extends Plant {
/** The flavor. */
private String flavor;
/** The origin. */
private String origin;
/** The dishes. */
private ArrayList<String> dishes;
/** The botnical name. */
private String botnicalName;
/** The uses. */
private ArrayList<String> uses;
/**
* Instantiates a new vegetable.
*
* @param newName the new name
* @param newlife the newlife
*/
public Vegetable(String newName, String newlife)
{
super(newName, newlife);
this.flavor = "N/A";
}
/**
* Instantiates a new vegetable.
*
* @param newName the new name
* @param newlife the newlife
* @param flavor the flavor
*/
public Vegetable(String newName, String newlife,
String flavor) {
super(newName, newlife);
this.flavor = flavor;
}
/**
* Gets the flavor.
*
* @return the flavor
*/
public String getFlavor() {
return flavor;
}
/**
* Sets the flavor.
*
* @param flavor the new flavor
*/
public void setFlavor(String flavor) {
this.flavor = flavor;
}
/**
* Gets the origin.
*
* @return the origin
*/
public String getOrigin() {
return origin;
}
/**
* Gets the dishes.
*
* @return the dishes
*/
public ArrayList<String> getDishes() {
return dishes;
}
/**
* Sets the dishes.
*
* @param dishes the new dishes
*/
public void setDishes(ArrayList<String> dishes)
{
this.dishes = dishes;
}
/**
* Sets the origin.
*
* @param origin the new origin
*/
public void setOrigin(String origin) {
this.origin = origin;
}
/**
* Gets the botnical name.
*
* @return the botnical name
*/
public String getBotnicalName() {
return botnicalName;
}
/**
* Sets the botnical name.
*
* @param botnicalName the new botnical name
*/
public void setBotnicalName(String botnicalName)
{
this.botnicalName =
botnicalName;
}
/**
* Gets the uses.
*
* @return the uses
*/
public ArrayList<String> getUses() {
return uses;
}
/**
* Sets the uses.
*
* @param uses the new uses
*/
public void setUses(ArrayList<String> uses)
{
this.uses = uses;
}
/* (non-Javadoc)
* @see Plant#getBotanicalName()
*/
@Override
public String getBotanicalName() {
return botnicalName;
}
/* (non-Javadoc)
* @see Plant#usage()
*/
@Override
public ArrayList<String> usage() {
return uses;
}
/* (non-Javadoc)
* @see Plant#toString()
*/
@Override
public String toString() {
return super.toString() +
"\nBotnicalName: " + botnicalName + "\nOrigin: " + origin +
"\nDishes: " + dishes
+ "\nUses: " + uses;
}
}
/****************************************TestPlant.java******************/
import java.util.ArrayList;
/**
* The Class TestPlant.
*/
public class TestPlant {
/**
* The main method.
*
* @param args the arguments
*/
public static void main(String[] args) {
Plant plant = new
Vegetable("Mango", "300 Years");
((Vegetable)
plant).setOrigin("southern Asia");
((Vegetable)
plant).setFlavor("Sweet");
ArrayList<String> dishes =
new ArrayList<>();
dishes.add("Raw Mango
Rasam");
dishes.add("Corn and Raw Mango
Salad");
dishes.add("Chilled Mango
Cheesecake");
dishes.add("Mango and Mint
Kheer");
dishes.add("Eggless Mango
Mousse");
((Vegetable)
plant).setDishes(dishes);
((Vegetable)
plant).setBotnicalName("Mangifera indica");
ArrayList<String> uses = new
ArrayList<>();
uses.add("Food");
uses.add("House");
uses.add("Wood");
((Vegetable)
plant).setUses(uses);
System.out.println(plant.toString());
}
}
/*****************output***********************/
Name:Mango
LifeSpan:300 Years
BotnicalName: Mangifera indica
Origin: southern Asia
Dishes: [Raw Mango Rasam, Corn and Raw Mango Salad, Chilled Mango
Cheesecake, Mango and Mint Kheer, Eggless Mango Mousse]
Uses: [Food, House, Wood]
Please let me know if you have any doubt or modify the answer, Thanks :)