diff --git a/pom.xml b/pom.xml
index a98015f..a7497cf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,8 @@
1.0-SNAPSHOT
- UTF-8
+ 1.8
+ 1.8
diff --git a/src/main/java/com/dtcc/projects/Classroom.java b/src/main/java/com/dtcc/projects/Classroom.java
new file mode 100644
index 0000000..6bec628
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/Classroom.java
@@ -0,0 +1,25 @@
+package com.dtcc.projects;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+
+public class Classroom {
+
+ private static ArrayList students = JavaAcademy.getStudents();
+ private static ArrayList instructors = DelTech.getInstructors();
+
+ public static HashMap getRoster(){
+ //Adds instructors to class
+ HashMap roster = new HashMap<>();
+ for(Instructor instructor : instructors){
+ roster.put(instructor.getName(), instructor);
+ }
+
+ for(Student student : students){
+ roster.put(student.getName(), student);
+ }
+
+ return roster;
+ }
+}
diff --git a/src/main/java/com/dtcc/projects/DelTech.java b/src/main/java/com/dtcc/projects/DelTech.java
new file mode 100644
index 0000000..0c0a706
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/DelTech.java
@@ -0,0 +1,25 @@
+package com.dtcc.projects;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DelTech {
+
+ private static ArrayList instructorList = new ArrayList();
+
+ static { // static initializer
+ String[] instructorNames = {"Brian", "Kaleb", "Zan"};
+ for (String instructorName : instructorNames) {
+ Instructor instructor = new Instructor(instructorName);
+ hire(instructor);
+ }
+ }
+
+ public static ArrayList getInstructors(){return instructorList;}
+ public static void hire(Instructor teacher){
+ instructorList.add(teacher);
+ }
+ public static void fireStaff(){
+ instructorList.clear();
+ }
+}
diff --git a/src/main/java/com/dtcc/projects/Instructor.java b/src/main/java/com/dtcc/projects/Instructor.java
new file mode 100644
index 0000000..4ef027a
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/Instructor.java
@@ -0,0 +1,25 @@
+package com.dtcc.projects;
+
+public class Instructor extends Person implements Teacher {
+
+ public Instructor(){}
+
+ public Instructor(String name){
+ this.name = name;
+ }
+
+ @Override
+ public void teach(Student student, double numberOfHours) {
+ student.learn(numberOfHours);
+ }
+
+ @Override
+ public void lecture(Student[] student, double numberOfHours) {
+ double numberOfHoursPerStudent = numberOfHours / student.length;
+ for(int i = 0; i < student.length; i++){
+ Student temp_student = student[i];
+ temp_student.learn(numberOfHoursPerStudent);
+ student[i] = temp_student;
+ }
+ }
+}
diff --git a/src/main/java/com/dtcc/projects/JavaAcademy.java b/src/main/java/com/dtcc/projects/JavaAcademy.java
new file mode 100644
index 0000000..766fbad
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/JavaAcademy.java
@@ -0,0 +1,23 @@
+package com.dtcc.projects;
+
+import java.util.ArrayList;
+
+public class JavaAcademy {
+
+ private static ArrayList studentList = new ArrayList();
+
+ static { // static initializer
+ String[] studentNames = { "Jessica", "Emad", "Cedric", "Lolu", "Apoorva", "Vara", "Craig", "Robert",
+ "Stephen", "Ferdinand", "Charu" };
+ for (String studentName : studentNames) {
+ Student student = new Student(studentName);
+ studentList.add(student);
+ }
+ }
+
+ public static ArrayList getStudents(){return studentList;}
+ public static void recruitStudent(Student student){studentList.add(student);}
+ public static void removeStudents(){studentList.clear();}
+
+
+}
diff --git a/src/main/java/com/dtcc/projects/Learner.java b/src/main/java/com/dtcc/projects/Learner.java
new file mode 100644
index 0000000..55c5c31
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/Learner.java
@@ -0,0 +1,7 @@
+package com.dtcc.projects;
+
+public interface Learner {
+
+ public void learn(double numberOfHours);
+
+}
diff --git a/src/main/java/com/dtcc/projects/Person.java b/src/main/java/com/dtcc/projects/Person.java
index ff9713e..73fdb23 100644
--- a/src/main/java/com/dtcc/projects/Person.java
+++ b/src/main/java/com/dtcc/projects/Person.java
@@ -1,4 +1,18 @@
package com.dtcc.projects;
public class Person {
+
+ String name;
+
+ public Person(){}
+
+ public Person(String name){
+ this.name = name;
+ }
+
+ public String getName(){return this.name;}
+
+ public void setName(String name){
+ this.name = name;
+ }
}
diff --git a/src/main/java/com/dtcc/projects/Student.java b/src/main/java/com/dtcc/projects/Student.java
new file mode 100644
index 0000000..c2dba00
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/Student.java
@@ -0,0 +1,19 @@
+package com.dtcc.projects;
+
+public class Student extends Person implements Learner {
+
+ private double totalStudyTime;
+
+ public Student(){}
+
+ public Student(String name){this.name = name;}
+
+ @Override
+ public void learn(double numberOfHours) {
+ //Increment total study time by val
+ totalStudyTime += numberOfHours;
+ }
+
+ //returns total study time, future calcs
+ public double getTotalStudyTime(){return this.totalStudyTime;}
+}
diff --git a/src/main/java/com/dtcc/projects/Teacher.java b/src/main/java/com/dtcc/projects/Teacher.java
new file mode 100644
index 0000000..62b0b56
--- /dev/null
+++ b/src/main/java/com/dtcc/projects/Teacher.java
@@ -0,0 +1,7 @@
+package com.dtcc.projects;
+
+public interface Teacher {
+
+ public void teach(Student student, double numberOfHours);
+ public void lecture(Student[] student, double numberOfHours);
+}
diff --git a/src/test/java/com/dtcc/projects/TestClassRoom.java b/src/test/java/com/dtcc/projects/TestClassRoom.java
new file mode 100644
index 0000000..67ff08d
--- /dev/null
+++ b/src/test/java/com/dtcc/projects/TestClassRoom.java
@@ -0,0 +1,28 @@
+package com.dtcc.projects;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import java.util.HashMap;
+
+
+public class TestClassRoom {
+
+ @Test
+ public void testRoster(){
+ //gets roster
+ HashMap clazz = Classroom.getRoster();
+
+ for(Instructor instructor: DelTech.getInstructors()){
+ //Ensures instructor exists in class
+ Assert.assertTrue(clazz.containsKey(instructor.getName()));
+ //Ensure names match
+ Assert.assertEquals(instructor, clazz.get(instructor.getName()));
+ }
+ for(Student student: JavaAcademy.getStudents()){
+ Assert.assertTrue(clazz.containsKey(student.getName()));
+ Assert.assertEquals(student, clazz.get(student.getName()));
+ }
+
+ }
+}
diff --git a/src/test/java/com/dtcc/projects/TestDeltech.java b/src/test/java/com/dtcc/projects/TestDeltech.java
new file mode 100644
index 0000000..161b837
--- /dev/null
+++ b/src/test/java/com/dtcc/projects/TestDeltech.java
@@ -0,0 +1,46 @@
+package com.dtcc.projects;
+
+import junit.framework.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+public class TestDeltech extends DelTech {
+
+ @Before
+ public void setup(){
+ //Fires everyone, blank list for every test
+ fireStaff();
+ }
+
+ @Test
+ public void testFireStaff(){
+ ArrayList temp_list = new ArrayList();
+ temp_list = getInstructors();
+ Assert.assertEquals(true, temp_list.isEmpty());
+ }
+
+ @Test
+ public void testHireStaff(){
+ //All people were fired, hires new overlord Cedric
+ Instructor cs = new Instructor("Cedric");
+ Instructor zn = new Instructor("Zan");
+
+ //Officially hires him and adds to Instructor roster
+ hire(cs);
+ hire(zn);
+
+ //Creates temp test arrayList
+ ArrayList temp_list = new ArrayList();
+
+ //Copy
+ temp_list = getInstructors();
+
+ String temp_string1 = temp_list.get(0).getName();
+ String temp_string2 = temp_list.get(1).getName();
+
+ Assert.assertEquals("Cedric", temp_string1);
+ Assert.assertEquals("Zan", temp_string2);
+ }
+}
diff --git a/src/test/java/com/dtcc/projects/TestInstructor.java b/src/test/java/com/dtcc/projects/TestInstructor.java
new file mode 100644
index 0000000..66f06de
--- /dev/null
+++ b/src/test/java/com/dtcc/projects/TestInstructor.java
@@ -0,0 +1,100 @@
+package com.dtcc.projects;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+public class TestInstructor {
+
+ @Test
+ public void testImplementation(){
+ //Create new teach
+ Instructor zc = new Instructor();
+ zc.setName("Zan");
+
+ //Create New Student
+ Student cs = new Student();
+ cs.setName("Cedric");
+
+ //Havn't studied yet should be 0
+ double bookMark1 = cs.getTotalStudyTime();
+
+ //Zan teaches student, have to call teacher interface
+ zc.teach(cs, 2.0);
+
+ //Get students study time
+ double bookMark2 = cs.getTotalStudyTime();
+
+ Assert.assertEquals(0.0, bookMark1);
+ Assert.assertEquals(2.0, bookMark2);
+
+ }
+
+ @Test
+ public void testInheritance(){
+ //Creates an instructor
+ Instructor kb = new Instructor();
+ //Set name only exists in Person
+ kb.setName("Kaleb");
+ String temp_val = kb.getName();
+ Assert.assertEquals("Kaleb", temp_val );
+ }
+
+ @Test
+ public void testTeach(){
+ //Create new teach
+ Instructor zc = new Instructor();
+ zc.setName("Zan");
+
+ //Create New Student
+ Student cs = new Student();
+ cs.setName("Cedric");
+
+ //Havn't studied yet should be 0
+ double bookMark1 = cs.getTotalStudyTime();
+
+ //Zan teaches student, have to call teacher interface
+ zc.teach(cs, 2);
+
+ //Due to last statment we should hope this is true
+ double bookMark2 = cs.getTotalStudyTime();
+
+ Assert.assertEquals(0.0, bookMark1);
+ Assert.assertEquals(false, (cs.getTotalStudyTime() == 1));
+ Assert.assertEquals(2.0, bookMark2);
+ }
+
+ @Test
+ public void testLecture(){
+
+ //Create new teach
+ Instructor zc = new Instructor();
+ zc.setName("Zan");
+
+ //Create New Student
+ Student cs = new Student();
+ cs.setName("Cedric");
+
+ //Creates second student
+ Student ez = new Student();
+ ez.setName("Emad");
+
+ //Created a roster of students
+ Student[] roster = new Student[2];
+ roster[0] = cs;
+ roster[1] = ez;
+
+ //Teach the whole class 2 hours each
+ zc.lecture(roster, 4);
+
+ //Cedric Gets a special tutor session, so should have 4 total
+ zc.teach(cs, 2);
+
+ //Checking Roster
+ Assert.assertEquals(2.0, roster[1].getTotalStudyTime());
+ Assert.assertEquals(4.0, roster[0].getTotalStudyTime());
+
+ //Checking each student manually
+ Assert.assertEquals(2.0, ez.getTotalStudyTime());
+ Assert.assertEquals(4.0, cs.getTotalStudyTime());
+ }
+}
diff --git a/src/test/java/com/dtcc/projects/TestJavaAcademy.java b/src/test/java/com/dtcc/projects/TestJavaAcademy.java
new file mode 100644
index 0000000..928618c
--- /dev/null
+++ b/src/test/java/com/dtcc/projects/TestJavaAcademy.java
@@ -0,0 +1,48 @@
+package com.dtcc.projects;
+
+import junit.framework.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+public class TestJavaAcademy extends JavaAcademy {
+
+ @Before
+ public void setup(){
+ //Everbody failed! kick them out
+ removeStudents();
+ }
+
+ @Test
+ public void testRemoveStudents(){
+ ArrayList temp_list = new ArrayList();
+ temp_list = getStudents();
+ Assert.assertEquals(true, temp_list.isEmpty());
+ }
+
+ @Test
+ public void testRecruitStudents(){
+ //All people failed, Realized Cedric was star pupil, dropped by mistake
+ //Add him back to system... Kaleb was a sucky prof and needed lessons /s
+ Student cs = new Student("Cedric");
+ Student kb = new Student("Kaleb");
+
+ //Officially added back to student roster
+ recruitStudent(cs);
+ recruitStudent(kb);
+
+ //Creates temp test arrayList
+ ArrayList temp_list = new ArrayList();
+
+ //Copy
+ temp_list = getStudents();
+
+ //Get name or else mem location
+ String temp_string1 = temp_list.get(0).getName();
+ String temp_string2 = temp_list.get(1).getName();
+
+ Assert.assertEquals("Cedric", temp_string1);
+ Assert.assertEquals("Kaleb", temp_string2);
+ }
+}
diff --git a/src/test/java/com/dtcc/projects/TestPerson.java b/src/test/java/com/dtcc/projects/TestPerson.java
index 040f78f..c952890 100644
--- a/src/test/java/com/dtcc/projects/TestPerson.java
+++ b/src/test/java/com/dtcc/projects/TestPerson.java
@@ -1,4 +1,21 @@
package com.dtcc.projects;
+import org.junit.Assert;
+import org.junit.Test;
+
public class TestPerson {
+
+ @Test
+ public void testSetName(){
+
+ //Starts with null _>setName();
+ Person person = new Person();
+ person.setName("Billy-Bob");
+
+ //Single arg constructor calls same logic as getName();
+ Person person1 = new Person("Swag");
+
+ Assert.assertEquals("Billy-Bob", person.getName());
+ Assert.assertEquals("Swag", person1.getName());
+ }
}
diff --git a/src/test/java/com/dtcc/projects/TestStudent.java b/src/test/java/com/dtcc/projects/TestStudent.java
new file mode 100644
index 0000000..5986bac
--- /dev/null
+++ b/src/test/java/com/dtcc/projects/TestStudent.java
@@ -0,0 +1,42 @@
+package com.dtcc.projects;
+
+import org.junit.*;
+import org.junit.Test;
+
+public class TestStudent {
+
+
+ @Test
+ public void testImplementation(){
+ Student Jess = new Student();
+ double temp = Jess.getTotalStudyTime();
+ Assert.assertEquals(0, temp, 0);
+ }
+
+ @Test
+ public void testInheritance(){
+ Student Emad = new Student();
+ Emad.setName("Emad");
+ Assert.assertEquals("Emad", Emad.getName());
+ }
+
+ @Test
+ public void testLearn(){
+
+ //Creates Student
+ Student cedric = new Student();
+
+ //Cedric learns for 2 hours
+ cedric.learn(2);
+
+ //Checking get study time, ensuring returning total;
+ double bookMark1 = cedric.getTotalStudyTime();
+
+ //Adding two more hours to total study, ensuring saving increments
+ cedric.learn(2);
+ double bookMark2 = cedric.getTotalStudyTime();
+
+ Assert.assertEquals(2, bookMark1 , 0);
+ Assert.assertEquals(4, bookMark2, 0);
+ }
+}
diff --git a/target/classes/com/dtcc/projects/Instructor.class b/target/classes/com/dtcc/projects/Instructor.class
new file mode 100644
index 0000000..a2656be
Binary files /dev/null and b/target/classes/com/dtcc/projects/Instructor.class differ
diff --git a/target/classes/com/dtcc/projects/Learner.class b/target/classes/com/dtcc/projects/Learner.class
new file mode 100644
index 0000000..52c8c81
Binary files /dev/null and b/target/classes/com/dtcc/projects/Learner.class differ
diff --git a/target/classes/com/dtcc/projects/Person.class b/target/classes/com/dtcc/projects/Person.class
new file mode 100644
index 0000000..55e67ec
Binary files /dev/null and b/target/classes/com/dtcc/projects/Person.class differ
diff --git a/target/classes/com/dtcc/projects/Student.class b/target/classes/com/dtcc/projects/Student.class
new file mode 100644
index 0000000..63a01a6
Binary files /dev/null and b/target/classes/com/dtcc/projects/Student.class differ
diff --git a/target/classes/com/dtcc/projects/Teacher.class b/target/classes/com/dtcc/projects/Teacher.class
new file mode 100644
index 0000000..5c1a75a
Binary files /dev/null and b/target/classes/com/dtcc/projects/Teacher.class differ
diff --git a/target/test-classes/com/dtcc/projects/TestInstructor.class b/target/test-classes/com/dtcc/projects/TestInstructor.class
new file mode 100644
index 0000000..d920fc8
Binary files /dev/null and b/target/test-classes/com/dtcc/projects/TestInstructor.class differ
diff --git a/target/test-classes/com/dtcc/projects/TestPerson.class b/target/test-classes/com/dtcc/projects/TestPerson.class
new file mode 100644
index 0000000..7c8aec1
Binary files /dev/null and b/target/test-classes/com/dtcc/projects/TestPerson.class differ
diff --git a/target/test-classes/com/dtcc/projects/TestStudent.class b/target/test-classes/com/dtcc/projects/TestStudent.class
new file mode 100644
index 0000000..95cc55e
Binary files /dev/null and b/target/test-classes/com/dtcc/projects/TestStudent.class differ