diff --git a/.idea/$PRODUCT_WORKSPACE_FILE$ b/.idea/$PRODUCT_WORKSPACE_FILE$ new file mode 100644 index 00000000..3733e0d3 --- /dev/null +++ b/.idea/$PRODUCT_WORKSPACE_FILE$ @@ -0,0 +1,19 @@ + + + + + + + 1.8 + + + + + + + + \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..0e40fe8f --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ + +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 00000000..a0f2c3a1 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +interfaces-1 \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..fdc60f4f --- /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..b26911bd --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ 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..ab4c8a3f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ 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..35eb1ddf --- /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..0ddf51c1 --- /dev/null +++ b/interfaces-1.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file 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..921d5d56 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Educator.java @@ -0,0 +1,25 @@ +package io.zipcoder.interfaces; + +public enum Educator implements Teacher{ + DOLIO(new Instructor(311412L, "Dolio")), + ROBERTO(new Instructor(24302L, "Roberto")); + + final Instructor instructor; + Double timeWorked = 0.0; + + Educator(Instructor instructor){ + this.instructor = instructor; + } + + @Override + public void teach(Learner learner, double numberOfHours) { + this.instructor.teach(learner, numberOfHours); + this.timeWorked += numberOfHours; + } + + @Override + public void lecture(Learner[] learners, double numberOfHours) { + this.instructor.lecture(learners, numberOfHours); + this.timeWorked += numberOfHours; + } +} 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..131a0d16 --- /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); + } + + public void teach(Learner learner, double numberOfHours) { + learner.learn(numberOfHours); + } + + public void lecture(Learner[] learners, double numberOfHours) { + double numberofHoursPerStudent = numberOfHours / learners.length; + for(Learner learner : learners) + learner.learn(numberofHoursPerStudent); + } + + + +} 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..6c59277a --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructors.java @@ -0,0 +1,26 @@ +package io.zipcoder.interfaces; + +public final class Instructors extends People{ + + private static final Instructors INSTANCE = new Instructors(); + + + + private Instructors(){ + super(); + Instructor instructorOne = new Instructor(311412L, "Dolio"); + Instructor instructorTwo = new Instructor(24302L, "Roberto"); + + personList.add(instructorOne); + personList.add(instructorTwo); + + } + + Instructor[] getArray() { + return personList.toArray(new Instructor[personList.size()]); + } + + public static Instructors getInstance(){ + return INSTANCE; + } +} 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..216f3167 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Learner.java @@ -0,0 +1,7 @@ +package io.zipcoder.interfaces; + +public interface Learner { + + void learn(double numberOfHours); + Double getTotalStudyTime(); +} 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..77684c35 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/People.java @@ -0,0 +1,52 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +abstract class People implements Iterable { + + List personList; + + public People(){ + personList = new ArrayList(); + } + + public void add(E person){ + personList.add(person); + } + + public E findById(long id){ + for(E person : personList) + if(person.getId() == id) + return person; + + return null; + } + + public boolean contains(E person){ + return personList.contains(person); + } + + public void removeByPerson(E person){ + personList.remove(person); + } + + public void removeById(long id){ + personList.remove(findById(id)); + } + + public void removeAll(){ + personList.clear(); + } + + public int count(){ + return personList.size(); + } + + abstract E[] getArray(); + + public Iterator iterator() { + return personList.iterator(); + } +} diff --git a/src/main/java/io/zipcoder/interfaces/Person.java b/src/main/java/io/zipcoder/interfaces/Person.java index fc6a3ffe..144477d6 100644 --- a/src/main/java/io/zipcoder/interfaces/Person.java +++ b/src/main/java/io/zipcoder/interfaces/Person.java @@ -1,5 +1,23 @@ package io.zipcoder.interfaces; public class Person { + final Long id; + String name; + public Person(Long id, String name){ + this.id = id; + this.name = name; + } + + public Long getId(){ + return this.id; + } + + public String getName(){ + return this.name; + } + + public void setName(String name){ + this.name = name; + } } 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..74dd0139 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Student.java @@ -0,0 +1,19 @@ +package io.zipcoder.interfaces; + +public class Student extends Person implements Learner{ + + double totalStudyTime; + + public Student(Long id, String name) { + super(id, name); + } + + + public void learn(double numberOfHours) { + totalStudyTime += numberOfHours; + } + + public Double getTotalStudyTime() { + return totalStudyTime; + } +} 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..0f0810c1 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Students.java @@ -0,0 +1,26 @@ +package io.zipcoder.interfaces; + +public final class Students extends People{ + + private static final Students INSTANCE = new Students(); + + private Students(){ + + Student studentOne = new Student(212242L, "Brian"); + Student studentTwo = new Student(121231L, "Kievina"); + + personList.add(studentOne); + personList.add(studentTwo); + + } + + @Override + public Student[] getArray(){ + + return personList.toArray(new Student[personList.size()]); + } + + public static Students getInstance(){ + return INSTANCE; + } +} 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..4a3a4dbe --- /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[] learner, double numberOfHours); + + +} 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..3494da49 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmington.java @@ -0,0 +1,38 @@ +package io.zipcoder.interfaces; + +import java.util.HashMap; +import java.util.Map; + +public final class ZipCodeWilmington { + + private final Students students = Students.getInstance(); + private final Instructors instructors = Instructors.getInstance(); + private static final ZipCodeWilmington INSTANCE = new ZipCodeWilmington(); + + private ZipCodeWilmington(){ + } + + public void hostLecture(Teacher teacher, double numberOfHours){ + teacher.lecture(students.getArray(), numberOfHours); + } + + public void hostLecture(long id, double numberOfHours){ + Teacher teacher = (Teacher) instructors.findById(id); + hostLecture(teacher, numberOfHours); + } + + public HashMap getStudyMap(){ + HashMap studyMap = new HashMap(); + for(Person person : students.getArray()){ + Student student = (Student) person; + studyMap.put(student, student.getTotalStudyTime()); + } + return studyMap; + } + + public static ZipCodeWilmington 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..7544a257 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestEducator.java @@ -0,0 +1,49 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestEducator { + + @Test + public void implementationTest(){ + Assert.assertTrue(Educator.ROBERTO instanceof Teacher); + } + + @Test + public void lectureTest(){ + Student[] students = {new Student(1231L, "Bill Cosby"), new Student(3213L, "Joe")}; + + Double expected = 0.5 / students.length; + Educator.DOLIO.lecture(students, 0.5); + Assert.assertEquals(expected, students[0].getTotalStudyTime()); + Assert.assertEquals(expected, students[1].getTotalStudyTime()); + } + + @Test + public void teachTest(){ + Student student = new Student(1231L, "Bill Cosby"); + + Double expected = 0.5; + Educator.DOLIO.teach(student,expected); + Assert.assertEquals(expected, student.getTotalStudyTime()); + } + + @Test + public void lectureTimeWorkedTest(){ + Student[] students = {new Student(1231L, "Bill Cosby"), new Student(3213L, "Joe")}; + + Double expected = 1.0; + Educator.ROBERTO.lecture(students, 0.5); + Assert.assertEquals(expected, Educator.ROBERTO.timeWorked); + } + + @Test + public void teachTimeWorked(){ + Student[] students = {new Student(1231L, "Bill Cosby")}; + + Double expected = 0.5; + Educator.ROBERTO.lecture(students, 0.5); + Assert.assertEquals(expected, Educator.ROBERTO.timeWorked); + } +} 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..03d46574 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -0,0 +1,47 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructor { + + @Test + public void implementInstructorTest(){ + Instructor instructorOne = new Instructor(1232L, "Dolio"); + + Assert.assertTrue(instructorOne instanceof Teacher); + } + + @Test + public void inheritanceInstructorTest(){ + Instructor instructorOne = new Instructor(1232L, "Dolio"); + + Assert.assertTrue(instructorOne instanceof Person); + } + + @Test + public void teachTest(){ + Instructor instructorOne = new Instructor(1232L, "Dolio"); + Student studentOne = new Student(1333L, "Joe"); + double expectedTime = 20.0; + instructorOne.teach(studentOne, expectedTime); + double actualTime = studentOne.getTotalStudyTime(); + + Assert.assertEquals(expectedTime, actualTime, 0); + } + + @Test + public void lectureTest(){ + Instructor instructorOne = new Instructor(1232L, "Dolio"); + Student studentOne = new Student(1333L, "Joe"); + Student studentTwo = new Student(123222L, "Zoe"); + + Learner[] students = {studentOne, studentTwo}; + instructorOne.lecture(students, 36); + + double expectedTime = 18; + double actualTime = studentTwo.getTotalStudyTime(); + + Assert.assertEquals(expectedTime, actualTime, 0); + } +} 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..fd17fb07 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructors.java @@ -0,0 +1,37 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructors { + + @Test + public void getInstanceTest(){ + + Instructors test = Instructors.getInstance(); + int actual = test.personList.size(); + + Assert.assertEquals(2, actual); + + } + @Test + public void getInstanceTest2(){ + + Instructors testTwo = Instructors.getInstance(); + + boolean personOne = false; + boolean personTwo = false; + + for(Person person : testTwo.personList){ + if(person.getId().equals(311412L) && person.getName().equals("Dolio")) + personOne = true; + + if(person.getId().equals(24302L) && person.getName().equals("Roberto")) + personTwo = true; + } + + Assert.assertTrue(personOne); + Assert.assertTrue(personTwo); + } +} + 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..25d7146d --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestPeople.java @@ -0,0 +1,59 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestPeople { + + + @Test + public void addTest(){ + Student personOne = new Student(398429847L, "Brian"); + Students newPeople = Students.getInstance(); + newPeople.add(personOne); + + Assert.assertTrue(newPeople.contains(personOne)); + } + + @Test + public void removebyIDTest(){ + Students newPeople = Students.getInstance(); + Student personOne = new Student(398429847L, "Brian"); + Student personTwo = new Student(242487613L, "Mike"); + + newPeople.add(personOne); + newPeople.add(personTwo); + newPeople.removeById(242487613L); + + Assert.assertFalse(newPeople.contains(personTwo)); + } + + @Test + public void removeAllTest(){ + Students newPeople = Students.getInstance(); + Student personOne = new Student(398429847L, "Brian"); + Student personTwo = new Student(242487613L, "Mike"); + + int expectedPeeps = 0; + newPeople.add(personOne); + newPeople.add(personTwo); + newPeople.removeAll(); + int actualPeeps = newPeople.count(); + + Assert.assertEquals(expectedPeeps, actualPeeps); + } + + + @Test + public void findByIdTest(){ + Students newPeople = Students.getInstance(); + Student personOne = new Student(398429847L, "Brian"); + + long expectedPersonById = 398429847L; + newPeople.add(personOne); + long actualPersonById = personOne.getId(); + + Assert.assertEquals(expectedPersonById, actualPersonById); + } + +} diff --git a/src/test/java/io/zipcoder/interfaces/TestPerson.java b/src/test/java/io/zipcoder/interfaces/TestPerson.java index d64cd2f0..c904f37d 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPerson.java +++ b/src/test/java/io/zipcoder/interfaces/TestPerson.java @@ -1,5 +1,29 @@ package io.zipcoder.interfaces; +import org.junit.Assert; +import org.junit.Test; + public class TestPerson { + @Test + public void PersonConstructorTest(){ + Person personOne = new Person(1234L, "Maira"); + Long expectedId = 1234L; + Long actualId = personOne.getId(); + String expectedName = "Maira"; + String actualName = personOne.getName(); + + Assert.assertEquals(expectedId, actualId); + Assert.assertEquals(expectedName, actualName); + } + + @Test + public void setNameTest(){ + Person personOne = new Person(1234L, "Maira"); + personOne.setName("Brian"); + String expectedName = "Brian"; + String actualName = personOne.getName(); + + Assert.assertEquals(expectedName,actualName); + } } 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..805f6e42 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java @@ -0,0 +1,32 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestStudent { + + @Test + public void implementStudentTest(){ + Student studentOne = new Student(1333L, "Joe"); + + Assert.assertTrue(studentOne instanceof Learner); + } + + @Test + public void inheritanceTest(){ + Student studentOne = new Student(1333L, "Joe"); + + Assert.assertTrue(studentOne instanceof Person); + } + + @Test + public void learnTest(){ + Student studentOne = new Student(1333L, "Joe"); + studentOne.learn(10); + double actualStudy = studentOne.getTotalStudyTime(); + double expectedStudy = 10; + + Assert.assertEquals(expectedStudy, actualStudy, 0); + + } +} 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..abd0668c --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudents.java @@ -0,0 +1,37 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestStudents { + + @Test + public void getInstanceTest(){ + + Students test = Students.getInstance(); + int actual = test.personList.size(); + + Assert.assertEquals(2,actual); + + } + @Test + public void getInstanceTest2(){ + + Students testTwo = Students.getInstance(); + + boolean personOne = false; + boolean personTwo = false; + + for(Person person : testTwo.personList){ + if(person.getId().equals(212242L) && person.getName().equals("Brian")) + personOne = true; + + if(person.getId().equals(121231L) && person.getName().equals("Kievina")) + personTwo = true; + } + + Assert.assertTrue(personOne); + Assert.assertTrue(personTwo); + + } +} 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..428d6745 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -0,0 +1,16 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Test; + +public class TestZipCodeWilmington { + + @Test + public void hostLectureByIdTest(){ + ZipCodeWilmington.getInstance().hostLecture(311412L, 100); + int expectedLecture = 50; + + Assert.assertEquals(expectedLecture, ((Student)(Students.getInstance().findById(212242L))).getTotalStudyTime(), 0.0); + Assert.assertEquals(expectedLecture, ((Student)(Students.getInstance().findById(121231L))).getTotalStudyTime(), 0.0); + } +}