diff --git a/Nathan.md b/Nathan.md new file mode 100644 index 0000000..f2d0a82 --- /dev/null +++ b/Nathan.md @@ -0,0 +1 @@ +##This is Nathan's Project \ No newline at end of file diff --git a/pom.xml b/pom.xml index 62dbb86..b118c92 100644 --- a/pom.xml +++ b/pom.xml @@ -5,6 +5,18 @@ io.zipcoder polymorphism-1 0.0.1-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + jar interfaces-1 diff --git a/src/main/java/io/zipcoder/pets/Animal.java b/src/main/java/io/zipcoder/pets/Animal.java new file mode 100644 index 0000000..6e3ab7c --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Animal.java @@ -0,0 +1,6 @@ +package io.zipcoder.pets; + +public interface Animal { + String speak(); + Integer getId(); +} diff --git a/src/main/java/io/zipcoder/pets/Cat.java b/src/main/java/io/zipcoder/pets/Cat.java new file mode 100644 index 0000000..7337323 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Cat.java @@ -0,0 +1,16 @@ +package io.zipcoder.pets; + +public class Cat extends Pet{ + public Cat(String name, Integer id) { + super(name, id); + } + + public Cat() { + super("Cat", null); + } + + @Override + public String speak(){ + return "Meow!"; + } +} diff --git a/src/main/java/io/zipcoder/pets/Dog.java b/src/main/java/io/zipcoder/pets/Dog.java new file mode 100644 index 0000000..00cbcda --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Dog.java @@ -0,0 +1,17 @@ +package io.zipcoder.pets; + +public class Dog extends Pet{ + + public Dog(String name, Integer id) { + super(name, id); + } + + public Dog() { + super("Dog", null); + } + + @Override + public String speak(){ + return "Bark!"; + } +} diff --git a/src/main/java/io/zipcoder/pets/Horse.java b/src/main/java/io/zipcoder/pets/Horse.java new file mode 100644 index 0000000..7349b8e --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Horse.java @@ -0,0 +1,17 @@ +package io.zipcoder.pets; + +public class Horse extends Pet { + + public Horse(String name, Integer id) { + super(name, id); + } + + public Horse() { + super("Horse", null); + } + + @Override + public String speak(){ + return "Neigh!"; + } +} diff --git a/src/main/java/io/zipcoder/pets/Pet.java b/src/main/java/io/zipcoder/pets/Pet.java new file mode 100644 index 0000000..bdfeb31 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Pet.java @@ -0,0 +1,44 @@ +package io.zipcoder.pets; + +public class Pet implements Animal { + private String Name; + private final Integer Id; + private PetOwner Owner; + + public Pet(String name, Integer id) { + this.Name = name; + this.Id = id; + this.Owner = null; + } + + public String getName() { + return this.Name; + } + + public void setName(String name) { + this.Name = name; + } + + public Integer getId() { + return Id; + } + +// public void setId(Integer id) { +// this.Id = id; +// } + + public PetOwner getOwner() { + return this.Owner; + } + + public void setOwner(PetOwner owner) { + this.Owner = owner; + } + + + + + public String speak() { + return null; + } +} diff --git a/src/main/java/io/zipcoder/pets/PetOwner.java b/src/main/java/io/zipcoder/pets/PetOwner.java new file mode 100644 index 0000000..688b02d --- /dev/null +++ b/src/main/java/io/zipcoder/pets/PetOwner.java @@ -0,0 +1,58 @@ +package io.zipcoder.pets; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class PetOwner { + private String name; + private ArrayList petList = new ArrayList<>(); + private static Integer ID = 0; + //private Integer numberOfPets; + + public PetOwner(String name, int numOfPets) { + this.name = name; + this.petList = new ArrayList<>(); + for (int i = 0; i < numOfPets; i++) { + petList.add(new Dog("TEST DOG", 90)); + } + } + + public String getName() { + return name; + } + + public void setNumberOfPets(Integer newNumOfPets) { + for (int i = 0; i < newNumOfPets; i++) { + petList.add(new Dog("TEST DOG", 80)); + } + } + + public int getNumberOfPets() { + return petList.size(); + } + + public void addPet(Pet pet) { + for(Pet element: petList){ + if(element != pet){ + element = pet; + break; + } + } + + } + + public Pet getPetById(Integer petId) { + for(Pet pet: petList){ + System.out.println(pet.getId()); + if(pet.getId() == petId){ + return pet; + } + } + return null; + } + + public void setPetName(Pet pet, String newPetName) { + + } +} 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..ade99b4 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Console.java @@ -0,0 +1,92 @@ +package io.zipcoder.polymorphism; + +import io.zipcoder.pets.Cat; +import io.zipcoder.pets.Dog; +import io.zipcoder.pets.Horse; +import io.zipcoder.pets.Pet; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class Console { + private static List petList = new ArrayList<>(); + private static Integer count; + + public static void start() { + Scanner scanner = new Scanner(System.in); + System.out.println("Hello pet owner! How many pets do you have?"); + //count = getIntegerInput("Hello pet owner! How many pets do you have?"); + count = scanner.nextInt(); + int I = 0; + while (I < count){ + System.out.println("What type of pet is your pet # " + (I +1) + " ?\n" + + "1.Dog, 2. Cat, 3. Horse"); + int input = scanner.nextInt(); +// Integer input = getIntegerInput("What type of pet is your pet # " + I + " ?\n" + +// "1.Dog, 2. Cat, 3. Horse"); + switch(input) { + case 1 : + petList.add(new Dog()); + break; + case 2 : + petList.add(new Cat()); + break; + case 3 : + petList.add(new Horse()); + break; + default : + System.out.println("Error! Pick 1, 2 or 3"); + continue; + } + I++; + } + + } + + public static void getNames(){ + Scanner scanner = new Scanner(System.in); + String input; + int I = 0; + while (I < count){ + System.out.println("What is the name of your pet #" + (I + 1) + " who is a " + petList.get(I).getClass().getSimpleName() + "?" ); + input = scanner.nextLine(); + petList.get(I).setName(input); + I++; + } + } + public static void speak(){ + System.out.println("You have " + count + " pets."); + for(Pet eachPet: petList){ + System.out.println(eachPet.getName() + " the " + eachPet.getClass().getSimpleName() + " says " + eachPet.speak()); + } + } + + public static void print(String output, Object...args){ + System.out.printf(output, args); + } + + public static void println(String output, Object...args){ + print(output + "\n" + args); + } + + public static String getStringInput(String prompt) { + Scanner scanner = new Scanner(System.in); + println(prompt); + return scanner.nextLine(); + } + + public static Integer getIntegerInput(String prompt) { + Scanner scanner = new Scanner(System.in); + println(prompt); + return Integer.parseInt(scanner.nextLine()); + } + + public static Float getFloatInput(String prompt) { + Scanner scanner = new Scanner(System.in); + println(String.valueOf(prompt)); + return Float.parseFloat((scanner.nextLine())); + } + + +} diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index 668c627..6c1edcd 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,4 +1,11 @@ package io.zipcoder.polymorphism; public class MainApplication { + + public static void main(String[] args) { + Console.start(); + Console.getNames(); + Console.speak(); + } + } diff --git a/src/test/java/io/zipcoder/pets/CatTest.java b/src/test/java/io/zipcoder/pets/CatTest.java new file mode 100644 index 0000000..56b879f --- /dev/null +++ b/src/test/java/io/zipcoder/pets/CatTest.java @@ -0,0 +1,55 @@ +package io.zipcoder.pets; + +import org.junit.Assert; +import org.junit.Test; + +public class CatTest { + @Test + public void constructorTest() { + //given + String givenName = "Banksy"; + Integer givenId = 0; + //when + Cat cat = new Cat(givenName, givenId); + String retrievedName = cat.getName(); + Integer retrievedID = cat.getId(); + //then + Assert.assertEquals(givenName, retrievedName); + Assert.assertEquals(givenId, retrievedID); + } + @Test + public void testGetName() { + //given + String expectedName = "Ony"; + //when + Cat cat = new Cat(expectedName, 2); + String actualName = cat.getName(); + //then + Assert.assertEquals(expectedName, actualName); + } + @Test + public void testGetID() { + //given + Integer expectedId = 1; + //when + Cat cat = new Cat("Kyo", expectedId); + Integer actualId = cat.getId(); + //then + Assert.assertEquals(expectedId, actualId); + } + @Test + public void testSpeak() { + //given + String expectedSpeak = "Meow!"; + //when + Cat newCat = new Cat("Spooky", 1); + String actualSpeak = newCat.speak(); + //then + Assert.assertEquals(expectedSpeak, actualSpeak); + } + @Test + public void testPetInheritance() { + Cat newCat = new Cat("Gojo", 2); + Assert.assertTrue(newCat instanceof Pet); + } +} diff --git a/src/test/java/io/zipcoder/pets/DogTest.java b/src/test/java/io/zipcoder/pets/DogTest.java new file mode 100644 index 0000000..8f14da1 --- /dev/null +++ b/src/test/java/io/zipcoder/pets/DogTest.java @@ -0,0 +1,56 @@ +package io.zipcoder.pets; + +import org.junit.Assert; +import org.junit.Test; + +public class DogTest { + @Test + public void constructorTest() { + //given + String givenName = "Bruno"; + Integer givenId = 2; + //when + Dog dog = new Dog(givenName, givenId); + String retrievedName = dog.getName(); + Integer retrievedId = dog.getId(); + //then + Assert.assertEquals(givenName, retrievedName); + Assert.assertEquals(givenId, retrievedId); + } + @Test + public void testSetName() { + //given + String expectedName = "Issa"; + //when + Dog dog = new Dog(expectedName,4); + String actualName = dog.getName(); + //then + Assert.assertEquals(expectedName, actualName); + } + @Test + public void testGetId() { + //given + Integer expectedId = 9; + //when + Dog dog = new Dog("Shigure", expectedId); + Integer actualId = dog.getId(); + //then + Assert.assertEquals(expectedId, actualId); + + } + @Test + public void testSpeak() { + //given + String expectedSpeak = "Bark!"; + //when + Dog newDog = new Dog("Coco", 3); + String actualSpeak = newDog.speak(); + //then + Assert.assertEquals(expectedSpeak, actualSpeak); + } + @Test + public void testPetInheritance() { + Dog newDog = new Dog("Kyo", 7); + Assert.assertTrue(newDog instanceof Pet); + } +} diff --git a/src/test/java/io/zipcoder/pets/HorseTest.java b/src/test/java/io/zipcoder/pets/HorseTest.java new file mode 100644 index 0000000..811317a --- /dev/null +++ b/src/test/java/io/zipcoder/pets/HorseTest.java @@ -0,0 +1,56 @@ +package io.zipcoder.pets; + +import org.junit.Assert; +import org.junit.Test; + +public class HorseTest { + @Test + public void constructorTest() { + //given + String givenName = "Misty"; + Integer givenId = 3; + //when + Horse horse = new Horse(givenName, givenId); + String retrievedName = horse.getName(); + Integer retrievedId = horse.getId(); + //then + Assert.assertEquals(givenName, retrievedName); + Assert.assertEquals(givenId, retrievedId); + } + @Test + public void testSetName() { + //given + String expectedName = "Rin"; + //when + Horse horse = new Horse(expectedName, 5); + String actualName = horse.getName(); + //then + Assert.assertEquals(expectedName, actualName); + } + @Test + public void testGetId() { + //given + Integer expectedId = 1; + //when + Horse horse = new Horse("Flash", expectedId); + Integer actualId = horse.getId(); + //then + Assert.assertEquals(expectedId, actualId); + } + @Test + public void testSpeak() { + //given + String expectedSpeak = "Neigh!"; + //when + Horse newHorse = new Horse("Layla", 2); + String actualSpeak = newHorse.speak(); + //then + Assert.assertEquals(expectedSpeak, actualSpeak); + } + @Test + public void testPetInheritance() { + Horse newHorse = new Horse("Frank", 4); + Assert.assertTrue(newHorse instanceof Pet); + } + +} diff --git a/src/test/java/io/zipcoder/pets/PetOwnerTest.java b/src/test/java/io/zipcoder/pets/PetOwnerTest.java new file mode 100644 index 0000000..b658e3d --- /dev/null +++ b/src/test/java/io/zipcoder/pets/PetOwnerTest.java @@ -0,0 +1,73 @@ +package io.zipcoder.pets; + +import org.junit.Assert; +import org.junit.Test; + +public class PetOwnerTest { + + @Test + public void testPetOwnerConstructor() { + //given + String expectedName = "Kira"; + //when + PetOwner petOwner = new PetOwner(expectedName, 4); + String actualName = petOwner.getName(); + //then + Assert.assertEquals(expectedName, actualName); + } + + @Test + public void testSetNumberOfPets() { + //given + int expected = 1; + PetOwner petOwner = new PetOwner("Annette", expected); + //when + petOwner.setNumberOfPets(expected); + int actual = petOwner.getNumberOfPets(); + + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testAddPets() { + //given + PetOwner petOwner = new PetOwner("Caroline", 0); + petOwner.setNumberOfPets(2); + Cat cat1 = new Cat("Luna", 0); + Cat cat2 = new Cat("Binks", 1); + //when + petOwner.addPet(cat1); + petOwner.addPet(cat2); + Pet actualPet = petOwner.getPetById(0); + //then + Assert.assertEquals(cat1.getName(), actualPet.getName()); + } + + @Test + public void testGetPetById() { + //given + String expected = "YunYun"; + PetOwner petOwner = new PetOwner("Rayna", 2); + Dog dog = new Dog(expected, 0); + Cat cat = new Cat("Sophie", 1); + //when + Pet actual = petOwner.getPetById(0); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testSetPetName() { + //given + String expected = "Poppy"; + PetOwner petOwner = new PetOwner("Peter", 0); + petOwner.setNumberOfPets(2); + Cat cat = new Cat("Ghost", 0); + //when + petOwner.setPetName(cat, expected); + String actual = cat.getName(); + //then + Assert.assertEquals(expected, actual); + } +}