From c5d0581f4194290e4e4aed46f34e3746f73608e6 Mon Sep 17 00:00:00 2001 From: Maira Botelho Date: Thu, 31 Oct 2019 19:48:51 -0400 Subject: [PATCH 1/5] changes --- pom.xml | 8 +++ .../polymorphism/MainApplication.java | 64 +++++++++++++++++++ .../java/io/zipcoder/polymorphism/Pet.java | 15 +++++ .../io/zipcoder/polymorphism/Pets/Cat.java | 13 ++++ .../io/zipcoder/polymorphism/Pets/Cow.java | 13 ++++ .../io/zipcoder/polymorphism/Pets/Dog.java | 13 ++++ .../io/zipcoder/polymorphism/Pets/Pets.java | 30 +++++++++ .../java/io/zipcoder/polymorphism/main.java | 12 ++++ .../polymorphism/MainApplicationTest.java | 9 +++ 9 files changed, 177 insertions(+) create mode 100644 src/main/java/io/zipcoder/polymorphism/Pet.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Pets/Cat.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Pets/Cow.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Pets/Dog.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Pets/Pets.java create mode 100644 src/main/java/io/zipcoder/polymorphism/main.java diff --git a/pom.xml b/pom.xml index 93036ba..90c23e3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,14 @@ io.zipcoder polymorphism 1.0-SNAPSHOT + + + junit + junit + 4.12 + test + + \ No newline at end of file diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index ea9281e..8b0481e 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,7 +1,71 @@ package io.zipcoder.polymorphism; +import io.zipcoder.polymorphism.Pets.Cat; +import io.zipcoder.polymorphism.Pets.Cow; +import io.zipcoder.polymorphism.Pets.Dog; +import io.zipcoder.polymorphism.Pets.Pets; + +import java.util.Scanner; + /** * Created by leon on 11/6/17. */ public class MainApplication { + + Scanner scanner = new Scanner(System.in); + Pets[] setOfPets; + + public void run() { + + System.out.println("How many pets do you have?"); + int numberOfPets = scanner.nextInt(); + setOfPets = new Pets[numberOfPets]; + + getTypesAndNames(numberOfPets, setOfPets); + + printInfo(setOfPets); + + } + + + public Pets[] getTypesAndNames(int numberOfPets, Pets[] pets){ + + for (int index = 0; index < numberOfPets; index++) { + System.out.println("What type of pet is it?\n" + + " Options: Dog, Cat, Cow, Other"); + String input = scanner.next(); + + System.out.println("What is the pet's name?"); + String name = scanner.next(); + + if ("dog".equals(input)) { + + pets[index] = new Dog(name); + + } else if ("cat".equals(input.toLowerCase())) { + + pets[index] = new Cat(name); + + } else if ("cow".equals(input.toLowerCase())){ + + pets[index] = new Cow(name); + + } else{ + + pets[index] = new Pet(name); + } + } + + return pets; + } + + + public void printInfo(Pets[] pets){ + + for (Pets pet: pets) { + System.out.println(pet.outputPet()); + } + } + + } diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java new file mode 100644 index 0000000..7a7eb4c --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -0,0 +1,15 @@ +package io.zipcoder.polymorphism; + +import io.zipcoder.polymorphism.Pets.Pets; + +public class Pet extends Pets { + + public Pet(String name) { + super(name); + } + + @Override + public String speak() { + return "Whatever this animal sounds like"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java b/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java new file mode 100644 index 0000000..780391c --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java @@ -0,0 +1,13 @@ +package io.zipcoder.polymorphism.Pets; + +public class Cat extends Pets { + + public Cat(String name) { + super(name); + } + + @Override + public String speak() { + return "meow!"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java b/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java new file mode 100644 index 0000000..91f260c --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java @@ -0,0 +1,13 @@ +package io.zipcoder.polymorphism.Pets; + +public class Cow extends Pets { + + public Cow(String name) { + super(name); + } + + @Override + public String speak() { + return "moo!"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java b/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java new file mode 100644 index 0000000..a72a480 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java @@ -0,0 +1,13 @@ +package io.zipcoder.polymorphism.Pets; + +public class Dog extends Pets { + + public Dog(String name) { + super(name); + } + + @Override + public String speak() { + return "woof!"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java new file mode 100644 index 0000000..d271963 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java @@ -0,0 +1,30 @@ +package io.zipcoder.polymorphism.Pets; + +public abstract class Pets { + + private String name; + private String type; + + public abstract String speak(); + + public Pets(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String outputPet () { + String[] className; + className = this.getClass().getName().split("\\."); + + return String.format(" %s is a %s and sounds like %s", + this.getName(), className[className.length-1], this.speak()); + } + +} diff --git a/src/main/java/io/zipcoder/polymorphism/main.java b/src/main/java/io/zipcoder/polymorphism/main.java new file mode 100644 index 0000000..73a4e56 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/main.java @@ -0,0 +1,12 @@ +package io.zipcoder.polymorphism; + +public class main { + + public static void main(String[] args) { + + MainApplication newMain = new MainApplication(); + + newMain.run(); + + } +} diff --git a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java index 7181623..9ace978 100644 --- a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java +++ b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java @@ -1,7 +1,16 @@ package io.zipcoder.polymorphism; +import io.zipcoder.polymorphism.Pets.Cat; +import org.junit.Test; /** * Created by leon on 11/6/17. */ public class MainApplicationTest { + + @Test + public void testCat(){ + Cat cat = new Cat("Francis"); + cat.speak(); + } + } From e027ae9e79a35c7bc5255a888ef06e59f5179736 Mon Sep 17 00:00:00 2001 From: Maira Botelho Date: Mon, 4 Nov 2019 09:23:42 -0500 Subject: [PATCH 2/5] finished --- src/main/java/io/zipcoder/polymorphism/MainApplication.java | 5 +---- src/main/java/io/zipcoder/polymorphism/{ => Pets}/Pet.java | 4 +--- src/main/java/io/zipcoder/polymorphism/Pets/Pets.java | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) rename src/main/java/io/zipcoder/polymorphism/{ => Pets}/Pet.java (71%) diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index 8b0481e..e36d851 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,9 +1,6 @@ package io.zipcoder.polymorphism; -import io.zipcoder.polymorphism.Pets.Cat; -import io.zipcoder.polymorphism.Pets.Cow; -import io.zipcoder.polymorphism.Pets.Dog; -import io.zipcoder.polymorphism.Pets.Pets; +import io.zipcoder.polymorphism.Pets.*; import java.util.Scanner; diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pets/Pet.java similarity index 71% rename from src/main/java/io/zipcoder/polymorphism/Pet.java rename to src/main/java/io/zipcoder/polymorphism/Pets/Pet.java index 7a7eb4c..9b85e0d 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pet.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Pet.java @@ -1,6 +1,4 @@ -package io.zipcoder.polymorphism; - -import io.zipcoder.polymorphism.Pets.Pets; +package io.zipcoder.polymorphism.Pets; public class Pet extends Pets { diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java index d271963..7617b9c 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java @@ -3,7 +3,7 @@ public abstract class Pets { private String name; - private String type; + //private String type; public abstract String speak(); From 253862d7b7340c0056a39332f900778199d0538a Mon Sep 17 00:00:00 2001 From: Maira Botelho Date: Sat, 9 Nov 2019 19:09:40 -0500 Subject: [PATCH 3/5] fixed and finished --- pom.xml | 12 ++++ .../io/zipcoder/polymorphism/Console.java | 45 +++++++++++++++ .../polymorphism/MainApplication.java | 55 ++++++++----------- .../io/zipcoder/polymorphism/Pets/Pet.java | 13 ----- .../io/zipcoder/polymorphism/Pets/Pets.java | 6 +- 5 files changed, 84 insertions(+), 47 deletions(-) create mode 100644 src/main/java/io/zipcoder/polymorphism/Console.java delete mode 100644 src/main/java/io/zipcoder/polymorphism/Pets/Pet.java diff --git a/pom.xml b/pom.xml index 90c23e3..4d75a58 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ io.zipcoder polymorphism 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 7 + 7 + + + + junit diff --git a/src/main/java/io/zipcoder/polymorphism/Console.java b/src/main/java/io/zipcoder/polymorphism/Console.java new file mode 100644 index 0000000..978a731 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Console.java @@ -0,0 +1,45 @@ +package io.zipcoder.polymorphism; + +import java.io.InputStream; +import java.io.PrintStream; +import java.util.Scanner; + +public class Console { + + private final Scanner input; + private final PrintStream output; + + public Console(InputStream in, PrintStream out){ + + this.input = new Scanner(in); + this.output = out; + } + + public void print(String val, Object... args) { + output.format(val, args); + } + + public void println(String val, Object... vals) { + print(val + "\n", vals); + } + + public String getStringInput(String prompt, Object... args) { + println(prompt, args); + return input.nextLine(); + } + + public Integer getIntegerInput(String prompt, Object... args) { + + String stringInput = getStringInput(prompt, args); + try { + Integer intInput = Integer.valueOf(stringInput); + return intInput; + + } catch (NumberFormatException nfe) { // TODO - Eliminate recursive nature + println("[ %s ] is an invalid user input!", stringInput); + println("Try inputting an integer value!"); + } + + return getIntegerInput(prompt, args); + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index e36d851..f246851 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -2,65 +2,58 @@ import io.zipcoder.polymorphism.Pets.*; -import java.util.Scanner; - /** * Created by leon on 11/6/17. */ public class MainApplication { - Scanner scanner = new Scanner(System.in); + Console console = new Console(System.in, System.out); Pets[] setOfPets; public void run() { - System.out.println("How many pets do you have?"); - int numberOfPets = scanner.nextInt(); - setOfPets = new Pets[numberOfPets]; - - getTypesAndNames(numberOfPets, setOfPets); - - printInfo(setOfPets); + printInfo(getTypes(getNumberOfPets())); } + public Integer getNumberOfPets(){ - public Pets[] getTypesAndNames(int numberOfPets, Pets[] pets){ + int numberOfPets = console.getIntegerInput("How many pets do you have?"); - for (int index = 0; index < numberOfPets; index++) { - System.out.println("What type of pet is it?\n" + - " Options: Dog, Cat, Cow, Other"); - String input = scanner.next(); - - System.out.println("What is the pet's name?"); - String name = scanner.next(); - - if ("dog".equals(input)) { + return numberOfPets; + } - pets[index] = new Dog(name); - } else if ("cat".equals(input.toLowerCase())) { + public Pets[] getTypes(int numberOfPets){ - pets[index] = new Cat(name); + setOfPets = new Pets[numberOfPets]; - } else if ("cow".equals(input.toLowerCase())){ + for (int index = 0; index < numberOfPets; index++) { + String type = console.getStringInput("\nWhat type of pet is it?\n" + + " Options: Dog, Cat, Cow"); + switch(type.toLowerCase()){ + + case "dog": setOfPets[index] = new Dog(getName()); break; + case "cat": setOfPets[index] = new Cat(getName()); break; + case "cow": setOfPets[index] = new Cow(getName()); break; + default: console.println("\nNot a valid animal."); index -= 1; break; + } + } - pets[index] = new Cow(name); + return setOfPets; + } - } else{ - pets[index] = new Pet(name); - } - } + public String getName() { - return pets; + return console.getStringInput("\nWhat is the pet's name?"); } public void printInfo(Pets[] pets){ for (Pets pet: pets) { - System.out.println(pet.outputPet()); + console.println(pet.toString()); } } diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pets/Pet.java deleted file mode 100644 index 9b85e0d..0000000 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Pet.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.zipcoder.polymorphism.Pets; - -public class Pet extends Pets { - - public Pet(String name) { - super(name); - } - - @Override - public String speak() { - return "Whatever this animal sounds like"; - } -} diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java index 7617b9c..ca39524 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java @@ -19,12 +19,12 @@ public void setName(String name) { this.name = name; } - public String outputPet () { + public String toString() { String[] className; className = this.getClass().getName().split("\\."); - return String.format(" %s is a %s and sounds like %s", - this.getName(), className[className.length-1], this.speak()); + return String.format("\n%s is a %s and sounds like %s", + this.getName(), className[className.length - 1], this.speak()); } } From 878ace950f3fbd5520deb051ed1bd54fa6bd2059 Mon Sep 17 00:00:00 2001 From: jeanvalentin51 Date: Sun, 10 Nov 2019 17:05:30 -0500 Subject: [PATCH 4/5] Added test --- .../polymorphism/MainApplicationTest.java | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java index 9ace978..9275ac5 100644 --- a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java +++ b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java @@ -1,16 +1,48 @@ package io.zipcoder.polymorphism; -import io.zipcoder.polymorphism.Pets.Cat; +import org.junit.Assert; import org.junit.Test; /** * Created by leon on 11/6/17. */ public class MainApplicationTest { + MainApplication testApp = new MainApplication(); @Test - public void testCat(){ - Cat cat = new Cat("Francis"); - cat.speak(); + public void addPet() { + + testApp.getTypes(2); + int expected = 2; + int actual = testApp.setOfPets.length; + + Assert.assertEquals(expected,actual); + } + + @Test + public void printPets() { +// testApp.addPet("Cat"); +// testApp.addPet("Dog"); +// +// String expected = "No name cat"; +// String actual = testApp.petList.get(0).getName(); +// Assert.assertEquals(expected,actual); +// +// expected = "No name dog"; +// actual = testApp.petList.get(1).getName(); +// Assert.assertEquals(expected,actual); + } + + // **************************** + + @Test + public void getNumberOfPets() { } + @Test + public void getTypes() { + } + + @Test + public void getName() { + } } From 38bc69823694ecaa5482ef3c21ff4c327729af2b Mon Sep 17 00:00:00 2001 From: Maira Botelho Date: Sun, 10 Nov 2019 18:55:34 -0500 Subject: [PATCH 5/5] pets fixed --- src/main/java/io/zipcoder/polymorphism/Pets/Cat.java | 10 ++++++++++ src/main/java/io/zipcoder/polymorphism/Pets/Cow.java | 9 +++++++++ src/main/java/io/zipcoder/polymorphism/Pets/Dog.java | 8 ++++++++ src/main/java/io/zipcoder/polymorphism/Pets/Pets.java | 3 +-- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java b/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java index 780391c..ebfa631 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Cat.java @@ -3,9 +3,19 @@ public class Cat extends Pets { public Cat(String name) { + super(name); } + public Cat(){ + super("Fluffy"); + } + + @Override + public String type() { + return "Cat"; + } + @Override public String speak() { return "meow!"; diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java b/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java index 91f260c..276b6c8 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Cow.java @@ -6,6 +6,15 @@ public Cow(String name) { super(name); } + public Cow(){ + super("Mimi"); + } + + @Override + public String type() { + return "Cow"; + } + @Override public String speak() { return "moo!"; diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java b/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java index a72a480..a91e77a 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Dog.java @@ -6,6 +6,14 @@ public Dog(String name) { super(name); } + public Dog(){ + super("Dingo"); + } + + public String type(){ + return "Dog"; + } + @Override public String speak() { return "woof!"; diff --git a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java index ca39524..21be388 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java +++ b/src/main/java/io/zipcoder/polymorphism/Pets/Pets.java @@ -3,8 +3,7 @@ public abstract class Pets { private String name; - //private String type; - + public abstract String type(); public abstract String speak(); public Pets(String name) {