diff --git a/FarmerFroilan.puml b/FarmerFroilan.puml new file mode 100644 index 00000000..4f29b0d1 --- /dev/null +++ b/FarmerFroilan.puml @@ -0,0 +1,171 @@ +@startuml +'https://plantuml.com/class-diagram + +Abstract Class Animal{ +eat(Corn) +makeNoise() +} + +Abstract Class Shelter{ +add() +remove() +get() +} + +interface Edible{ + +} +interface Noisemaker{ +makeNoise() +} +interface Rideable +Class Botanist{ +Plant(Crop crop, CropRow) +} +Abstract Class Person{ +eat(Edible) +MakeNoise() +getName() +} +Class Farmer{ +mount() +dismount() +operate(tractor) +feed(Animal) +} + + +Class CropRow{ +get(Crops) +add(Crop) +TomatoPlant +CornStalk +} +Class Crop{ +isFertilized() +isHarvested() + +} +Class TomatoPlant{ +yield(tomato) + +} +Class CornStalk{ +yield(corn) + +} +interface Produce{ +yield(food) +isFertilized() +} + +interface Rider{ + +Mount(riding) +Dismount(riding) +} + +Class Field{ +CropRow +} + +Abstract Class Vehicle{ +drive() +park() +makeNoise() +} +Abstract Class AirCraft{ +Fly() +Land() +} + +interface FarmVehicle{ +Operate() +} + +Class Farm{ +FarmHouse Instance +ArrayList ChickenCoop & Stables +getHouse() +getVehicles() +} + +Class ChickenCoop{ +ArrayList +add(chicken) +remove(chicken) +get(chicken) +} + +Class Stables{ +add(Horse) +remove(Horse) +get(Horse) +} +interface Eater{ +eat(Edible) +} +Class FoodInventory{ +Corns +Tomatos +Eggs +} +Class FarmHouse{ +ArrayList + +} +Class Tractor{ +Harvest(Crop crop) +makeNoise() +operate() +} + +Class CropDuster{ +operate() +fertilized(CropRow) +} + +Class Chicken{ +yield(egg) +isFertilized() +} +Class Pilot{ +fly(AirCraft) +operate(CropDuster) +mount() +dismount() +} +Shelter <-- FarmHouse +Shelter <-- ChickenCoop +Shelter <-- FoodInventory +Shelter <-- Stables +Eater <-- Person +Person <|-- Botanist +Botanist <|-- Farmer +Animal <|--- Horse +Rideable <-- Horse +Animal <|-- Chicken +Produce <-- Chicken + +Vehicle <-- AirCraft +AirCraft <-- CropDuster +FarmVehicle <-- CropDuster + +Crop <|-- TomatoPlant +Crop <|-- CornStalk +Produce <-- Crop +Edible <-- Corn +Edible <-- Tomato +Edible <-- Egg +Noisemaker <-- Animal +Noisemaker <-- Person +Farmer <|-- Pilot +Shelter <|-- Field + +Noisemaker <-- Vehicle +Rideable <- Vehicle +FarmVehicle <-- Tractor +Eater <-- Animal +Person -> Rider +Shelter <-- CropRow +@enduml \ No newline at end of file diff --git a/pom.xml b/pom.xml index 69a3b878..8f6247d0 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,14 @@ com.zipcodewilmington froilans-farm 1.0-SNAPSHOT + + + junit + junit + RELEASE + test + + \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/DayInTheFarm.java b/src/main/java/com/zipcodewilmington/froilansfarm/DayInTheFarm.java new file mode 100644 index 00000000..84c62a57 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/DayInTheFarm.java @@ -0,0 +1,296 @@ +package com.zipcodewilmington.froilansfarm; + +import com.zipcodewilmington.froilansfarm.animal.Chicken; +import com.zipcodewilmington.froilansfarm.animal.Horse; +import com.zipcodewilmington.froilansfarm.crops.BroccoliPlant; +import com.zipcodewilmington.froilansfarm.crops.CornStalk; +import com.zipcodewilmington.froilansfarm.crops.TomatoPlant; +import com.zipcodewilmington.froilansfarm.edible.Broccoli; +import com.zipcodewilmington.froilansfarm.edible.Corn; +import com.zipcodewilmington.froilansfarm.edible.Egg; +import com.zipcodewilmington.froilansfarm.edible.Tomato; +import com.zipcodewilmington.froilansfarm.person.Farmer; +import com.zipcodewilmington.froilansfarm.person.Pilot; +import com.zipcodewilmington.froilansfarm.shelter.*; +import com.zipcodewilmington.froilansfarm.vehicle.CropDuster; +import com.zipcodewilmington.froilansfarm.vehicle.Tractor; + +public class DayInTheFarm{ + + /*This class will be passed a day, and return the events of the day that + occured based on the class + interactions First, we create instances of the farm and everything on it. + I know I could make factory classes for this nonsense. But.....nah.*/ + + DayInTheFarm(){} + Egg egg=new Egg(); + Corn corn=new Corn(); + Broccoli broccoli=new Broccoli(); + Tomato tomato=new Tomato(); //Lets call the whole thing off~ + Tractor tractor=new Tractor("Dumb tractor"); + CropDuster duster=new CropDuster("A stupid plane"); + Farm theFarm=new Farm(); + Farmer froilan=new Farmer("Froilan"); + Pilot froilana=new Pilot("Froilana"); + + Horse h1=new Horse("SeaBiscuit"); + Horse h2=new Horse("Black Beauty"); + Horse h3=new Horse("Zorro's horse"); + Horse h4=new Horse("Tina's Favorite"); + Horse h5=new Horse("Applejack"); + Horse h6=new Horse("Clipclop"); + Horse h7=new Horse("That one horse from Shadow of the Colossus"); + Horse h8=new Horse("Elmer"); + Horse h9=new Horse("Look guys, there's only so many horse names I can think up."); + Horse h10=new Horse("The Last horseName"); + Chicken c1 = new Chicken("Oh god we're naming the chickens"); + Chicken c2 = new Chicken("Eggmaker Deluxe"); + Chicken c3 = new Chicken("Usopp"); + Chicken c4 = new Chicken("The lion, like from Wizard of oz."); + Chicken c5 = new Chicken("Hercule"); + Chicken c6 = new Chicken("Mr. Satan"); + Chicken c7 = new Chicken("Get it? They're all Cowardly."); + Chicken c8 = new Chicken("So they're all chickens. Anime Chickens."); + Chicken c9 = new Chicken("Hoo boy, still got a lot to name, huh?"); + Chicken c10 = new Chicken("Beaky"); + Chicken c11 = new Chicken("Squawker"); + Chicken c12 = new Chicken("Omlette"); + Chicken c13 = new Chicken("The Colonel"); + Chicken c14 = new Chicken("Mr. Bawk b-gawk"); + Chicken c15 = new Chicken("The last of the chickens"); + + Stables s1=new Stables(); + Stables s2=new Stables(); + Stables s3=new Stables(); + + ChickenCoop coop1=new ChickenCoop(); + ChickenCoop coop2=new ChickenCoop(); + ChickenCoop coop3=new ChickenCoop(); + ChickenCoop coop4=new ChickenCoop(); + + Field theField=new Field(); + FoodInventory silo=new FoodInventory(); + + + public void justBuildTheStupidFarmAlready(){ + //First our farmers moe into the Farmhouse. + theFarm.moveIn(froilan); + theFarm.moveIn(froilana); + //They build coops, and fill them with the 15 chicken they bought. + theFarm.addCoop(new ChickenCoop()); + theFarm.addCoop(new ChickenCoop()); + theFarm.addCoop(new ChickenCoop()); + theFarm.addCoop(new ChickenCoop()); + theFarm.getChickenCoops().get(0).add(c1); + theFarm.getChickenCoops().get(0).add(c2); + theFarm.getChickenCoops().get(0).add(c3); + theFarm.getChickenCoops().get(0).add(c4); + theFarm.getChickenCoops().get(1).add(c5); + theFarm.getChickenCoops().get(1).add(c6); + theFarm.getChickenCoops().get(1).add(c7); + theFarm.getChickenCoops().get(1).add(c8); + theFarm.getChickenCoops().get(2).add(c9); + theFarm.getChickenCoops().get(2).add(c10); + theFarm.getChickenCoops().get(2).add(c11); + theFarm.getChickenCoops().get(2).add(c12); + theFarm.getChickenCoops().get(3).add(c13); + theFarm.getChickenCoops().get(3).add(c14); + theFarm.getChickenCoops().get(3).add(c15); + //They then built stables, to store their 10 horses. + theFarm.addStable(new Stables()); + theFarm.addStable(new Stables()); + theFarm.addStable(new Stables()); + /* theFarm.getStables().get(0).add(h1); + theFarm.getStables().get(0).add(h2); + theFarm.getStables().get(0).add(h3); + theFarm.getStables().get(0).add(h4); + theFarm.getStables().get(1).add(h5); + theFarm.getStables().get(1).add(h6); + theFarm.getStables().get(1).add(h7); + theFarm.getStables().get(1).add(h8); + theFarm.getStables().get(2).add(h9); + theFarm.getStables().get(2).add(h10);*/ + //They make rows in the field to plant the crops + theField.add(new CropRow()); + theField.add(new CropRow()); + theField.add(new CropRow()); + theField.add(new CropRow()); + theField.add(new CropRow()); + //Planting corn in row 1, tomato in row 2, and whatever else they felt like. + for(int i=0;i<150;i++){ + theField.get(0).add(new CornStalk()); + theField.get(2).add(new CornStalk()); + theField.get(4).add(new CornStalk()); + } + for(int i=0;i<100;i++){ + theField.get(1).add(new TomatoPlant()); + theField.get(3).add(new BroccoliPlant()); + } + //Start everyone out with food so they don't instantly starve. + for (int i=0;i<150;i++){silo.add(corn);} + for (int i=0;i<20;i++){silo.add(tomato);} + for (int i=0;i<20;i++){silo.add(egg);} + + } + + public void goodMorning(){ + System.out.println("The sun's up lazybones, get to work! It's morning. First we gotta ride these horses, get em some excersize."); + froilan.mount(h1); + froilan.dismount(h1); + froilan.mount(h2); + froilan.dismount(h2); + froilan.mount(h3); + froilan.dismount(h3); + froilan.mount(h4); + froilan.dismount(h4); + froilan.mount(h5); + froilan.dismount(h5); + froilana.mount(h6); + froilana.dismount(h6); + froilana.mount(h7); + froilana.dismount(h7); + froilana.mount(h8); + froilana.dismount(h8); + froilana.mount(h9); + froilana.dismount(h9); + froilana.mount(h10); + froilana.dismount(h10); + + System.out.println("Time to feed the horses!"); + feedHorse(h1); + feedHorse(h2); + feedHorse(h3); + feedHorse(h4); + feedHorse(h5); + feedHorse(h6); + feedHorse(h7); + feedHorse(h8); + feedHorse(h9); + feedHorse(h10); + + System.out.println("And now the chickens need food"); + feedChicken(c1); + feedChicken(c2); + feedChicken(c3); + feedChicken(c4); + feedChicken(c5); + feedChicken(c6); + feedChicken(c7); + feedChicken(c8); + feedChicken(c9); + feedChicken(c10); + feedChicken(c12); + feedChicken(c13); + feedChicken(c14); + feedChicken(c15); + + System.out.println("Whew! Now that all that's done, Foilan and his sister can take a break to eat."); + froilanBreakfast(froilan); + froilanaBreakfast(froilana); + } + //Horseys are big, they need 3 ear of corn a day + public void feedHorse(Horse h){ + + h.eat(corn, silo); + h.eat(corn, silo); + h.eat(corn, silo); + } + //chickens only eat 2 corn a day + public void feedChicken(Chicken c){ + c.eat(corn, silo); + c.eat(corn, silo); + } + + public void froilanBreakfast(Farmer f){ + f.eat(corn, silo); + f.eat(tomato, silo); + f.eat(tomato, silo); + f.eat(egg, silo); + f.eat(egg, silo); + f.eat(egg, silo); + f.eat(egg, silo); + f.eat(egg, silo); + + + } + public void froilanaBreakfast(Pilot f){ + f.eat(corn, silo); + f.eat(egg, silo); + f.eat(corn, silo); + f.eat(egg, silo); + f.eat(tomato, silo); + } + + public void monday(){ + goodMorning(); + System.out.println("Monday! Time for froilana to fly and fertilize the crops!"); + froilana.mount(duster); + duster.operate(froilana); + duster.fly(); + duster.fertilize(theField.get(0)); + duster.fertilize(theField.get(1)); + duster.fertilize(theField.get(2)); + duster.fertilize(theField.get(3)); + duster.fertilize(theField.get(4)); + duster.land(); + } + public void tuesday(){ + goodMorning(); + System.out.println("Tuesday! Time to harvest!"); + froilan.mount(tractor); + tractor.operate(froilan); + tractor.harvest(theField.get(0),silo); + tractor.harvest(theField.get(1),silo); + tractor.harvest(theField.get(2),silo); + tractor.harvest(theField.get(3),silo); + tractor.harvest(theField.get(4),silo); + System.out.println("Food Storage has: "+silo.size()+" edible items."); + + } + public void wednesday(){ + goodMorning(); + System.out.println("EGGS!"); + for(ChickenCoop coop: theFarm.getChickenCoops()){ + for(int i=0;i, Noisemaker { + String name; + + public Animal(String name){ + this.name = name; + } + + public void eat(Corn food, FoodInventory silo){ + //Will remove an instance of a Corn edible object from the given foodInventory -> DONE + //Maybe if object doesn't exist, give a message that the animal is hungry -> DONE + //For debugging purposes at least, print out given foodInventory -> + if(silo.remove(food)){ + System.out.println(this.name.toString()+" ate "+food.toString()); + } + else{ + System.out.println(this.name.toString()+" was not completely fed and is still hungry!"); + } + + } + + public String getName(){ + return name; + } + + public void setName(String name){ + this.name = name; + } + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/animal/Chicken.java b/src/main/java/com/zipcodewilmington/froilansfarm/animal/Chicken.java new file mode 100644 index 00000000..80f0a2b4 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/animal/Chicken.java @@ -0,0 +1,40 @@ +package com.zipcodewilmington.froilansfarm.animal; + +import com.zipcodewilmington.froilansfarm.edible.Corn; +import com.zipcodewilmington.froilansfarm.edible.Egg; +import com.zipcodewilmington.froilansfarm.interfaces.Produce; + +public class Chicken extends Animal implements Produce { + boolean isFertilized = false; + + public Chicken(String name){ + super(name); + } + + //whatever calls yield here has to put the egg in the FoodInventory + public Egg yield(){ + if(!isFertilized){ + System.out.println(name+" laid an egg!"); + return new Egg(); + } + return null; + } + + public void fertilizeEgg(){ + isFertilized = true; + } + + public boolean isFertilized(){ + return isFertilized; + } + + public String makeNoise() { + return "Cock-a-doodle-doo"; + } + + @Override + public String toString(){ + return "Chicken"; + } + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/animal/Horse.java b/src/main/java/com/zipcodewilmington/froilansfarm/animal/Horse.java new file mode 100644 index 00000000..638a5434 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/animal/Horse.java @@ -0,0 +1,20 @@ +package com.zipcodewilmington.froilansfarm.animal; + +import com.zipcodewilmington.froilansfarm.interfaces.Ridable; + +public class Horse extends Animal implements Ridable { + + public Horse(String name){ + super(name); + } + + + public String makeNoise() { + return "Nayyy"; + } + + @Override + public String toString(){ + return name; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/crops/BroccoliPlant.java b/src/main/java/com/zipcodewilmington/froilansfarm/crops/BroccoliPlant.java new file mode 100644 index 00000000..e370c244 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/crops/BroccoliPlant.java @@ -0,0 +1,30 @@ +package com.zipcodewilmington.froilansfarm.crops; + +import com.zipcodewilmington.froilansfarm.edible.Broccoli; +import com.zipcodewilmington.froilansfarm.edible.Corn; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class BroccoliPlant extends Crop { + + public BroccoliPlant(){ + + } + + //IF isFertilized is true and isHarvested is false -> DONE + //Then return a Corn, and set isHarvested to true -> DONE + //caller will need to store returned food object some place + public Edible yield() { + if(isFertilized() && !isHarvested()){ + harvestCrop(); + return new Broccoli(); + } + else{ + return null; + } + } + + @Override + public String toString(){ + return "Broccoli Plant"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/crops/CornStalk.java b/src/main/java/com/zipcodewilmington/froilansfarm/crops/CornStalk.java new file mode 100644 index 00000000..1ca135e5 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/crops/CornStalk.java @@ -0,0 +1,30 @@ +package com.zipcodewilmington.froilansfarm.crops; + +import com.zipcodewilmington.froilansfarm.edible.Corn; +import com.zipcodewilmington.froilansfarm.edible.Tomato; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class CornStalk extends Crop{ + + public CornStalk(){ + + } + + //IF isFertilized is true and isHarvested is false -> DONE + //Then return a Corn, and set isHarvested to true -> DONE + //caller will need to store returned food object some place + public Edible yield() { + if(isFertilized() && !isHarvested()){ + harvestCrop(); + return new Corn(); + } + else{ + return null; + } + } + + @Override + public String toString(){ + return "Corn Stalk"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/crops/Crop.java b/src/main/java/com/zipcodewilmington/froilansfarm/crops/Crop.java new file mode 100644 index 00000000..12907c77 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/crops/Crop.java @@ -0,0 +1,32 @@ +package com.zipcodewilmington.froilansfarm.crops; + +import com.zipcodewilmington.froilansfarm.interfaces.Edible; +import com.zipcodewilmington.froilansfarm.interfaces.Produce; + +public abstract class Crop implements Produce { + private boolean isFertilized = false; + private boolean isHarvested = false; + + + public Crop(){ + } + + public void fertilizeCrop() { + isFertilized = true; + } + + public void harvestCrop() { + isHarvested = true; + } + + public boolean isFertilized() { + return isFertilized; + } + + + public boolean isHarvested() { + return isHarvested; + } + + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/crops/TomatoPlant.java b/src/main/java/com/zipcodewilmington/froilansfarm/crops/TomatoPlant.java new file mode 100644 index 00000000..1c619c69 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/crops/TomatoPlant.java @@ -0,0 +1,30 @@ +package com.zipcodewilmington.froilansfarm.crops; + +import com.zipcodewilmington.froilansfarm.edible.Corn; +import com.zipcodewilmington.froilansfarm.edible.Tomato; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class TomatoPlant extends Crop{ + + public TomatoPlant(){ + + } + + //IF isFertilized is true and isHarvested is false -> DONE + //Then return a Tomato, and set isHarvested to true -> DONE + //caller will need to store returned food object some place + public Edible yield() { + if(isFertilized() && !isHarvested()){ + harvestCrop(); + return new Tomato(); + } + else{ + return null; + } + } + + @Override + public String toString(){ + return "Tomato Plant"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/edible/Broccoli.java b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Broccoli.java new file mode 100644 index 00000000..5365aa01 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Broccoli.java @@ -0,0 +1,12 @@ +package com.zipcodewilmington.froilansfarm.edible; + +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class Broccoli implements Edible { + @Override + public String toString(){ + return "Broccoli"; + } +} + + diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/edible/Corn.java b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Corn.java new file mode 100644 index 00000000..1ba872b7 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Corn.java @@ -0,0 +1,11 @@ +package com.zipcodewilmington.froilansfarm.edible; + +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class Corn implements Edible { + + @Override + public String toString(){ + return "Corn"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/edible/Egg.java b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Egg.java new file mode 100644 index 00000000..bd4a4a78 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Egg.java @@ -0,0 +1,12 @@ +package com.zipcodewilmington.froilansfarm.edible; + +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class Egg implements Edible { + + + @Override + public String toString(){ + return "Egg"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/edible/Tomato.java b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Tomato.java new file mode 100644 index 00000000..845d0dad --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/edible/Tomato.java @@ -0,0 +1,11 @@ +package com.zipcodewilmington.froilansfarm.edible; + +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +public class Tomato implements Edible { + + @Override + public String toString(){ + return "Tomato"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java new file mode 100644 index 00000000..f3ff9053 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Eater.java @@ -0,0 +1,8 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +import com.zipcodewilmington.froilansfarm.shelter.FoodInventory; + +public interface Eater { + + public void eat(T food, FoodInventory whatever); +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Edible.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Edible.java new file mode 100644 index 00000000..0c878741 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Edible.java @@ -0,0 +1,6 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Edible { + + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/FarmVehicle.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/FarmVehicle.java new file mode 100644 index 00000000..620c4534 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/FarmVehicle.java @@ -0,0 +1,11 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +import com.zipcodewilmington.froilansfarm.shelter.CropRow; +import com.zipcodewilmington.froilansfarm.shelter.FoodInventory; + +public interface FarmVehicle { + + //Prints a string letting user know farm vehicle is operating + public void operate(); + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Noisemaker.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Noisemaker.java new file mode 100644 index 00000000..2483ab2f --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Noisemaker.java @@ -0,0 +1,8 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Noisemaker { + + //Anything that can make noise just prints a string of whatever + //Dumb noise it makes + String makeNoise(); +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java new file mode 100644 index 00000000..1ae9e20e --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Produce.java @@ -0,0 +1,7 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Produce { + + public Edible yield(); + public boolean isFertilized(); +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Ridable.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Ridable.java new file mode 100644 index 00000000..dc24a385 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Ridable.java @@ -0,0 +1,5 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Ridable { + //Only purpose is to determine what objects can be ridden +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rider.java b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rider.java new file mode 100644 index 00000000..bcb037fe --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/interfaces/Rider.java @@ -0,0 +1,10 @@ +package com.zipcodewilmington.froilansfarm.interfaces; + +public interface Rider { + + //Either more string fluff, or boolean checks to ensure + // vehicles can only operate if they're being ridden. + //In either case, get name of ridable to use in the string. + public void mount(T mountable); + public void dismount(T mountable); +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/person/Botanist.java b/src/main/java/com/zipcodewilmington/froilansfarm/person/Botanist.java new file mode 100644 index 00000000..4b4754b1 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/person/Botanist.java @@ -0,0 +1,17 @@ +package com.zipcodewilmington.froilansfarm.person; + +import com.zipcodewilmington.froilansfarm.crops.Crop; +import com.zipcodewilmington.froilansfarm.interfaces.Ridable; +import com.zipcodewilmington.froilansfarm.shelter.CropRow; + +public class Botanist extends Person{ + + public Botanist(String name){ + super(name); + } + + //Passes Crop objects into croprows -> DONE + public void plantCrops(Crop crop, CropRow cropRow){ + cropRow.add(crop); + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/person/Farmer.java b/src/main/java/com/zipcodewilmington/froilansfarm/person/Farmer.java new file mode 100644 index 00000000..f596073d --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/person/Farmer.java @@ -0,0 +1,41 @@ +package com.zipcodewilmington.froilansfarm.person; + +import com.zipcodewilmington.froilansfarm.animal.Animal; +import com.zipcodewilmington.froilansfarm.crops.Crop; +import com.zipcodewilmington.froilansfarm.edible.Corn; +import com.zipcodewilmington.froilansfarm.interfaces.Ridable; +import com.zipcodewilmington.froilansfarm.shelter.ChickenCoop; +import com.zipcodewilmington.froilansfarm.shelter.CropRow; +import com.zipcodewilmington.froilansfarm.shelter.FoodInventory; +import com.zipcodewilmington.froilansfarm.vehicle.Tractor; + +public class Farmer extends Botanist{ + + public Farmer(String name){ + super(name); + } + + public void operate(Tractor tractor, CropRow cropRow){ + + } + + //Farmer goes into a chickencoop, calls yield on each chicken -> DONE + //Currently there is no means of fertilizing chickens, so each chicken in the coop -> YIELD METHOD ALREADY CHECKS IF NOT FERTILIZED + //should yield an egg to the FoodInventory -> DONE + public void getEggs(ChickenCoop coop, FoodInventory silo){ + for(int i=0;i DONE + //if not enough food, return a sad message. Something about being hungry and dolio's fault. -> ANIMALS EAT METHOD CHECKS FOR NULL FOOD + public void feed(Animal animal, Corn food, FoodInventory silo){ + System.out.println(animal.toString()+" was fed"); + animal.eat(food,silo); + } + + public String makeNoise(){ + return "I'm farmer Froilan"; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/person/Person.java b/src/main/java/com/zipcodewilmington/froilansfarm/person/Person.java new file mode 100644 index 00000000..6629fabf --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/person/Person.java @@ -0,0 +1,33 @@ +package com.zipcodewilmington.froilansfarm.person; + +import com.zipcodewilmington.froilansfarm.interfaces.*; +import com.zipcodewilmington.froilansfarm.shelter.FoodInventory; + +public abstract class Person implements Eater, Noisemaker, Rider { + private String name; + + public Person(String name){ + this.name = name; + } + + public String makeNoise(){ + return "Hi I'm a Person"; + } + + public void eat(Edible food, FoodInventory silo){ + System.out.println(name+" ate "+food); + silo.remove(food); + } + + public void mount(Ridable somethingRidable){ + System.out.println(this.getName()+" is riding "+somethingRidable.toString()); + } + + public void dismount(Ridable somethingRidable){ + System.out.println(this.getName()+" stopped riding "+somethingRidable.toString()); + } + + public String getName(){ + return name; + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/person/Pilot.java b/src/main/java/com/zipcodewilmington/froilansfarm/person/Pilot.java new file mode 100644 index 00000000..ae82ce58 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/person/Pilot.java @@ -0,0 +1,18 @@ +package com.zipcodewilmington.froilansfarm.person; + +import com.zipcodewilmington.froilansfarm.vehicle.CropDuster; + +public class Pilot extends Farmer{ + + public Pilot(String name){ + super(name); + } + + public void fly(CropDuster cropDuster){ + System.out.println(this.getName()+" is flying a "+cropDuster.toString()); + } + + public void operate(CropDuster cropDuster){ + } + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/ChickenCoop.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/ChickenCoop.java new file mode 100644 index 00000000..16baba8f --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/ChickenCoop.java @@ -0,0 +1,10 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import com.zipcodewilmington.froilansfarm.animal.Chicken; + +public class ChickenCoop extends Shelter { + + public ChickenCoop(){ + + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/CropRow.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/CropRow.java new file mode 100644 index 00000000..2a288689 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/CropRow.java @@ -0,0 +1,10 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import com.zipcodewilmington.froilansfarm.crops.Crop; + +public class CropRow extends Shelter { + + public CropRow(){ + + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Farm.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Farm.java new file mode 100644 index 00000000..9f3faf30 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Farm.java @@ -0,0 +1,38 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import com.zipcodewilmington.froilansfarm.person.Farmer; +import com.zipcodewilmington.froilansfarm.person.Person; + +import java.util.ArrayList; +import java.util.List; + +public class Farm { + + List chickenCoops = new ArrayList(); + List stables = new ArrayList(); + FarmHouse farmHouse = new FarmHouse(); + + //Possibly instantiate vehicles/people/animals here? -> LEAVING THIS UP TO YOU ABE lol + //Yeah, that's fair. I'm the one using em anyhow, lol. --Abe + + public Farm(){ + } + + public List getChickenCoops() { + return chickenCoops; + } + public List getStables(){return stables;} + + public void addStable(Stables s){ + stables.add(s); + } + public void addCoop(ChickenCoop c){ + chickenCoops.add(c); + } + public FarmHouse getHouse(){ + return farmHouse; + } + public void moveIn(Farmer wack){ + farmHouse.add(wack); + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/FarmHouse.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/FarmHouse.java new file mode 100644 index 00000000..136b658a --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/FarmHouse.java @@ -0,0 +1,10 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import com.zipcodewilmington.froilansfarm.person.Person; + +public class FarmHouse extends Shelter { + + public FarmHouse(){ + + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Field.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Field.java new file mode 100644 index 00000000..119f6a79 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Field.java @@ -0,0 +1,8 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +public class Field extends Shelter{ + + public Field(){ + + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/FoodInventory.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/FoodInventory.java new file mode 100644 index 00000000..3fb07939 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/FoodInventory.java @@ -0,0 +1,18 @@ +package com.zipcodewilmington.froilansfarm.shelter; +import com.zipcodewilmington.froilansfarm.interfaces.Edible; + +import java.util.List; + +public class FoodInventory extends Shelter { + + public FoodInventory(List edibleList){ + super(edibleList); + } + + public FoodInventory(){ + + } + + + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Shelter.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Shelter.java new file mode 100644 index 00000000..3dd4ff4e --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Shelter.java @@ -0,0 +1,33 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import java.util.ArrayList; +import java.util.List; + +public abstract class Shelter { + private List inShelter = new ArrayList(); + + public Shelter(List inShelter){ + this.inShelter = inShelter; + } + + public Shelter(){ + + } + + public void add(T element){ + inShelter.add(element); + } + + public Boolean remove(T element){ + return (inShelter.remove(element)); + } + + public T get(int index){ + return inShelter.get(index); + } + + public int size(){ + return inShelter.size(); + } + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Stables.java b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Stables.java new file mode 100644 index 00000000..613b0787 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/shelter/Stables.java @@ -0,0 +1,10 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import com.zipcodewilmington.froilansfarm.person.Person; + +public class Stables extends Shelter{ + + public Stables(){ + + } +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/vehicle/Airplane.java b/src/main/java/com/zipcodewilmington/froilansfarm/vehicle/Airplane.java new file mode 100644 index 00000000..155e7bda --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicle/Airplane.java @@ -0,0 +1,34 @@ +package com.zipcodewilmington.froilansfarm.vehicle; + +import com.zipcodewilmington.froilansfarm.person.Pilot; +import com.zipcodewilmington.froilansfarm.vehicle.Vehicle; + +public abstract class Airplane extends Vehicle { + public boolean inAir=false; + public boolean properPilot=false; + + public Airplane(String name){ + super(name); + } + + public void fly(){ + if (properPilot){ + inAir=true; + System.out.println("We in the sky baby!"); + } + + } + public void land(){ + inAir=false; + properPilot=false; + System.out.println("Back on solid ground!"); + } + + public void pilotOnBoard(Pilot x){ + properPilot=true; + } + public void pilotNotOnBoard(Pilot x){ + properPilot=false; + } + +} diff --git a/src/main/java/com/zipcodewilmington/froilansfarm/vehicle/CropDuster.java b/src/main/java/com/zipcodewilmington/froilansfarm/vehicle/CropDuster.java new file mode 100644 index 00000000..60804741 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/froilansfarm/vehicle/CropDuster.java @@ -0,0 +1,43 @@ +package com.zipcodewilmington.froilansfarm.vehicle; + +import com.zipcodewilmington.froilansfarm.crops.Crop; +import com.zipcodewilmington.froilansfarm.interfaces.FarmVehicle; +import com.zipcodewilmington.froilansfarm.person.Pilot; +import com.zipcodewilmington.froilansfarm.shelter.CropRow; + +public class CropDuster extends Airplane implements FarmVehicle { + + public CropDuster(String name){ + super(name); + } + + //put pilot as parameter, use pilots name in string output -> DONE + public void operate(Pilot pilot){ + pilotOnBoard(pilot); + System.out.println(pilot.getName()+" is flying a "+this.toString()); + } + + //Added this one to satisfy operate() method in FarmVehicle interface + public void operate(){ + if(properPilot){System.out.println("The "+this.toString()+" is on now!");} + } + + + public void fertilize(CropRow cropRow){ + if(inAir==true){ + for(int i=0;i DONE + public void operate(Farmer farmer){ + System.out.println(farmer.getName()+" is riding a "+this.toString()); + } + + //Added this one to satisfy operate() method in FarmVehicle interface + public void operate(){ + System.out.println(this.toString()+" is running!"); + } + + + public void harvest(CropRow cropRow, FoodInventory silo){ + for(int i=0;i edibleList = new ArrayList(); + Corn corn1 = new Corn(); + Tomato tomato1 = new Tomato(); + Egg egg1 = new Egg(); + + edibleList.add(corn1); + edibleList.add(tomato1); + edibleList.add(egg1); + + FoodInventory silo = new FoodInventory(edibleList); + + Edible expected1 = corn1; + Edible actual1 = silo.get(0); + + Edible expected2 = tomato1; + Edible actual2 = silo.get(1); + + Edible expected3 = egg1; + Edible actual3 = silo.get(2); + + Assert.assertEquals(expected1,actual1); + Assert.assertEquals(expected2,actual2); + Assert.assertEquals(expected3,actual3); + } + +// @Test +// public void testAdd3(){ +// FoodInventory silo = new FoodInventory(); +// +// String string1 = "testing"; +// +// silo.add(string1); //GET ERROR AS EXPECTED BECAUSE silo needs an edible object +// +// } + + @Test + public void removeTest1(){ + FoodInventory silo = new FoodInventory(); + Corn corn1 = new Corn(); + Tomato tomato1 = new Tomato(); + Egg egg1 = new Egg(); + + silo.add(corn1); + silo.add(tomato1); + silo.add(egg1); + + silo.remove(tomato1); + + Edible expected1 = corn1; + Edible actual1 = silo.get(0); + + Edible expected2 = egg1; + Edible actual2 = silo.get(1); + + int expected3 = 2; + int actual3 = silo.size(); + + Assert.assertEquals(expected1,actual1); + Assert.assertEquals(expected2,actual2); + Assert.assertEquals(expected3,actual3); + + + } + +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/shelter/ShelterTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/shelter/ShelterTest.java new file mode 100644 index 00000000..8193a929 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/shelter/ShelterTest.java @@ -0,0 +1,20 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class ShelterTest { + + @Test + public void remove() { + } + + @Test + public void get() { + } + + @Test + public void size() { + } +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/shelter/TestFarm.java b/src/test/java/com/zipcodewilmington/froilansfarm/shelter/TestFarm.java new file mode 100644 index 00000000..fc035997 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/shelter/TestFarm.java @@ -0,0 +1,32 @@ +package com.zipcodewilmington.froilansfarm.shelter; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TestFarm { + + @Test + public void getChickenCoops() { + } + + @Test + public void getStables() { + } + + @Test + public void addStable() { + } + + @Test + public void addCoop() { + } + + @Test + public void getHouse() { + } + + @Test + public void moveIn() { + } +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/vehicle/CropDusterTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/vehicle/CropDusterTest.java new file mode 100644 index 00000000..bd50c5b1 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicle/CropDusterTest.java @@ -0,0 +1,53 @@ +package com.zipcodewilmington.froilansfarm.vehicle; + +import com.zipcodewilmington.froilansfarm.crops.Crop; +import com.zipcodewilmington.froilansfarm.shelter.CropRow; +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class CropDusterTest { + + @Test + public void testCropDuster(){ + CropDuster duster = new CropDuster("Dusty"); + String expected = "Dusty"; + + String actual = duster.getName(); + + Assert.assertEquals(expected, actual); + + } + + @Test + public void testCropDuster2(){ + CropDuster duster = new CropDuster("Dusty"); + String expected = "Dust"; + + String actual = duster.getName(); + + Assert.assertNotEquals(expected, actual); + + } + + @Test + public void makeNoiseCropDuster(){ + CropDuster duster = new CropDuster("Dusty"); + String expected = "nnneeaoowww"; + + String actual = duster.makeNoise(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void makeNoiseCropDuster2(){ + CropDuster duster = new CropDuster("Dusty"); + String expected = "some plane noise"; + + String actual = duster.makeNoise(); + + Assert.assertNotEquals(expected, actual); + } +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/froilansfarm/vehicle/TractorTest.java b/src/test/java/com/zipcodewilmington/froilansfarm/vehicle/TractorTest.java new file mode 100644 index 00000000..bab9a175 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/froilansfarm/vehicle/TractorTest.java @@ -0,0 +1,50 @@ +package com.zipcodewilmington.froilansfarm.vehicle; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TractorTest { + + @Test + public void tractorTest(){ + Tractor tractor = new Tractor("Big Red"); + String expected = "Big Red"; + + String actual = tractor.getName(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void tractorTest2(){ + Tractor tractor = new Tractor("Big Red"); + String expected = "Big Blue"; + + String actual = tractor.getName(); + + Assert.assertNotEquals(expected, actual); + } + + @Test + public void tractorMakeNoiseTest(){ + Tractor tractor = new Tractor("Big Red"); + String expected = "Putt putt putt Bang"; + + String actual = tractor.makeNoise(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void tractorMakeNoiseTest2(){ + Tractor tractor = new Tractor("Big Red"); + String expected = "some tractor noise"; + + String actual = tractor.getName(); + + Assert.assertNotEquals(expected, actual); + } + +} \ No newline at end of file