From e5102ac37c0f06330305d79cc875326e775a0ad8 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Tue, 20 Jul 2021 18:33:41 -0400 Subject: [PATCH 1/9] parts 1 and 2 complete --- .idea/.gitignore | 3 ++ .idea/compiler.xml | 16 +++++++++++ .idea/encodings.xml | 6 ++++ .idea/jarRepositories.xml | 20 +++++++++++++ .idea/libraries/Maven__junit_junit_4_12.xml | 13 +++++++++ .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 +++++++++ .idea/misc.xml | 11 ++++++++ .idea/modules.xml | 8 ++++++ .idea/vcs.xml | 6 ++++ interfaces-1.iml | 16 +++++++++++ pom.xml | 12 ++++++++ .../java/io/zipcoder/interfaces/Learner.java | 9 ++++++ .../java/io/zipcoder/interfaces/Person.java | 21 ++++++++++++++ .../io/zipcoder/interfaces/TestPerson.java | 28 +++++++++++++++++++ 14 files changed, 182 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 interfaces-1.iml create mode 100644 src/main/java/io/zipcoder/interfaces/Learner.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..e37052f0 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..63e90019 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 00000000..712ab9d9 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 00000000..d4110417 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 00000000..f58bbc11 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..c25c320e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..711b3a53 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/interfaces-1.iml b/interfaces-1.iml new file mode 100644 index 00000000..cba8d6b0 --- /dev/null +++ b/interfaces-1.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index f0effe12..b69da293 100644 --- a/pom.xml +++ b/pom.xml @@ -5,6 +5,18 @@ io.zipcoder interfaces-1 0.0.1-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 15 + 15 + + + + jar interfaces-1 diff --git a/src/main/java/io/zipcoder/interfaces/Learner.java b/src/main/java/io/zipcoder/interfaces/Learner.java new file mode 100644 index 00000000..3cce0328 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Learner.java @@ -0,0 +1,9 @@ +package io.zipcoder.interfaces; + +public interface Learner { + + void learn(double numberOfHours); + + Double getTotalStudyTime(); + +} diff --git a/src/main/java/io/zipcoder/interfaces/Person.java b/src/main/java/io/zipcoder/interfaces/Person.java index fc6a3ffe..f19516df 100644 --- a/src/main/java/io/zipcoder/interfaces/Person.java +++ b/src/main/java/io/zipcoder/interfaces/Person.java @@ -2,4 +2,25 @@ public class Person { + private final long id; + private String name; + + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } diff --git a/src/test/java/io/zipcoder/interfaces/TestPerson.java b/src/test/java/io/zipcoder/interfaces/TestPerson.java index d64cd2f0..706eaff9 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPerson.java +++ b/src/test/java/io/zipcoder/interfaces/TestPerson.java @@ -1,5 +1,33 @@ package io.zipcoder.interfaces; +import org.junit.Assert; +import org.junit.Test; + public class TestPerson { + @Test + public void testConstructor() { + //given + long expectedId = 0; + String expectedName = "Tyler"; + //when + Person person = new Person(expectedId, expectedName); + long actualId = person.getId(); + String actualName = person.getName(); + //then + Assert.assertEquals(expectedId, actualId); + Assert.assertEquals(expectedName, actualName); + } + + @Test + public void testSetName() { + //given + String expectedName = "Stephen"; + //when + Person person = new Person(0, expectedName); + String actualName = person.getName(); + //then + Assert.assertEquals(expectedName, actualName); + } + } From cd06ceccf2628520252f6a5e0da214112fcab381 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Tue, 20 Jul 2021 19:25:49 -0400 Subject: [PATCH 2/9] saving progress --- .../java/io/zipcoder/interfaces/Student.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/io/zipcoder/interfaces/Student.java diff --git a/src/main/java/io/zipcoder/interfaces/Student.java b/src/main/java/io/zipcoder/interfaces/Student.java new file mode 100644 index 00000000..87222f26 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -0,0 +1,21 @@ +package io.zipcoder.interfaces; + +public class Student extends Person implements Learner{ + + double totalStudyTime; + + public Student(long id, String name) { + super(id, name); + this.totalStudyTime = totalStudyTime; + } + + @Override + public void learn(double numberOfHours) { + totalStudyTime = getTotalStudyTime() + numberOfHours; + } + + @Override + public Double getTotalStudyTime() { + return totalStudyTime; + } +} From 9e3bd406115f366d2f85cc597c46c40779bf0047 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Wed, 21 Jul 2021 12:07:11 -0400 Subject: [PATCH 3/9] part 3 complete --- .../java/io/zipcoder/interfaces/Student.java | 3 +- .../io/zipcoder/interfaces/TestStudent.java | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/test/java/io/zipcoder/interfaces/TestStudent.java diff --git a/src/main/java/io/zipcoder/interfaces/Student.java b/src/main/java/io/zipcoder/interfaces/Student.java index 87222f26..f83b1877 100644 --- a/src/main/java/io/zipcoder/interfaces/Student.java +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -4,13 +4,14 @@ public class Student extends Person implements Learner{ double totalStudyTime; - public Student(long id, String name) { + public Student(long id, String name, double totalStudyTime) { super(id, name); this.totalStudyTime = totalStudyTime; } @Override public void learn(double numberOfHours) { + totalStudyTime = getTotalStudyTime() + numberOfHours; } diff --git a/src/test/java/io/zipcoder/interfaces/TestStudent.java b/src/test/java/io/zipcoder/interfaces/TestStudent.java new file mode 100644 index 00000000..34f9a140 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java @@ -0,0 +1,35 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.assertTrue; + +public class TestStudent { + + @Test + public void testInstanceOfLearner() { + Student student = new Student(0, "Jackson", 5.0); + assertTrue(student instanceof Learner); + } + + @Test + public void testInstanceOfPerson() { + Student student = new Student(0, "Ryland", 5.0); + assertTrue(student instanceof Person); + } + + @Test + public void testLearn() { + //given + double currentTotalStudyTime = 5.0; + double expected = 8.5; + Student student = new Student(0, "Candace", currentTotalStudyTime); + //when + student.learn(3.5); + double actual = student.getTotalStudyTime(); + //then + Assert.assertEquals(expected, actual, 0.001); + + } +} From fb8a592b61a85728fcfbd5f696526a51149bf015 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Wed, 21 Jul 2021 13:17:19 -0400 Subject: [PATCH 4/9] saving for lecture added Instructor class --- .../io/zipcoder/interfaces/Instructor.java | 21 +++++++++++++ .../java/io/zipcoder/interfaces/Teacher.java | 9 ++++++ .../zipcoder/interfaces/TestInstructor.java | 31 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 src/main/java/io/zipcoder/interfaces/Instructor.java create mode 100644 src/main/java/io/zipcoder/interfaces/Teacher.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestInstructor.java diff --git a/src/main/java/io/zipcoder/interfaces/Instructor.java b/src/main/java/io/zipcoder/interfaces/Instructor.java new file mode 100644 index 00000000..aee1b1db --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructor.java @@ -0,0 +1,21 @@ +package io.zipcoder.interfaces; + +public class Instructor extends Person implements Teacher{ + + + public Instructor(long id, String name) { + super(id, name); + } + + @Override + public void teach(Learner learner, double numberOfHours) { + learner.learn(numberOfHours); + } + + @Override + public void lecture(Learner[] learners, double numberOfHours) { + for(Learner element : learners) { + element.learn(numberOfHours / learners.length); + } + } +} diff --git a/src/main/java/io/zipcoder/interfaces/Teacher.java b/src/main/java/io/zipcoder/interfaces/Teacher.java new file mode 100644 index 00000000..fad489d6 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Teacher.java @@ -0,0 +1,9 @@ +package io.zipcoder.interfaces; + +public interface Teacher { + + void teach(Learner learner, double numberOfHours); + + void lecture(Learner[] learners, double numberOfHours); + +} diff --git a/src/test/java/io/zipcoder/interfaces/TestInstructor.java b/src/test/java/io/zipcoder/interfaces/TestInstructor.java new file mode 100644 index 00000000..d8278b19 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -0,0 +1,31 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructor { + + @Test + public void testImplementation() { + Instructor instructor = new Instructor(0, "Kyle"); + Assert.assertTrue(instructor instanceof Teacher); + } + + @Test + public void testInheritance() { + Instructor instructor = new Instructor(0, "Liz"); + Assert.assertTrue(instructor instanceof Person); + } + + @Test + public void testTeach() { + //given + Instructor instructor = new Instructor(0, "Leon"); + Learner learner = new Student(0, "Stephen", 8.0); + //when + + //then + + } + +} From a33c5fac741eb08a323c3f3a2771444e112f23ea Mon Sep 17 00:00:00 2001 From: jgiroso Date: Wed, 21 Jul 2021 18:43:25 -0400 Subject: [PATCH 5/9] part 5 complete --- .../io/zipcoder/interfaces/Instructor.java | 1 + .../zipcoder/interfaces/TestInstructor.java | 27 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/zipcoder/interfaces/Instructor.java b/src/main/java/io/zipcoder/interfaces/Instructor.java index aee1b1db..c2473855 100644 --- a/src/main/java/io/zipcoder/interfaces/Instructor.java +++ b/src/main/java/io/zipcoder/interfaces/Instructor.java @@ -2,6 +2,7 @@ public class Instructor extends Person implements Teacher{ + Learner[] learners; public Instructor(long id, String name) { super(id, name); diff --git a/src/test/java/io/zipcoder/interfaces/TestInstructor.java b/src/test/java/io/zipcoder/interfaces/TestInstructor.java index d8278b19..9e91548e 100644 --- a/src/test/java/io/zipcoder/interfaces/TestInstructor.java +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -20,12 +20,35 @@ public void testInheritance() { @Test public void testTeach() { //given + double expected = 16.0; Instructor instructor = new Instructor(0, "Leon"); Learner learner = new Student(0, "Stephen", 8.0); //when - + instructor.teach(learner, 8.0); + double actual = learner.getTotalStudyTime(); //then - + Assert.assertEquals(expected, actual, 0.001); } + @Test + public void testLecture() { + //given + double expected1 = 12.0; + double expected2 = 10.0; + double expected3 = 14.0; + Learner learner1 = new Student(0, "Sabrina", 7.0); + Learner learner2 = new Student(1, "Nicolette", 5.0); + Learner learner3 = new Student(2, "Jason", 9.0); + //when + Instructor instructor = new Instructor(0, "Ted"); + Learner[] learners = new Learner[]{learner1, learner2, learner3}; + instructor.lecture(learners, 15); + double actual1 = learner1.getTotalStudyTime(); + double actual2 = learner2.getTotalStudyTime(); + double actual3 = learner3.getTotalStudyTime(); + //then + Assert.assertEquals(expected1, actual1, 0.001); + Assert.assertEquals(expected2, actual2, 0.001); + Assert.assertEquals(expected3, actual3, 0.001); + } } From 55f88a66d1a1afcf41c153886bf7f67b311945ee Mon Sep 17 00:00:00 2001 From: jgiroso Date: Fri, 23 Jul 2021 22:18:19 -0400 Subject: [PATCH 6/9] starting part 9 --- .../io/zipcoder/interfaces/Instructors.java | 16 ++++++ .../java/io/zipcoder/interfaces/People.java | 55 +++++++++++++++++++ .../java/io/zipcoder/interfaces/Student.java | 5 +- .../java/io/zipcoder/interfaces/Students.java | 16 ++++++ .../interfaces/ZipCodeWilmington.java | 4 ++ .../zipcoder/interfaces/TestInstructor.java | 16 +++--- .../zipcoder/interfaces/TestInstructors.java | 18 ++++++ .../io/zipcoder/interfaces/TestPeople.java | 42 ++++++++++++++ .../io/zipcoder/interfaces/TestStudent.java | 9 ++- .../io/zipcoder/interfaces/TestStudents.java | 18 ++++++ 10 files changed, 183 insertions(+), 16 deletions(-) create mode 100644 src/main/java/io/zipcoder/interfaces/Instructors.java create mode 100644 src/main/java/io/zipcoder/interfaces/People.java create mode 100644 src/main/java/io/zipcoder/interfaces/Students.java create mode 100644 src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestInstructors.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestPeople.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestStudents.java diff --git a/src/main/java/io/zipcoder/interfaces/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java new file mode 100644 index 00000000..fc3a7d57 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -0,0 +1,16 @@ +package io.zipcoder.interfaces; + +public class Instructors extends People { + + private static final Instructors INSTANCE = new Instructors(); + + private Instructors() { + this.add(new Instructor(1L, "Leon")); + this.add(new Instructor(2L, "Dolio")); + this.add(new Instructor(3L, "Dan")); + this.add(new Instructor(4L, "Liz")); + } + + public static Instructors getInstance() { return INSTANCE; } + +} diff --git a/src/main/java/io/zipcoder/interfaces/People.java b/src/main/java/io/zipcoder/interfaces/People.java new file mode 100644 index 00000000..54da6c8f --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/People.java @@ -0,0 +1,55 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class People implements Iterable{ + + List personList = new ArrayList<>(); + + public void add(Person person) { + personList.add(person); + } + + public Person findByID(long id) { + for (Person person : personList) + if (person.getId() == id) + return person; + return null; + } + + public boolean contains(Person person) { + if(personList.contains(person)) + return true; + return false; + } + + public void remove(Person person) { + if(contains(person)) { + personList.remove(person); + } + } + + public void removeById(long id) { + Person person = findByID(id); + remove(person); + } + + public void removeAll() { + personList.clear(); + } + + public Integer count() { + return personList.size(); + } + + public Person[] toArray() { + return (Person[]) personList.toArray(); + } + + public Iterator iterator() { + return personList.iterator(); + } + +} diff --git a/src/main/java/io/zipcoder/interfaces/Student.java b/src/main/java/io/zipcoder/interfaces/Student.java index f83b1877..d2ababda 100644 --- a/src/main/java/io/zipcoder/interfaces/Student.java +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -2,11 +2,10 @@ public class Student extends Person implements Learner{ - double totalStudyTime; + private double totalStudyTime; - public Student(long id, String name, double totalStudyTime) { + public Student(long id, String name) { super(id, name); - this.totalStudyTime = totalStudyTime; } @Override diff --git a/src/main/java/io/zipcoder/interfaces/Students.java b/src/main/java/io/zipcoder/interfaces/Students.java new file mode 100644 index 00000000..4f34e4ab --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -0,0 +1,16 @@ +package io.zipcoder.interfaces; + +public class Students extends People{ + + private static final Students INSTANCE = new Students(); + + private Students() { + this.add(new Student(1L, "Jen")); + this.add(new Student(2L, "Dee")); + this.add(new Student(3L, "Zach")); + this.add(new Student(4L, "Jeremy")); + } + + public static Students getInstance() { return INSTANCE; } + +} diff --git a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java new file mode 100644 index 00000000..f9bad7e6 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java @@ -0,0 +1,4 @@ +package io.zipcoder.interfaces; + +public class ZipCodeWilmington { +} diff --git a/src/test/java/io/zipcoder/interfaces/TestInstructor.java b/src/test/java/io/zipcoder/interfaces/TestInstructor.java index 9e91548e..d0b803b1 100644 --- a/src/test/java/io/zipcoder/interfaces/TestInstructor.java +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -20,9 +20,9 @@ public void testInheritance() { @Test public void testTeach() { //given - double expected = 16.0; + double expected = 8.0; Instructor instructor = new Instructor(0, "Leon"); - Learner learner = new Student(0, "Stephen", 8.0); + Learner learner = new Student(0, "Stephen"); //when instructor.teach(learner, 8.0); double actual = learner.getTotalStudyTime(); @@ -33,12 +33,12 @@ public void testTeach() { @Test public void testLecture() { //given - double expected1 = 12.0; - double expected2 = 10.0; - double expected3 = 14.0; - Learner learner1 = new Student(0, "Sabrina", 7.0); - Learner learner2 = new Student(1, "Nicolette", 5.0); - Learner learner3 = new Student(2, "Jason", 9.0); + double expected1 = 5.0; + double expected2 = 5.0; + double expected3 = 5.0; + Learner learner1 = new Student(0, "Sabrina"); + Learner learner2 = new Student(1, "Nicolette"); + Learner learner3 = new Student(2, "Jason"); //when Instructor instructor = new Instructor(0, "Ted"); Learner[] learners = new Learner[]{learner1, learner2, learner3}; diff --git a/src/test/java/io/zipcoder/interfaces/TestInstructors.java b/src/test/java/io/zipcoder/interfaces/TestInstructors.java new file mode 100644 index 00000000..cabda83a --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructors.java @@ -0,0 +1,18 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructors { + + @Test + public void testInstance() { + //given + int expected = 4; + Instructors instance = Instructors.getInstance(); + //when + int actual = instance.personList.size(); + //then + Assert.assertEquals(expected, actual); + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestPeople.java b/src/test/java/io/zipcoder/interfaces/TestPeople.java new file mode 100644 index 00000000..467c1cfa --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -0,0 +1,42 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestPeople { + + @Test + public void testAdd() { + //given + People people = new People(); + Person person = new Person(0L, "Bo"); + //when + people.add(person); + //then + Assert.assertTrue(people.contains(person)); + } + + @Test + public void testRemove() { + //given + People people = new People(); + Person person = new Person(0L, "Bo"); + //when + people.add(person); + people.remove(person); + //then + Assert.assertFalse(people.contains(person)); + } + + @Test + public void testFindById() { + //given + People people = new People(); + Person person = new Person(0L, "Bo"); + //when + people.add(person); + Person actual = people.findByID(0L); + //then + Assert.assertEquals(person, actual); + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestStudent.java b/src/test/java/io/zipcoder/interfaces/TestStudent.java index 34f9a140..79c44437 100644 --- a/src/test/java/io/zipcoder/interfaces/TestStudent.java +++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java @@ -9,22 +9,21 @@ public class TestStudent { @Test public void testInstanceOfLearner() { - Student student = new Student(0, "Jackson", 5.0); + Student student = new Student(0, "Jackson"); assertTrue(student instanceof Learner); } @Test public void testInstanceOfPerson() { - Student student = new Student(0, "Ryland", 5.0); + Student student = new Student(0, "Ryland"); assertTrue(student instanceof Person); } @Test public void testLearn() { //given - double currentTotalStudyTime = 5.0; - double expected = 8.5; - Student student = new Student(0, "Candace", currentTotalStudyTime); + double expected = 3.5; + Student student = new Student(0, "Candace"); //when student.learn(3.5); double actual = student.getTotalStudyTime(); diff --git a/src/test/java/io/zipcoder/interfaces/TestStudents.java b/src/test/java/io/zipcoder/interfaces/TestStudents.java new file mode 100644 index 00000000..9fe3b94e --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudents.java @@ -0,0 +1,18 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestStudents { + + @Test + public void testInstance() { + //given + int expected = 4; + Students instance = Students.getInstance(); + //when + int actual = instance.personList.size(); + //then + Assert.assertEquals(expected, actual); + } +} From 1bb15784b36edf44e5dea5e84f08e9f3a2dfb8e2 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sat, 24 Jul 2021 19:07:02 -0400 Subject: [PATCH 7/9] abstraction works --- .idea/uiDesigner.xml | 124 ++++++++++++++++++ .../io/zipcoder/interfaces/Instructor.java | 4 +- .../io/zipcoder/interfaces/Instructors.java | 6 +- .../java/io/zipcoder/interfaces/People.java | 26 ++-- .../java/io/zipcoder/interfaces/Student.java | 2 +- .../java/io/zipcoder/interfaces/Students.java | 8 +- .../interfaces/ZipCodeWilmington.java | 28 +++- .../io/zipcoder/interfaces/TestPeople.java | 5 +- .../interfaces/TestZipCodeWilmington.java | 21 +++ 9 files changed, 201 insertions(+), 23 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 00000000..e96534fb --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/io/zipcoder/interfaces/Instructor.java b/src/main/java/io/zipcoder/interfaces/Instructor.java index c2473855..45b1db33 100644 --- a/src/main/java/io/zipcoder/interfaces/Instructor.java +++ b/src/main/java/io/zipcoder/interfaces/Instructor.java @@ -3,6 +3,7 @@ public class Instructor extends Person implements Teacher{ Learner[] learners; + double numberOfHoursPerLearner; public Instructor(long id, String name) { super(id, name); @@ -15,8 +16,9 @@ public void teach(Learner learner, double numberOfHours) { @Override public void lecture(Learner[] learners, double numberOfHours) { + numberOfHoursPerLearner = numberOfHours / learners.length; for(Learner element : learners) { - element.learn(numberOfHours / learners.length); + element.learn(numberOfHoursPerLearner); } } } diff --git a/src/main/java/io/zipcoder/interfaces/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java index fc3a7d57..2b57417f 100644 --- a/src/main/java/io/zipcoder/interfaces/Instructors.java +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -1,6 +1,6 @@ package io.zipcoder.interfaces; -public class Instructors extends People { +public class Instructors extends People { private static final Instructors INSTANCE = new Instructors(); @@ -13,4 +13,8 @@ private Instructors() { public static Instructors getInstance() { return INSTANCE; } + @Override + public Instructor[] getArray() { + return super.personList.toArray(new Instructor[0]); + } } diff --git a/src/main/java/io/zipcoder/interfaces/People.java b/src/main/java/io/zipcoder/interfaces/People.java index 54da6c8f..26201ecd 100644 --- a/src/main/java/io/zipcoder/interfaces/People.java +++ b/src/main/java/io/zipcoder/interfaces/People.java @@ -4,35 +4,35 @@ import java.util.Iterator; import java.util.List; -public class People implements Iterable{ +public abstract class People implements Iterable{ - List personList = new ArrayList<>(); + List personList = new ArrayList<>(); - public void add(Person person) { + public void add(E person) { personList.add(person); } - public Person findByID(long id) { - for (Person person : personList) - if (person.getId() == id) + public E findByID(Long id) { + for (E person : personList) + if (person.getId() == (id)) return person; return null; } - public boolean contains(Person person) { + public boolean contains(E person) { if(personList.contains(person)) return true; return false; } - public void remove(Person person) { + public void remove(E person) { if(contains(person)) { personList.remove(person); } } - public void removeById(long id) { - Person person = findByID(id); + public void removeById(Long id) { + E person = findByID(id); remove(person); } @@ -44,11 +44,9 @@ public Integer count() { return personList.size(); } - public Person[] toArray() { - return (Person[]) personList.toArray(); - } + public abstract E[] getArray(); - public Iterator iterator() { + public Iterator iterator() { return personList.iterator(); } diff --git a/src/main/java/io/zipcoder/interfaces/Student.java b/src/main/java/io/zipcoder/interfaces/Student.java index d2ababda..26f7cf9d 100644 --- a/src/main/java/io/zipcoder/interfaces/Student.java +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -2,7 +2,7 @@ public class Student extends Person implements Learner{ - private double totalStudyTime; + private double totalStudyTime = 0.0; public Student(long id, String name) { super(id, name); diff --git a/src/main/java/io/zipcoder/interfaces/Students.java b/src/main/java/io/zipcoder/interfaces/Students.java index 4f34e4ab..c6e0c2bd 100644 --- a/src/main/java/io/zipcoder/interfaces/Students.java +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -1,6 +1,6 @@ package io.zipcoder.interfaces; -public class Students extends People{ +public class Students extends People{ private static final Students INSTANCE = new Students(); @@ -8,9 +8,13 @@ private Students() { this.add(new Student(1L, "Jen")); this.add(new Student(2L, "Dee")); this.add(new Student(3L, "Zach")); - this.add(new Student(4L, "Jeremy")); + this.add(new Student(5L, "Nick")); } public static Students getInstance() { return INSTANCE; } + @Override + public Student[] getArray() { + return super.personList.toArray(new Student[0]); + } } diff --git a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java index f9bad7e6..c5048569 100644 --- a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java @@ -1,4 +1,30 @@ package io.zipcoder.interfaces; -public class ZipCodeWilmington { +import java.util.HashMap; +import java.util.Map; + +public enum ZipCodeWilmington{ + + INSTANCE; + Students classroom = Students.getInstance(); + Instructors instructors = Instructors.getInstance(); + + public void hostLecture(Teacher teacher, double numberOfHours) { + teacher.lecture(classroom.getArray(), numberOfHours); + } + + public void hostLecture(long id, double numberOfHours) { + Teacher teacher = instructors.findByID(id); + hostLecture(teacher, numberOfHours); + } + + public Map getStudyMap() { + Map studyMap = new HashMap<>(); + for(Student student : classroom) { + studyMap.put(student, student.getTotalStudyTime()); + } + return studyMap; + } + + } diff --git a/src/test/java/io/zipcoder/interfaces/TestPeople.java b/src/test/java/io/zipcoder/interfaces/TestPeople.java index 467c1cfa..21a19bae 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPeople.java +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -5,10 +5,11 @@ public class TestPeople { + People people = Students.getInstance(); + @Test public void testAdd() { //given - People people = new People(); Person person = new Person(0L, "Bo"); //when people.add(person); @@ -19,7 +20,6 @@ public void testAdd() { @Test public void testRemove() { //given - People people = new People(); Person person = new Person(0L, "Bo"); //when people.add(person); @@ -31,7 +31,6 @@ public void testRemove() { @Test public void testFindById() { //given - People people = new People(); Person person = new Person(0L, "Bo"); //when people.add(person); diff --git a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java new file mode 100644 index 00000000..fac1b032 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -0,0 +1,21 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestZipCodeWilmington { + + @Test + public void testHostLecture() { + //given + long id = 1L; + double numberOfHours = 20.0; + Double expected = 5.0; + Students students = Students.getInstance(); + //when + ZipCodeWilmington.INSTANCE.hostLecture(id, numberOfHours); + Double actual = ZipCodeWilmington.INSTANCE.getStudyMap().get(students.findByID(1L)); + //then + Assert.assertEquals(expected, actual); + } +} From 4adf14a28c0328c8fb5341ca264b7a6479102ad9 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sat, 24 Jul 2021 19:10:05 -0400 Subject: [PATCH 8/9] fixed some stuff I accidentally deleted --- src/test/java/io/zipcoder/interfaces/TestPeople.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/io/zipcoder/interfaces/TestPeople.java b/src/test/java/io/zipcoder/interfaces/TestPeople.java index 21a19bae..d90f346f 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPeople.java +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -31,10 +31,10 @@ public void testRemove() { @Test public void testFindById() { //given - Person person = new Person(0L, "Bo"); + Person person = new Person(6L, "Stewart"); //when people.add(person); - Person actual = people.findByID(0L); + Person actual = people.findByID(6L); //then Assert.assertEquals(person, actual); } From f344dda843bc66eecaedac9c1628a05f35e40418 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sat, 24 Jul 2021 20:24:24 -0400 Subject: [PATCH 9/9] Lab complete --- .../java/io/zipcoder/interfaces/Educator.java | 33 +++++++++++ .../io/zipcoder/interfaces/Instructors.java | 2 +- .../io/zipcoder/interfaces/TestEducator.java | 58 +++++++++++++++++++ .../interfaces/TestZipCodeWilmington.java | 14 +++++ 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/zipcoder/interfaces/Educator.java create mode 100644 src/test/java/io/zipcoder/interfaces/TestEducator.java diff --git a/src/main/java/io/zipcoder/interfaces/Educator.java b/src/main/java/io/zipcoder/interfaces/Educator.java new file mode 100644 index 00000000..cd8654c2 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Educator.java @@ -0,0 +1,33 @@ +package io.zipcoder.interfaces; + +public enum Educator implements Teacher{ + + LEON (new Instructor(1L, "Leon")), + DOLIO (new Instructor(2L, "Dolio")), + DAN (new Instructor(3L, "Dan")), + KRIS (new Instructor(4L, "Kris")); + + private final Instructor instructor; + double timeWorked; + + Educator(Instructor instructor) { + this.instructor = instructor; + } + + @Override + public void teach(Learner learner, double numberOfHours) { + this.instructor.teach(learner, numberOfHours); + timeWorked += numberOfHours; + } + + @Override + public void lecture(Learner[] learners, double numberOfHours) { + Students students = Students.getInstance(); + this.instructor.lecture(learners, numberOfHours); + timeWorked += numberOfHours / students.personList.size(); + } + + public double getTimeWorked() { + return timeWorked; + } +} diff --git a/src/main/java/io/zipcoder/interfaces/Instructors.java b/src/main/java/io/zipcoder/interfaces/Instructors.java index 2b57417f..947685cb 100644 --- a/src/main/java/io/zipcoder/interfaces/Instructors.java +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -8,7 +8,7 @@ private Instructors() { this.add(new Instructor(1L, "Leon")); this.add(new Instructor(2L, "Dolio")); this.add(new Instructor(3L, "Dan")); - this.add(new Instructor(4L, "Liz")); + this.add(new Instructor(4L, "Kris")); } public static Instructors getInstance() { return INSTANCE; } diff --git a/src/test/java/io/zipcoder/interfaces/TestEducator.java b/src/test/java/io/zipcoder/interfaces/TestEducator.java new file mode 100644 index 00000000..dd859629 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestEducator.java @@ -0,0 +1,58 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestEducator { + + @Test + public void testImplementation() { + Educator educator = Educator.LEON; + Assert.assertTrue(educator instanceof Teacher); + } + + @Test + public void testTeach() { + //given + Educator educator = Educator.LEON; + double numberOfHours = 6.0; + Learner learner = new Student(0, "Stephen"); + //when + educator.teach(learner, numberOfHours); + double actualLearnerHours = learner.getTotalStudyTime(); + double actualTimeWorked = educator.getTimeWorked(); + //then + Assert.assertEquals(numberOfHours, actualLearnerHours, 0.0); + Assert.assertEquals(numberOfHours, actualTimeWorked, 0.0); + } + + @Test + public void testLecture() { + //given + Educator educator = Educator.LEON; + Students students = Students.getInstance(); + double numberOfHours = 20.0; + double expected = 5.0; + //when + educator.lecture(students.getArray(), numberOfHours); + double actualStudentHoursLearned = students.findByID(1L).getTotalStudyTime(); + double actualTimeWorked = educator.getTimeWorked(); + //then + Assert.assertEquals(expected, actualStudentHoursLearned, 0.001); + Assert.assertEquals(expected, actualTimeWorked, 0.001); + } + + @Test + public void testGetHoursWorked() { + //given + Educator educator = Educator.DOLIO; + double expected = 5.0; + Students students = Students.getInstance(); + //when + educator.teach(students.findByID(1L), expected); + double actual = educator.getTimeWorked(); + //then + Assert.assertEquals(expected, actual, 0.01); + } + +} diff --git a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java index fac1b032..f848556e 100644 --- a/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -18,4 +18,18 @@ public void testHostLecture() { //then Assert.assertEquals(expected, actual); } + + @Test + public void testHostLectureUsingEducator() { + //given + Educator educator = Educator.DAN; + double numberOfHours = 20.0; + Double expected = 5.0; + Students students = Students.getInstance(); + //when + ZipCodeWilmington.INSTANCE.hostLecture(educator, numberOfHours); + Double actual = ZipCodeWilmington.INSTANCE.getStudyMap().get(students.findByID(1L)); + //then + Assert.assertEquals(expected, actual); + } }