diff --git a/pom.xml b/pom.xml index 93036ba..0becdea 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,32 @@ io.zipcoder polymorphism 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 6 + 6 + + + + + + + junit + junit + 4.12 + test + + + junit + junit + 4.12 + test + + \ No newline at end of file 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..7b08676 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Cat.java @@ -0,0 +1,12 @@ +package io.zipcoder.pets; + +public class Cat extends Pet { + //private static final String name = ""; + public Cat(String type, String name) { + super(type, name); + } + + 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..987ee70 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Dog.java @@ -0,0 +1,14 @@ +package io.zipcoder.pets; + +public class Dog extends Pet { + // private static String name = ""; + + public Dog(String type, String name) { + super(type, name); + } + + @Override + public String speak() { + return "Ruff Ruff"; + } +} diff --git a/src/main/java/io/zipcoder/pets/Hampster.java b/src/main/java/io/zipcoder/pets/Hampster.java new file mode 100644 index 0000000..2c3e6c7 --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Hampster.java @@ -0,0 +1,13 @@ +package io.zipcoder.pets; + +public class Hampster extends Pet { + + public Hampster(String type, String name) { + super(type, name); + } + + @Override + public String speak() { + return "Squeak, Squeak."; + } +} 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..2ee0a0d --- /dev/null +++ b/src/main/java/io/zipcoder/pets/Pet.java @@ -0,0 +1,36 @@ +package io.zipcoder.pets; + +import io.zipcoder.polymorphism.Animal; + +public abstract class Pet implements Animal { + private String name; + private String type; + + protected Pet() { + } + + public Pet(String type, String name) { + this.type = type; + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String speak() { + return ""; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Animal.java b/src/main/java/io/zipcoder/polymorphism/Animal.java new file mode 100644 index 0000000..b9a1461 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Animal.java @@ -0,0 +1,5 @@ +package io.zipcoder.polymorphism; + +public interface Animal { + String speak(); +} diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index ea9281e..2182aba 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,7 +1,44 @@ package io.zipcoder.polymorphism; + +import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput; +import io.zipcoder.pets.Cat; +import io.zipcoder.pets.Dog; +import io.zipcoder.pets.Hampster; +import io.zipcoder.pets.Pet; +import javax.crypto.spec.PSource; +import javax.xml.namespace.QName; +import java.util.ArrayList; +import java.util.Scanner; + /** * Created by leon on 11/6/17. */ public class MainApplication { + + public static void main(String[] args) { + String petType, petName; + ArrayList petArrayList = new ArrayList(); + Scanner scanner = new Scanner(System.in); + System.out.println("How many pets do you have?"); + int numberOfPets = scanner.nextInt(); + + for(int i = 1; i <= numberOfPets; i++) { + System.out.println("What kind of pet?"); + petType = scanner.next(); + System.out.println("Enter pet's name."); + petName = scanner.next(); + if ("dog".equals(petType.toLowerCase())) { + petArrayList.add(new Dog(petType, petName)); + } else if ("cat".equals(petType.toLowerCase())) { + petArrayList.add(new Cat(petType, petName)); + } else if ("hampster".equals(petType.toLowerCase())) { + petArrayList.add(new Hampster(petType, petName)); + } + } + for (Pet petObj : petArrayList) { + System.out.println(petObj.getName() + " " + petObj.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..01a9855 --- /dev/null +++ b/src/test/java/io/zipcoder/pets/CatTest.java @@ -0,0 +1,31 @@ +package io.zipcoder.pets; + +import io.zipcoder.polymorphism.Animal; +import org.junit.Assert; +import org.junit.Test; + +public class CatTest extends Pet { + + @Test + public void testGetName() { + Pet pet = new Cat("cat", "Sylvester"); + String expected = "Sylvester"; + String actual = pet.getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void testSpeak() { + Pet pet = new Cat("cat", "Socks"); + String expected = "Meow!"; + String actual = pet.speak(); + Assert.assertEquals(expected, actual); + } + + @Test + public void inheritanceTest() { + Cat TestCat = new Cat("cat", "Fluffy"); + Assert.assertTrue(TestCat instanceof Pet); + Assert.assertTrue(TestCat instanceof Cat); + } +} 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..a5bc6d5 --- /dev/null +++ b/src/test/java/io/zipcoder/pets/DogTest.java @@ -0,0 +1,30 @@ +package io.zipcoder.pets; + +import org.junit.Assert; +import org.junit.Test; + +public class DogTest extends Pet { + + @Test + public void inheritanceTest() { + Dog TestDog = new Dog("dog", "Rex"); + Assert.assertTrue(TestDog instanceof Pet); + Assert.assertTrue(TestDog instanceof Dog); + } + + @Test + public void testGetName() { + Pet pet = new Dog("dog", "X"); + String expected = "X"; + String actual = pet.getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void testSpeak() { + Pet pet = new Dog("dog", "XX"); + String expected = "Ruff Ruff"; + String actual = pet.speak(); + Assert.assertEquals(expected, actual); + } +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/pets/HampsterTest.java b/src/test/java/io/zipcoder/pets/HampsterTest.java new file mode 100644 index 0000000..dd4521f --- /dev/null +++ b/src/test/java/io/zipcoder/pets/HampsterTest.java @@ -0,0 +1,32 @@ +package io.zipcoder.pets; + +import org.junit.Assert; +import org.junit.Test; + +public class HampsterTest extends Pet { + + @Test + public void testGetName() { + Pet pet = new Hampster("hampster", "Apple"); + String expected = "Apple"; + String actual = pet.getName(); + Assert.assertEquals(expected, actual); + } + + @Test + public void testSpeak() { + Pet pet = new Hampster("hampster", "Elvis"); + String expected = "Squeak, Squeak."; + String actual = pet.speak(); + Assert.assertEquals(expected, actual); + } + + @Test + public void inheritanceTest() { + Hampster TestHampster = new Hampster("hampster", "Earl"); + Assert.assertTrue(TestHampster instanceof Pet); + Assert.assertTrue(TestHampster instanceof Hampster); + + } +} + diff --git a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java index 7181623..d414497 100644 --- a/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java +++ b/src/test/java/io/zipcoder/polymorphism/MainApplicationTest.java @@ -1,7 +1,37 @@ package io.zipcoder.polymorphism; +import io.zipcoder.pets.Cat; +import io.zipcoder.pets.Dog; +import io.zipcoder.pets.Hampster; +import io.zipcoder.pets.Pet; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + /** * Created by leon on 11/6/17. */ public class MainApplicationTest { + Pet testHamster = new Hampster("hampster", "Apple"); + Pet testCat = new Cat("cat", "Sylvester"); + Pet testDog = new Dog("dog", "XX"); + ArrayList petArrayList = new ArrayList(); + + @Test + public void ArrayListTest() { + petArrayList.add(testDog); + Integer expected = 1; + Integer actual = petArrayList.size(); + Assert.assertEquals(actual, expected); + } + @Test + public void ArrayListTest2() { + petArrayList.add(testCat); + petArrayList.add(testHamster); + Integer expected = 2; + Integer actual = petArrayList.size(); + Assert.assertEquals (actual, expected); + } }