From e9f3671ad42aca8bc513ad46db362729cf3f18bc Mon Sep 17 00:00:00 2001 From: David Ginzberg Date: Wed, 1 Feb 2017 10:32:07 -0500 Subject: [PATCH 01/11] Added interface lab components --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e7c18b0..b6fb459 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Polymorphism Lab 1 +# Polymorphism Lab 1 -- Extended for Interfaces ## Objectives @@ -38,3 +38,14 @@ Use the tests provided as examples to write your own tests for other supported t Modify your program from part 1 to use the Pet class and its subclasses. Keep a list of the pets your user lists and at the end of the program print out a list of their names and what they say when they speak. +## Interfaces + +Begin this lab by rewriting your UML according to the updated features. New unit tests will also be required. + +### Part 1: + +Starting from your completed polymorphism lab, add the `java.lang.Comparable` interface to your pet classes. Implement this interface so that `Arrays.sort()` or `Collections.sort()` (both existing static methods) will sort lists of your objects by name, breaking ties by class type. + +### Part 2: + +Create a new implementation of `java.util.Comparator` that will sort pet objects by type, breaking ties by name. From 8d3b0c9932978069f6f92b196672a968697bbe3c Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Thu, 6 Jun 2019 15:18:54 -0400 Subject: [PATCH 02/11] Initial Commit. Part 1 completed. --- .../polymorphism/MainApplication.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index ea9281e..c842d5a 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,7 +1,39 @@ package io.zipcoder.polymorphism; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Scanner; + /** * Created by leon on 11/6/17. */ public class MainApplication { + + public static void main(String[] args) { + + ArrayList userInput = new ArrayList(); + Scanner input = new Scanner(System.in); + + System.out.print("How many pets do you have: "); + String numberOfPets = input.nextLine(); + userInput.add(numberOfPets); + + for (int i = 1; i <= Integer.valueOf(numberOfPets); i++){ + System.out.print("What type of pet is pet # " + i + ": "); + userInput.add(input.nextLine()); + System.out.print("What is the name of pet # " + i) + ": "; + userInput.add(input.nextLine()); + } + + System.out.println("Thank you."); + System.out.println(Arrays.toString(userInput.toArray())); + + + } + + + } + + From 5827bb7b3134bc1ec1e31860a744f8bc739a0264 Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Thu, 6 Jun 2019 17:14:28 -0400 Subject: [PATCH 03/11] Validated the user input. --- .../java/io/zipcoder/polymorphism/Bird.java | 12 ++++++ .../java/io/zipcoder/polymorphism/Cat.java | 12 ++++++ .../java/io/zipcoder/polymorphism/Dog.java | 12 ++++++ .../polymorphism/MainApplication.java | 43 ++++++++++--------- .../java/io/zipcoder/polymorphism/Pet.java | 17 ++++++++ 5 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 src/main/java/io/zipcoder/polymorphism/Bird.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Cat.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Dog.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Pet.java diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java new file mode 100644 index 0000000..8ed2e28 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Bird.java @@ -0,0 +1,12 @@ +package io.zipcoder.polymorphism; + +public class Bird extends Pet{ + + public Bird(String name) { + super(name); + } + + public String speak() { + return "Chirp!"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java new file mode 100644 index 0000000..93166e1 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Cat.java @@ -0,0 +1,12 @@ +package io.zipcoder.polymorphism; + +public class Cat extends Pet { + + public Cat(String name) { + super(name); + } + + public String speak() { + return "Meow!"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java new file mode 100644 index 0000000..602798a --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Dog.java @@ -0,0 +1,12 @@ +package io.zipcoder.polymorphism; + +public class Dog extends Pet{ + + public Dog(String name) { + super(name); + } + + public String speak() { + return "Woof!"; + } +} diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index c842d5a..fd859c6 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,39 +1,42 @@ package io.zipcoder.polymorphism; - import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; -/** - * Created by leon on 11/6/17. - */ public class MainApplication { public static void main(String[] args) { - ArrayList userInput = new ArrayList(); Scanner input = new Scanner(System.in); + int numberOfPets = 0; System.out.print("How many pets do you have: "); - String numberOfPets = input.nextLine(); - userInput.add(numberOfPets); - - for (int i = 1; i <= Integer.valueOf(numberOfPets); i++){ - System.out.print("What type of pet is pet # " + i + ": "); - userInput.add(input.nextLine()); - System.out.print("What is the name of pet # " + i) + ": "; - userInput.add(input.nextLine()); + while (numberOfPets <= 0) { + while (!input.hasNextInt()) { + System.out.println("That's not a valid number!"); + input.next(); + } + numberOfPets = input.nextInt(); + if (numberOfPets == 0) { + System.out.println("That's too bad, pets are great!"); + break; + } else if (numberOfPets < 0) { + System.out.println("That's not a valid number!"); + } } - - System.out.println("Thank you."); - System.out.println(Arrays.toString(userInput.toArray())); - - + System.out.println("Thanks. You have " + numberOfPets + " pets."); } - - } +// +// } else { + // numberOfPets = input.nextInt(); +// } + + // while (numberOfPets < 0) +// } +// System.out.println("Thanks, you have " + numberOfPets + " pets."); +// } \ No newline at end of file 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..fd0880a --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -0,0 +1,17 @@ +package io.zipcoder.polymorphism; + +public abstract class Pet { + String name; + + public Pet(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} From 53cd558d01610b4ff54157b06ea9e13c8fee4d76 Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Thu, 6 Jun 2019 17:59:54 -0400 Subject: [PATCH 04/11] Created petList. --- .../polymorphism/MainApplication.java | 55 +++++++++++++++---- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index fd859c6..defb905 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -6,6 +6,11 @@ public class MainApplication { + private static void petTypes(int number) { + System.out.println("Is pet # " + number + " a dog, cat, or bird ?"); + } + + public static void main(String[] args) { Scanner input = new Scanner(System.in); @@ -25,18 +30,46 @@ public static void main(String[] args) { System.out.println("That's not a valid number!"); } } - System.out.println("Thanks. You have " + numberOfPets + " pets."); - } + System.out.println("Thanks."); -} + ArrayList petList = new ArrayList(numberOfPets); + + for (int i = 0; i < numberOfPets; i++) { + + petTypes(i + 1); + String petType = input.next().toLowerCase(); + System.out.println(petType); + if (petType.equals("dog")) { + System.out.print("Enter your dog's name:\n"); + String petName = input.next(); + Dog dog = new Dog(petName); + petList.add(dog); + } else if (petType.equals("cat")) { + System.out.print("Enter your cat's name:\n"); + String petName = input.next(); + Cat cat = new Cat(petName); + petList.add(cat); + } else if (petType.equals("bird")) { + System.out.print("Enter your bird's name:\n"); + String petName = input.next(); + Bird bird = new Bird(petName); + petList.add(bird); + } else { + System.out.println("That is not a valid pet type."); + i--; + } + } + + +// System.out.println("Thank you."); +// System.out.println(Arrays.toString(petList.toArray())); // -// } else { - // numberOfPets = input.nextInt(); -// } - - // while (numberOfPets < 0) -// } -// System.out.println("Thanks, you have " + numberOfPets + " pets."); -// } \ No newline at end of file +// petList = new ArrayList(0); +// if (pets != null) { +// for (Pet each : pets) { +// addPet(each); + + } +} From b82882393bf016521d5667cdbc82010cd4afc0e6 Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Thu, 6 Jun 2019 19:00:03 -0400 Subject: [PATCH 05/11] Printed petlist with animal talks. --- src/main/java/io/zipcoder/polymorphism/Bird.java | 1 + src/main/java/io/zipcoder/polymorphism/Cat.java | 1 + src/main/java/io/zipcoder/polymorphism/Dog.java | 1 + .../io/zipcoder/polymorphism/MainApplication.java | 13 ++++--------- src/main/java/io/zipcoder/polymorphism/Pet.java | 3 +++ 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java index 8ed2e28..d486090 100644 --- a/src/main/java/io/zipcoder/polymorphism/Bird.java +++ b/src/main/java/io/zipcoder/polymorphism/Bird.java @@ -6,6 +6,7 @@ public Bird(String name) { super(name); } + @Override public String speak() { return "Chirp!"; } diff --git a/src/main/java/io/zipcoder/polymorphism/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java index 93166e1..6fbb5a7 100644 --- a/src/main/java/io/zipcoder/polymorphism/Cat.java +++ b/src/main/java/io/zipcoder/polymorphism/Cat.java @@ -6,6 +6,7 @@ public Cat(String name) { super(name); } + @Override public String speak() { return "Meow!"; } diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java index 602798a..294d634 100644 --- a/src/main/java/io/zipcoder/polymorphism/Dog.java +++ b/src/main/java/io/zipcoder/polymorphism/Dog.java @@ -6,6 +6,7 @@ public Dog(String name) { super(name); } + @Override public String speak() { return "Woof!"; } diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index defb905..e076836 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -39,7 +39,6 @@ public static void main(String[] args) { petTypes(i + 1); String petType = input.next().toLowerCase(); - System.out.println(petType); if (petType.equals("dog")) { System.out.print("Enter your dog's name:\n"); @@ -62,14 +61,10 @@ public static void main(String[] args) { } } - -// System.out.println("Thank you."); -// System.out.println(Arrays.toString(petList.toArray())); -// -// petList = new ArrayList(0); -// if (pets != null) { -// for (Pet each : pets) { -// addPet(each); + //print the petList + for (Pet each: petList){ + System.out.println(each.getName() + " says " + each.speak()); + } } } diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java index fd0880a..ed54fa3 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pet.java +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -14,4 +14,7 @@ public String getName() { public void setName(String name) { this.name = name; } + public String speak() { + return "animal talk!"; + } } From 50869fe10f4ec075a5d6c6f3990a87c83177ffde Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Fri, 7 Jun 2019 07:33:11 -0400 Subject: [PATCH 06/11] Alphabetical sort working --- pom.xml | 12 +++++++ .../java/io/zipcoder/polymorphism/Bird.java | 32 +++++++++++++++++-- .../java/io/zipcoder/polymorphism/Cat.java | 7 +++- .../java/io/zipcoder/polymorphism/Dog.java | 5 +++ .../polymorphism/MainApplication.java | 19 ++++++++--- .../java/io/zipcoder/polymorphism/Pet.java | 7 +++- .../java/io/zipcoder/polymorphism/sortBy.java | 16 ++++++++++ 7 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 src/main/java/io/zipcoder/polymorphism/sortBy.java diff --git a/pom.xml b/pom.xml index 93036ba..16a8444 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ io.zipcoder polymorphism 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + \ No newline at end of file diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java index d486090..c8b8328 100644 --- a/src/main/java/io/zipcoder/polymorphism/Bird.java +++ b/src/main/java/io/zipcoder/polymorphism/Bird.java @@ -1,8 +1,11 @@ package io.zipcoder.polymorphism; +import java.lang.Comparable; +import java.util.Collections; +import java.util.Comparator; public class Bird extends Pet{ - public Bird(String name) { + public Bird(String name){ super(name); } @@ -10,4 +13,29 @@ public Bird(String name) { public String speak() { return "Chirp!"; } -} + + public int compareTo(Pet o){ + return this.getName().compareTo(o.getName()); + } + + + +// public static Comparator petNameComparator +// = new Comparator() { +// +// public int compare(Pet pet1, Pet pet2) { +// +// String petName1 = pet1.getName().toUpperCase(); +// String petName2 = pet2.getName().toUpperCase(); +// +// //ascending order +// return petName1.compareTo(petName2); +// +// //descending order +// //return petName2.compareTo(petName1); +// } +// +// }; + + + } diff --git a/src/main/java/io/zipcoder/polymorphism/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java index 6fbb5a7..718cb39 100644 --- a/src/main/java/io/zipcoder/polymorphism/Cat.java +++ b/src/main/java/io/zipcoder/polymorphism/Cat.java @@ -1,6 +1,7 @@ package io.zipcoder.polymorphism; +import java.lang.Comparable; -public class Cat extends Pet { +public class Cat extends Pet{ public Cat(String name) { super(name); @@ -10,4 +11,8 @@ public Cat(String name) { public String speak() { return "Meow!"; } + + public int compareTo(Pet o){ + return this.getName().compareTo(o.getName()); + } } diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java index 294d634..ca0aad0 100644 --- a/src/main/java/io/zipcoder/polymorphism/Dog.java +++ b/src/main/java/io/zipcoder/polymorphism/Dog.java @@ -1,4 +1,5 @@ package io.zipcoder.polymorphism; +import java.lang.Comparable; public class Dog extends Pet{ @@ -10,4 +11,8 @@ public Dog(String name) { public String speak() { return "Woof!"; } + + public int compareTo(Pet o){ + return this.getName().compareTo(o.getName()); + } } diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index e076836..247be27 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -1,17 +1,18 @@ package io.zipcoder.polymorphism; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Scanner; +import java.util.*; + public class MainApplication { - private static void petTypes(int number) { + private static void petTypes(int number){ System.out.println("Is pet # " + number + " a dog, cat, or bird ?"); } + public static void main(String[] args) { + sortBy mySort = new sortBy(); Scanner input = new Scanner(System.in); int numberOfPets = 0; @@ -60,11 +61,19 @@ public static void main(String[] args) { i--; } } + System.out.println("Pets sorted by Name: "); + for (Pet each: mySort.sortByName(petList)){ + System.out.println(each.getName()); + } - //print the petList + + //print the petList + System.out.println("Pets say: "); for (Pet each: petList){ + System.out.println(each.getName() + " says " + each.speak()); } } + } diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java index ed54fa3..5bdbdf4 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pet.java +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -1,6 +1,6 @@ package io.zipcoder.polymorphism; -public abstract class Pet { +public abstract class Pet implements Comparable { String name; public Pet(String name) { @@ -17,4 +17,9 @@ public void setName(String name) { public String speak() { return "animal talk!"; } + + public abstract int compareTo(Pet o); + + + } diff --git a/src/main/java/io/zipcoder/polymorphism/sortBy.java b/src/main/java/io/zipcoder/polymorphism/sortBy.java new file mode 100644 index 0000000..abf12c7 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/sortBy.java @@ -0,0 +1,16 @@ +package io.zipcoder.polymorphism; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +public class sortBy { + + + public ArrayList sortByName(ArrayList petList){ + Comparator petNameComparator + = Comparator.comparing(Pet::getName); + Collections.sort(petList, petNameComparator); + return petList; + } +} From 2dc4e06feb685a136f894c99ff77a8c8043f203a Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Fri, 7 Jun 2019 07:56:17 -0400 Subject: [PATCH 07/11] Added type field for each pet. --- .../java/io/zipcoder/polymorphism/Bird.java | 23 ++----------------- .../java/io/zipcoder/polymorphism/Cat.java | 2 ++ .../java/io/zipcoder/polymorphism/Dog.java | 2 ++ .../polymorphism/MainApplication.java | 16 +++++++------ .../java/io/zipcoder/polymorphism/Pet.java | 9 ++++++++ .../java/io/zipcoder/polymorphism/sortBy.java | 2 +- 6 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/main/java/io/zipcoder/polymorphism/Bird.java b/src/main/java/io/zipcoder/polymorphism/Bird.java index c8b8328..8a7a748 100644 --- a/src/main/java/io/zipcoder/polymorphism/Bird.java +++ b/src/main/java/io/zipcoder/polymorphism/Bird.java @@ -7,6 +7,7 @@ public class Bird extends Pet{ public Bird(String name){ super(name); + this.type = "bird"; } @Override @@ -18,24 +19,4 @@ public int compareTo(Pet o){ return this.getName().compareTo(o.getName()); } - - -// public static Comparator petNameComparator -// = new Comparator() { -// -// public int compare(Pet pet1, Pet pet2) { -// -// String petName1 = pet1.getName().toUpperCase(); -// String petName2 = pet2.getName().toUpperCase(); -// -// //ascending order -// return petName1.compareTo(petName2); -// -// //descending order -// //return petName2.compareTo(petName1); -// } -// -// }; - - - } +} diff --git a/src/main/java/io/zipcoder/polymorphism/Cat.java b/src/main/java/io/zipcoder/polymorphism/Cat.java index 718cb39..d49ecb8 100644 --- a/src/main/java/io/zipcoder/polymorphism/Cat.java +++ b/src/main/java/io/zipcoder/polymorphism/Cat.java @@ -5,6 +5,7 @@ public class Cat extends Pet{ public Cat(String name) { super(name); + this.type = "cat"; } @Override @@ -15,4 +16,5 @@ public String speak() { public int compareTo(Pet o){ return this.getName().compareTo(o.getName()); } + } diff --git a/src/main/java/io/zipcoder/polymorphism/Dog.java b/src/main/java/io/zipcoder/polymorphism/Dog.java index ca0aad0..0d883dd 100644 --- a/src/main/java/io/zipcoder/polymorphism/Dog.java +++ b/src/main/java/io/zipcoder/polymorphism/Dog.java @@ -5,6 +5,7 @@ public class Dog extends Pet{ public Dog(String name) { super(name); + this.type = "dog"; } @Override @@ -15,4 +16,5 @@ public String speak() { public int compareTo(Pet o){ return this.getName().compareTo(o.getName()); } + } diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index 247be27..84cc7df 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -5,18 +5,18 @@ public class MainApplication { + //method to prompt for petType private static void petTypes(int number){ System.out.println("Is pet # " + number + " a dog, cat, or bird ?"); } - - public static void main(String[] args) { - sortBy mySort = new sortBy(); Scanner input = new Scanner(System.in); int numberOfPets = 0; + sortBy mySort = new sortBy(); + //Get numberOfPets from user input System.out.print("How many pets do you have: "); while (numberOfPets <= 0) { while (!input.hasNextInt()) { @@ -33,7 +33,7 @@ public static void main(String[] args) { } System.out.println("Thanks."); - + //create newpetList and fill based on user input ArrayList petList = new ArrayList(numberOfPets); for (int i = 0; i < numberOfPets; i++) { @@ -61,18 +61,20 @@ public static void main(String[] args) { i--; } } + + //print petList sorted by Name System.out.println("Pets sorted by Name: "); for (Pet each: mySort.sortByName(petList)){ System.out.println(each.getName()); } + System.out.println(); - - //print the petList + //print what pets say System.out.println("Pets say: "); for (Pet each: petList){ - System.out.println(each.getName() + " says " + each.speak()); } + System.out.println(); } diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java index 5bdbdf4..c0a27cb 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pet.java +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -2,6 +2,7 @@ public abstract class Pet implements Comparable { String name; + String type; public Pet(String name) { this.name = name; @@ -18,6 +19,14 @@ public String speak() { return "animal talk!"; } + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + public abstract int compareTo(Pet o); diff --git a/src/main/java/io/zipcoder/polymorphism/sortBy.java b/src/main/java/io/zipcoder/polymorphism/sortBy.java index abf12c7..cb84c30 100644 --- a/src/main/java/io/zipcoder/polymorphism/sortBy.java +++ b/src/main/java/io/zipcoder/polymorphism/sortBy.java @@ -6,11 +6,11 @@ public class sortBy { - public ArrayList sortByName(ArrayList petList){ Comparator petNameComparator = Comparator.comparing(Pet::getName); Collections.sort(petList, petNameComparator); return petList; } + } From 2a016725a77cc05681a7315a7f30e429add99c0d Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Fri, 7 Jun 2019 08:03:26 -0400 Subject: [PATCH 08/11] Added method to sort by Type. --- .../java/io/zipcoder/polymorphism/MainApplication.java | 6 ++++++ src/main/java/io/zipcoder/polymorphism/sortBy.java | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index 84cc7df..fc0ee39 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -76,6 +76,12 @@ public static void main(String[] args) { } System.out.println(); + //print petList sorted by Type + System.out.println("Pets sorted by Type: "); + for (Pet each: mySort.sortByType(petList)){ + System.out.println(each.getName() + " is a " + each.getType()); + } + System.out.println(); } } diff --git a/src/main/java/io/zipcoder/polymorphism/sortBy.java b/src/main/java/io/zipcoder/polymorphism/sortBy.java index cb84c30..621afc9 100644 --- a/src/main/java/io/zipcoder/polymorphism/sortBy.java +++ b/src/main/java/io/zipcoder/polymorphism/sortBy.java @@ -13,4 +13,11 @@ public ArrayList sortByName(ArrayList petList){ return petList; } + public ArrayList sortByType(ArrayList petList){ + Comparator petTypeComparator + = Comparator.comparing(Pet::getType); + Collections.sort(petList, petTypeComparator); + return petList; + } + } From 4fdb991a6b74fa0c12d58d23028c50fc94fd02d5 Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Fri, 7 Jun 2019 12:14:30 -0400 Subject: [PATCH 09/11] Broke out the input and the make pet methods. --- .../io/zipcoder/polymorphism/CreatePet.java | 21 ++++ .../polymorphism/MainApplication.java | 116 ++++++++---------- .../io/zipcoder/polymorphism/Mediator.java | 27 ++++ .../io/zipcoder/polymorphism/UserInput.java | 51 ++++++++ 4 files changed, 148 insertions(+), 67 deletions(-) create mode 100644 src/main/java/io/zipcoder/polymorphism/CreatePet.java create mode 100644 src/main/java/io/zipcoder/polymorphism/Mediator.java create mode 100644 src/main/java/io/zipcoder/polymorphism/UserInput.java diff --git a/src/main/java/io/zipcoder/polymorphism/CreatePet.java b/src/main/java/io/zipcoder/polymorphism/CreatePet.java new file mode 100644 index 0000000..c79b032 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/CreatePet.java @@ -0,0 +1,21 @@ +package io.zipcoder.polymorphism; + +import java.util.ArrayList; + +public class CreatePet { + + /* method to createPet */ + public void createPet(ArrayList petList, String petType, String petName) { + if (petType.equals("dog")) { + Dog dog = new Dog(petName); + petList.add(dog); + } else if (petType.equals("cat")) { + Cat cat = new Cat(petName); + petList.add(cat); + } else if (petType.equals("bird")) { + Bird bird = new Bird(petName); + petList.add(bird); + } + } + +} diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index fc0ee39..77f4b58 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -5,83 +5,65 @@ public class MainApplication { - //method to prompt for petType - private static void petTypes(int number){ - System.out.println("Is pet # " + number + " a dog, cat, or bird ?"); - } public static void main(String[] args) { - Scanner input = new Scanner(System.in); - int numberOfPets = 0; - sortBy mySort = new sortBy(); - - //Get numberOfPets from user input - System.out.print("How many pets do you have: "); - while (numberOfPets <= 0) { - while (!input.hasNextInt()) { - System.out.println("That's not a valid number!"); - input.next(); - } - numberOfPets = input.nextInt(); - if (numberOfPets == 0) { - System.out.println("That's too bad, pets are great!"); - break; - } else if (numberOfPets < 0) { - System.out.println("That's not a valid number!"); - } - } - System.out.println("Thanks."); + // sortBy mySort = new sortBy(); + Mediator mediator = new Mediator(); + mediator.handleInput(); - //create newpetList and fill based on user input - ArrayList petList = new ArrayList(numberOfPets); - for (int i = 0; i < numberOfPets; i++) { - petTypes(i + 1); - String petType = input.next().toLowerCase(); - if (petType.equals("dog")) { - System.out.print("Enter your dog's name:\n"); - String petName = input.next(); - Dog dog = new Dog(petName); - petList.add(dog); - } else if (petType.equals("cat")) { - System.out.print("Enter your cat's name:\n"); - String petName = input.next(); - Cat cat = new Cat(petName); - petList.add(cat); - } else if (petType.equals("bird")) { - System.out.print("Enter your bird's name:\n"); - String petName = input.next(); - Bird bird = new Bird(petName); - petList.add(bird); - } else { - System.out.println("That is not a valid pet type."); - i--; - } - } + //create newpetList and fill based on user input - //print petList sorted by Name - System.out.println("Pets sorted by Name: "); - for (Pet each: mySort.sortByName(petList)){ - System.out.println(each.getName()); - } - System.out.println(); - //print what pets say - System.out.println("Pets say: "); - for (Pet each: petList){ - System.out.println(each.getName() + " says " + each.speak()); - } - System.out.println(); +// for (int i = 0; i < numberOfPets; i++) { +// +// petTypes(i + 1); +// String petType = input.next().toLowerCase(); +// +// if (petType.equals("dog")) { +// System.out.print("Enter your dog's name:\n"); +// String petName = input.next(); +// Dog dog = new Dog(petName); +// petList.add(dog); +// } else if (petType.equals("cat")) { +// System.out.print("Enter your cat's name:\n"); +// String petName = input.next(); +// Cat cat = new Cat(petName); +// petList.add(cat); +// } else if (petType.equals("bird")) { +// System.out.print("Enter your bird's name:\n"); +// String petName = input.next(); +// Bird bird = new Bird(petName); +// petList.add(bird); +// } else { +// System.out.println("That is not a valid pet type."); +// i--; +// } +// } - //print petList sorted by Type - System.out.println("Pets sorted by Type: "); - for (Pet each: mySort.sortByType(petList)){ - System.out.println(each.getName() + " is a " + each.getType()); - } - System.out.println(); +// //print petList sorted by Name +// System.out.println("Pets sorted by Name: "); +// for (Pet each: mySort.sortByName(petList)){ +// System.out.println(each.getName()); +// } +// System.out.println(); +// +// //print what pets say +// System.out.println("Pets say: "); +// for (Pet each: petList){ +// System.out.println(each.getName() + " says " + each.speak()); +// } +// System.out.println(); +// +// //print petList sorted by Type +// System.out.println("Pets sorted by Type: "); +// for (Pet each: mySort.sortByType(petList)){ +// System.out.println(each.getName() + " is a " + each.getType()); +// } +// System.out.println(); } } diff --git a/src/main/java/io/zipcoder/polymorphism/Mediator.java b/src/main/java/io/zipcoder/polymorphism/Mediator.java new file mode 100644 index 0000000..fe4a53a --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Mediator.java @@ -0,0 +1,27 @@ +package io.zipcoder.polymorphism; + +import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIConversion; + +import java.util.ArrayList; +import java.util.Arrays; + +public class Mediator { + ArrayList petList = new ArrayList(); + + public void handleInput() { + UserInput input = new UserInput(); + int numberPets = input.getNumberOfPets(); + System.out.println(numberPets); + + for (int i=0; i < numberPets; i++){ + String petType = input.getPetType(i); + String petName = input.getPetName(); + CreatePet newPet = new CreatePet(); + newPet.createPet(petList, petType, petName); + System.out.println( petType + " " + petName + " created"); + } + } + + + +} diff --git a/src/main/java/io/zipcoder/polymorphism/UserInput.java b/src/main/java/io/zipcoder/polymorphism/UserInput.java new file mode 100644 index 0000000..9077e5b --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/UserInput.java @@ -0,0 +1,51 @@ +package io.zipcoder.polymorphism; + +import java.util.Scanner; + +public class UserInput { + Scanner input = new Scanner(System.in); + + /* method to getNumberOfPets from user */ + public Integer getNumberOfPets() { + int numberOfPets = 0; + System.out.print("How many pets do you have: "); + while (numberOfPets <= 0) { + while (!input.hasNextInt()) { + System.out.println("That's not a valid number!"); + input.next(); + } + numberOfPets = input.nextInt(); + if (numberOfPets == 0) { + System.out.println("That's too bad, pets are great!"); + break; + } else if (numberOfPets < 0) { + System.out.println("That's not a valid number!"); + } + } + System.out.println("Thanks."); + return numberOfPets; + } + + /* method to prompt for petType */ + public String getPetType(int i) { + String petType = ""; + System.out.println("Is pet " + (i+1) + " a dog, cat, or bird ?"); + while ((!((petType.equals("dog")) || (petType.equals("cat")) || (petType.equals("bird")) ))) { + petType = input.next().toLowerCase(); + if ((!((petType.equals("dog")) || (petType.equals("cat")) || (petType.equals("bird"))))) { + System.out.println("That is not a valid pet type."); + System.out.println("Is pet a dog, cat, or bird ?"); + } + } + return petType; + } + + + /* method to prompt for petName */ + public String getPetName() { + System.out.print("Enter your pet's name:\n"); + String petName = input.next(); + return petName; + } + +} From 4216d5192fbb5e2ae42f1973cc56af2287461b0f Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Fri, 7 Jun 2019 13:00:58 -0400 Subject: [PATCH 10/11] Sort and print methods reincorporated --- .../polymorphism/MainApplication.java | 56 +------------------ .../io/zipcoder/polymorphism/Mediator.java | 27 +++++++++ .../java/io/zipcoder/polymorphism/Pet.java | 8 ++- 3 files changed, 36 insertions(+), 55 deletions(-) diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index 77f4b58..a58d7a4 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -5,65 +5,13 @@ public class MainApplication { - public static void main(String[] args) { - // sortBy mySort = new sortBy(); Mediator mediator = new Mediator(); mediator.handleInput(); + mediator.handleSorts(); + mediator.petSpeak(); - - - - //create newpetList and fill based on user input - - -// for (int i = 0; i < numberOfPets; i++) { -// -// petTypes(i + 1); -// String petType = input.next().toLowerCase(); -// -// if (petType.equals("dog")) { -// System.out.print("Enter your dog's name:\n"); -// String petName = input.next(); -// Dog dog = new Dog(petName); -// petList.add(dog); -// } else if (petType.equals("cat")) { -// System.out.print("Enter your cat's name:\n"); -// String petName = input.next(); -// Cat cat = new Cat(petName); -// petList.add(cat); -// } else if (petType.equals("bird")) { -// System.out.print("Enter your bird's name:\n"); -// String petName = input.next(); -// Bird bird = new Bird(petName); -// petList.add(bird); -// } else { -// System.out.println("That is not a valid pet type."); -// i--; -// } -// } - -// //print petList sorted by Name -// System.out.println("Pets sorted by Name: "); -// for (Pet each: mySort.sortByName(petList)){ -// System.out.println(each.getName()); -// } -// System.out.println(); -// -// //print what pets say -// System.out.println("Pets say: "); -// for (Pet each: petList){ -// System.out.println(each.getName() + " says " + each.speak()); -// } -// System.out.println(); -// -// //print petList sorted by Type -// System.out.println("Pets sorted by Type: "); -// for (Pet each: mySort.sortByType(petList)){ -// System.out.println(each.getName() + " is a " + each.getType()); -// } -// System.out.println(); } } diff --git a/src/main/java/io/zipcoder/polymorphism/Mediator.java b/src/main/java/io/zipcoder/polymorphism/Mediator.java index fe4a53a..04bd8aa 100644 --- a/src/main/java/io/zipcoder/polymorphism/Mediator.java +++ b/src/main/java/io/zipcoder/polymorphism/Mediator.java @@ -20,8 +20,35 @@ public void handleInput() { newPet.createPet(petList, petType, petName); System.out.println( petType + " " + petName + " created"); } + System.out.println(); } + public void handleSorts() { + sortBy mySort = new sortBy(); + + //print petList sorted by Name + System.out.println("Pets sorted by Name: "); + for (Pet each: mySort.sortByName(petList)){ + System.out.println(each.getName()); + } + System.out.println(); + + //print petList sorted by Type + System.out.println("Pets sorted by Type: "); + for (Pet each: mySort.sortByType(petList)){ + System.out.println(each.getName() + " is a " + each.getType()); + } + System.out.println(); + } + + //print what pets say + public void petSpeak() { + System.out.println("Pets say: "); + for (Pet each : petList) { + System.out.println(each.getName() + " says " + each.speak()); + } + System.out.println(); + } } diff --git a/src/main/java/io/zipcoder/polymorphism/Pet.java b/src/main/java/io/zipcoder/polymorphism/Pet.java index c0a27cb..86b84c1 100644 --- a/src/main/java/io/zipcoder/polymorphism/Pet.java +++ b/src/main/java/io/zipcoder/polymorphism/Pet.java @@ -1,5 +1,7 @@ package io.zipcoder.polymorphism; +import java.util.ArrayList; + public abstract class Pet implements Comparable { String name; String type; @@ -29,6 +31,10 @@ public void setType(String type) { public abstract int compareTo(Pet o); - + @Override + public String toString() { + return "Pet list: " + + "name: " + getName() + ' ' + getType() + '\n'; + } } From feea3cf2a9f3cf28b6ec19fdbdaf3893d106b3d2 Mon Sep 17 00:00:00 2001 From: donnasvinis Date: Fri, 7 Jun 2019 13:17:03 -0400 Subject: [PATCH 11/11] Output method created for all prints to console. --- .../io/zipcoder/polymorphism/CreatePet.java | 2 +- .../polymorphism/MainApplication.java | 3 +- .../io/zipcoder/polymorphism/Mediator.java | 31 +++------------- .../java/io/zipcoder/polymorphism/Output.java | 35 +++++++++++++++++++ .../io/zipcoder/polymorphism/UserInput.java | 1 - 5 files changed, 42 insertions(+), 30 deletions(-) create mode 100644 src/main/java/io/zipcoder/polymorphism/Output.java diff --git a/src/main/java/io/zipcoder/polymorphism/CreatePet.java b/src/main/java/io/zipcoder/polymorphism/CreatePet.java index c79b032..455c76d 100644 --- a/src/main/java/io/zipcoder/polymorphism/CreatePet.java +++ b/src/main/java/io/zipcoder/polymorphism/CreatePet.java @@ -5,7 +5,7 @@ public class CreatePet { /* method to createPet */ - public void createPet(ArrayList petList, String petType, String petName) { + public void createPet(ArrayList petList, String petType, String petName) { if (petType.equals("dog")) { Dog dog = new Dog(petName); petList.add(dog); diff --git a/src/main/java/io/zipcoder/polymorphism/MainApplication.java b/src/main/java/io/zipcoder/polymorphism/MainApplication.java index a58d7a4..06719f5 100644 --- a/src/main/java/io/zipcoder/polymorphism/MainApplication.java +++ b/src/main/java/io/zipcoder/polymorphism/MainApplication.java @@ -9,8 +9,7 @@ public static void main(String[] args) { Mediator mediator = new Mediator(); mediator.handleInput(); - mediator.handleSorts(); - mediator.petSpeak(); + mediator.handleOutputs(); } diff --git a/src/main/java/io/zipcoder/polymorphism/Mediator.java b/src/main/java/io/zipcoder/polymorphism/Mediator.java index 04bd8aa..da6b70d 100644 --- a/src/main/java/io/zipcoder/polymorphism/Mediator.java +++ b/src/main/java/io/zipcoder/polymorphism/Mediator.java @@ -23,32 +23,11 @@ public void handleInput() { System.out.println(); } - public void handleSorts() { - sortBy mySort = new sortBy(); - - //print petList sorted by Name - System.out.println("Pets sorted by Name: "); - for (Pet each: mySort.sortByName(petList)){ - System.out.println(each.getName()); - } - System.out.println(); - - //print petList sorted by Type - System.out.println("Pets sorted by Type: "); - for (Pet each: mySort.sortByType(petList)){ - System.out.println(each.getName() + " is a " + each.getType()); - } - System.out.println(); + public void handleOutputs() { + Output output = new Output(); + output.petSpeak(petList); + output.listSortedByName(petList); + output.listSortedByType(petList); } - //print what pets say - public void petSpeak() { - System.out.println("Pets say: "); - for (Pet each : petList) { - System.out.println(each.getName() + " says " + each.speak()); - } - - System.out.println(); - - } } diff --git a/src/main/java/io/zipcoder/polymorphism/Output.java b/src/main/java/io/zipcoder/polymorphism/Output.java new file mode 100644 index 0000000..91d5136 --- /dev/null +++ b/src/main/java/io/zipcoder/polymorphism/Output.java @@ -0,0 +1,35 @@ +package io.zipcoder.polymorphism; + +import java.util.ArrayList; + +public class Output { + sortBy mySort = new sortBy(); + + // method to print petList sorted by Name + public void listSortedByName(ArrayList petList){ + System.out.println("Pets sorted by Name: "); + for (Pet each: mySort.sortByName(petList)){ + System.out.println(each.getName()); + } + System.out.println(); + } + + //method to print petList sorted by Type + public void listSortedByType(ArrayList petList){ + System.out.println("Pets sorted by Type: "); + for (Pet each: mySort.sortByType(petList)){ + System.out.println(each.getName() + " is a " + each.getType()); + } + System.out.println(); + } + + //method to print what pets say + public void petSpeak(ArrayList petList) { + System.out.println("Pets say: "); + for (Pet each : petList) { + System.out.println(each.getName() + " says " + each.speak()); + } + System.out.println(); + } + +} diff --git a/src/main/java/io/zipcoder/polymorphism/UserInput.java b/src/main/java/io/zipcoder/polymorphism/UserInput.java index 9077e5b..fbce625 100644 --- a/src/main/java/io/zipcoder/polymorphism/UserInput.java +++ b/src/main/java/io/zipcoder/polymorphism/UserInput.java @@ -40,7 +40,6 @@ public String getPetType(int i) { return petType; } - /* method to prompt for petName */ public String getPetName() { System.out.print("Enter your pet's name:\n");