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()) ;
+ }
+
+}