diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..a0f2c3a --- /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 0000000..46a1310 --- /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 0000000..63e9001 --- /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 0000000..712ab9d --- /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_13_1.xml b/.idea/libraries/Maven__junit_junit_4_13_1.xml new file mode 100644 index 0000000..9fa24fc --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_13_1.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 0000000..f58bbc1 --- /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 0000000..4361200 --- /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 0000000..711b3a5 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /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 0000000..a99ea01 --- /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 9b8c464..77e4d36 100644 --- a/pom.xml +++ b/pom.xml @@ -21,5 +21,11 @@ 3.8.1 test + + + junit + junit + 4.13.1 + diff --git a/src/main/java/io/zipcoder/interfaces/ClassRoom.java b/src/main/java/io/zipcoder/interfaces/ClassRoom.java new file mode 100644 index 0000000..22724e2 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ClassRoom.java @@ -0,0 +1,26 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; +import java.util.HashMap; + +public class ClassRoom { + private HashMap roster; + + public ClassRoom(){ + roster = new HashMap(); + } + public HashMap getRoster(){ + ArrayList instructors = ZipCodeWilmingtonClass.getInstructors(); + for (int i = 0; i < instructors.size(); i++) { + Instructor x = instructors.get(i); + roster.put(x.getName(), x); + } + ArrayList students = TechConnect.getStudents(); + for (int i = 0; i < students.size(); i++) { + Student y = students.get(i); + roster.put(y.getName(), y); + } + return roster; + } + +} \ 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 new file mode 100644 index 0000000..7e24107 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Instructor.java @@ -0,0 +1,25 @@ +package io.zipcoder.interfaces; + +public class Instructor extends Person implements Teacher { + + public Instructor(String name) { + super(name); + } + + public void teach(Student student, double numberOfHours) { + student.learn(numberOfHours); + + } + + public void lecture(Student[] students, double numberOfHours) { + double numberOfHoursPerStudent = numberOfHours / students.length; + for (int i = 0; i < students.length; i++) { + students[i].learn(numberOfHoursPerStudent); + + } + + } + + + +} 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 0000000..84ed4ad --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Learner.java @@ -0,0 +1,5 @@ +package io.zipcoder.interfaces; + +public interface Learner { + public void learn(double numberOfHours); +} diff --git a/src/main/java/io/zipcoder/interfaces/Person.java b/src/main/java/io/zipcoder/interfaces/Person.java index fc6a3ff..ae7bce1 100644 --- a/src/main/java/io/zipcoder/interfaces/Person.java +++ b/src/main/java/io/zipcoder/interfaces/Person.java @@ -2,4 +2,21 @@ public class Person { + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + String name; + + public Person(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 0000000..ed6c546 --- /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(String name) { + super(name); + } + + public void learn(double numberOfHours) { + totalStudyTime+=numberOfHours; + + } + + public double getTotalStudyTime() { + return totalStudyTime; + } + + +} 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 0000000..cd3d1ef --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/Teacher.java @@ -0,0 +1,6 @@ +package io.zipcoder.interfaces; + +public interface Teacher { + public void teach(Student student , double numberOfHours); + public void lecture(Student[] students , double numberOfHours); +} diff --git a/src/main/java/io/zipcoder/interfaces/TechConnect.java b/src/main/java/io/zipcoder/interfaces/TechConnect.java new file mode 100644 index 0000000..9729f96 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/TechConnect.java @@ -0,0 +1,39 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; + +public class TechConnect { + private static ArrayList studentList = new ArrayList(); + static { // static initializer + String[] studentNames = { "Karen", "Liel", "Quinn", "Destiny", "Blesson", "Danielle B.", "Andre", "Jeff", + "Carlo", "Julia D.", "Natalie", "Julia E.", "Shylee", "Genevieve", "Margo", "Whitney", "Rachel", + "Bridget", "Seung", "Jessica", "Harry", "Kesler", "Darin", "Jade", "Dominika", "Nashae", "Brianna", + "Laurent", "Rina", "Emily", "Elisha", "Caitlin", "Kierra", "Dana", "Alyssa", "Humaira", "Prajwal", + "Cristine", "Brendan" }; + for (String studentName : studentNames) { + Student student = new Student(studentName); + studentList.add(student); + } + } + public static void recruitStudent(Student student) + { + + studentList.add(student); + } + + public static ArrayList getStudents() + { + + return studentList; + } + + public static void removeStudents() + { + + studentList.clear(); + } + + + + +} diff --git a/src/main/java/io/zipcoder/interfaces/ZipCodeWilmingtonClass.java b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmingtonClass.java new file mode 100644 index 0000000..74e1346 --- /dev/null +++ b/src/main/java/io/zipcoder/interfaces/ZipCodeWilmingtonClass.java @@ -0,0 +1,31 @@ +package io.zipcoder.interfaces; + +import java.util.ArrayList; + +public class ZipCodeWilmingtonClass{ + + private static ArrayList instructorList = new ArrayList(); + static { // static initializer + String[] instructorNames = { "Leon", "Tariq", "Froilan", "David", "Zach", "Iyasu" }; + for (String instructorName : instructorNames) { + Instructor instructor = new Instructor(instructorName); + hire(instructor); + } + } + + public static void hire(Instructor instructor) + { + instructorList.add(instructor); + } + + + public static ArrayList getInstructors() + { + return instructorList; + } + + public static void fireStaff() + { + instructorList.clear(); + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestClassroom.java b/src/test/java/io/zipcoder/interfaces/TestClassroom.java new file mode 100644 index 0000000..ef002cf --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestClassroom.java @@ -0,0 +1,27 @@ +package io.zipcoder.interfaces; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collections; +import java.util.HashMap; +import java.util.ArrayList; + +public class TestClassroom { + ClassRoom classroom; + + @Before + public void setup(){ + classroom = new ClassRoom(); + } + + @Test + public void testGetRoster(){ + ArrayList total = new ArrayList(); + total.addAll(ZipCodeWilmingtonClass.getInstructors()); + total.addAll(TechConnect.getStudents()); + for (Person x: classroom.getRoster().values()) + Assert.assertTrue(total.contains(x)); + } +} \ No newline at end of file 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 0000000..8bf769b --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestInstructor.java @@ -0,0 +1,57 @@ +package io.zipcoder.interfaces; + +import static org.junit.Assert.*; +import org.junit.Test; +public class TestInstructor { + @Test + public void testImplementation(){ + // Given + Instructor instructor = new Instructor("Ram");; + + // When + Boolean instanceFlag= instructor instanceof Teacher; + // Then + assertEquals(true,instanceFlag) ; + } + @Test + public void testInheritance(){ + // Given + Instructor instructor = new Instructor("Ram");; + + // When + Boolean inheritanceFlag= instructor instanceof Person; + // Then + assertEquals(true,inheritanceFlag) ; + } + @Test + public void testTeach(){ + // Given + Instructor instructor = new Instructor("Ram");; + Student student = new Student("Gunjan");; + // When + instructor.teach(student,50); + // Then + assertEquals(50,student.totalStudyTime,0) ; + + } + + @Test + public void testLecture(){ + // Given + Instructor instructor = new Instructor("Ram");; + Student student1 = new Student("Gunjan"); + Student student2 = new Student("Radha");; + Student[] students = new Student[2]; + students[0]=student1; + students[1]=student2; + // When + instructor.lecture(students,100); + // Then + assertEquals(50,student1.getTotalStudyTime(),0) ; + assertEquals(50,student2.getTotalStudyTime(),0) ; + + } + + + +} \ No newline at end of file diff --git a/src/test/java/io/zipcoder/interfaces/TestPerson.java b/src/test/java/io/zipcoder/interfaces/TestPerson.java index d64cd2f..e3a46c6 100644 --- a/src/test/java/io/zipcoder/interfaces/TestPerson.java +++ b/src/test/java/io/zipcoder/interfaces/TestPerson.java @@ -1,5 +1,32 @@ package io.zipcoder.interfaces; - +import static org.junit.Assert.*; +import org.junit.Test; public class TestPerson { + @Test + public void testSetName(){ + // Given + String name = "Gunjan"; + + + // When + Person person = new Person("test"); + + person.setName(name); + // Then + assertEquals("Gunjan", person.getName()); + } + + @Test + public void testConstructor(){ + // Given + String name = "Gunjan"; + + + // When + Person person = new Person("Constructor"); + //person.setName(name); + // Then + assertEquals("Constructor", person.getName()); + } } 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 0000000..f112295 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestStudent.java @@ -0,0 +1,48 @@ +package io.zipcoder.interfaces; +import static org.junit.Assert.*; +import org.junit.Test; + +public class TestStudent { + @Test + public void testImplementation(){ + // Given + Student student = new Student("Gunjan");; + + // When + Boolean instanceFlag= student instanceof Learner; + // Then + assertEquals(true,instanceFlag) ; + } + @Test + public void testInheritance(){ + // Given + Student student = new Student("Gunjan");; + + // When + Boolean inheritanceFlag= student instanceof Person; + // Then + assertEquals(true,inheritanceFlag) ; + } + @Test + public void testLearn(){ + // Given + Student student = new Student("Gunjan");; + + // When + student.learn(50);; + // Then + assertEquals(50,student.totalStudyTime,0) ; + + } + @Test + public void testLearnGetTime(){ + // Given + Student student = new Student("Gunjan");; + + // When + student.learn(50);; + // Then + assertEquals(50,student.getTotalStudyTime(),0) ; + + } +} diff --git a/src/test/java/io/zipcoder/interfaces/TestTechConnect.java b/src/test/java/io/zipcoder/interfaces/TestTechConnect.java new file mode 100644 index 0000000..f49d391 --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestTechConnect.java @@ -0,0 +1,44 @@ +package io.zipcoder.interfaces; + +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; + +import static org.junit.Assert.assertEquals; + +public class TestTechConnect { + TechConnect tc = new TechConnect(); + + @Before + public void setup() { + // TestTechConnect tc= new TestTechConnect(); + tc.removeStudents(); + + } + + @Test + public void testRemoveStudents() { + // Given + Boolean expected = true; + //When + Boolean actual = tc.getStudents().isEmpty(); + // Then + assertEquals(expected, actual); + } + + @Test + public void testRecruitStudents() { + // Given + Boolean expected = true; + Student student1 = new Student("gunjan"); + Student student2 = new Student("daksh"); + + + //When + tc.recruitStudent(student1); + tc.recruitStudent(student2); + // Then + assertEquals(2,tc.getStudents().size(),0); + } +} \ No newline at end of file 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 0000000..9d2264c --- /dev/null +++ b/src/test/java/io/zipcoder/interfaces/TestZipCodeWilmington.java @@ -0,0 +1,31 @@ +package io.zipcoder.interfaces; +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; +public class TestZipCodeWilmington { + + @Before + public void setup() { + ZipCodeWilmingtonClass.fireStaff(); + } + + @Test + public void testFireStaff(){ + Boolean expected = true; + Boolean actual= ZipCodeWilmingtonClass.getInstructors().isEmpty(); + // Then + assertEquals(expected,actual) ; + } + @Test + public void testHireStaff(){ + Instructor instructor1 = new Instructor("Ram");; + Instructor instructor2 = new Instructor("Daksh");; + ZipCodeWilmingtonClass.hire(instructor1); + ZipCodeWilmingtonClass.hire(instructor2); + // Then + assertEquals("Ram",ZipCodeWilmingtonClass.getInstructors().get(0).getName()) ; + assertEquals("Daksh",ZipCodeWilmingtonClass.getInstructors().get(1).getName()) ; + } + +}