From 62db0e9f87f103b501cfb521b629493ab4e53d05 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 27 Oct 2024 08:46:37 -0400 Subject: [PATCH 01/22] created person class --- .../java/com/github/curriculeon/Person.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/com/github/curriculeon/Person.java b/src/main/java/com/github/curriculeon/Person.java index 3c8350b..cfce295 100644 --- a/src/main/java/com/github/curriculeon/Person.java +++ b/src/main/java/com/github/curriculeon/Person.java @@ -1,5 +1,30 @@ package com.github.curriculeon; public class Person { + private Long id; + private String name; + public Person() { + } + + public Person(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } From bdf0c66673f63aa5ab08b7fbea0d77344531c87c Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 27 Oct 2024 08:59:36 -0400 Subject: [PATCH 02/22] completed learner interface, student and peson class --- .../java/com/github/curriculeon/Learner.java | 8 +++++++ .../java/com/github/curriculeon/Student.java | 23 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Learner.java create mode 100644 src/main/java/com/github/curriculeon/Student.java diff --git a/src/main/java/com/github/curriculeon/Learner.java b/src/main/java/com/github/curriculeon/Learner.java new file mode 100644 index 0000000..44cb9b9 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Learner.java @@ -0,0 +1,8 @@ +package com.github.curriculeon; + +public interface Learner { + void learn(Double hours); + Double getTotalStudyTime(); + + +} diff --git a/src/main/java/com/github/curriculeon/Student.java b/src/main/java/com/github/curriculeon/Student.java new file mode 100644 index 0000000..9d78a41 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Student.java @@ -0,0 +1,23 @@ +package com.github.curriculeon; + +public class Student extends Person implements Learner{ + private Double totalStudyTime=0.0; + + public Student(Double totalStudyTime) { + this.totalStudyTime = totalStudyTime; + } + + public Student(Long id, String name) { + super(id, name); + } + + @Override + public void learn(Double hours) { + totalStudyTime+=hours; + } + + @Override + public Double getTotalStudyTime() { + return totalStudyTime; + } +} From dbaa01bd52743d91188a47a935845169e3d0043e Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 27 Oct 2024 10:04:53 -0400 Subject: [PATCH 03/22] completed instructor class and teacher interface --- .../com/github/curriculeon/Instructor.java | 20 +++++++++++++++++++ .../java/com/github/curriculeon/Teacher.java | 6 ++++++ 2 files changed, 26 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Instructor.java create mode 100644 src/main/java/com/github/curriculeon/Teacher.java diff --git a/src/main/java/com/github/curriculeon/Instructor.java b/src/main/java/com/github/curriculeon/Instructor.java new file mode 100644 index 0000000..492475c --- /dev/null +++ b/src/main/java/com/github/curriculeon/Instructor.java @@ -0,0 +1,20 @@ +package com.github.curriculeon; + +public class Instructor extends Person{ + public Instructor() { + } + + public Instructor(Long id, String name) { + super(id, name); + } + + public void teach(Learner learner, Double time){ + learner.learn(time); + } + public void lecture (Learner learners [], Double time){ + for(Learner learner : learners){ + learner.learn(time); + } + } + +} diff --git a/src/main/java/com/github/curriculeon/Teacher.java b/src/main/java/com/github/curriculeon/Teacher.java new file mode 100644 index 0000000..a4a3827 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Teacher.java @@ -0,0 +1,6 @@ +package com.github.curriculeon; + +public interface Teacher { + void lecture (Learner learners [], Double time); + void teach(Learner learner, Double time); +} From f593c205773e7bfe6a98be58683b0264bd27c377 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 27 Oct 2024 11:28:58 -0400 Subject: [PATCH 04/22] completed until the people clasS --- .../java/com/github/curriculeon/Educator.java | 23 +++++++++++++++++++ .../java/com/github/curriculeon/People.java | 13 +++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Educator.java create mode 100644 src/main/java/com/github/curriculeon/People.java diff --git a/src/main/java/com/github/curriculeon/Educator.java b/src/main/java/com/github/curriculeon/Educator.java new file mode 100644 index 0000000..0d42770 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Educator.java @@ -0,0 +1,23 @@ +package com.github.curriculeon; + +public enum Educator implements Teacher{ + LEON, HASEEB; + private Double hoursWorked = 0.0; + + Educator(Double hoursWorked) { + this.hoursWorked = hoursWorked; + } + + Educator() { + } + + @Override + public void lecture(Learner[] learners, Double time) { + + } + + @Override + public void teach(Learner learner, Double time) { + + } +} diff --git a/src/main/java/com/github/curriculeon/People.java b/src/main/java/com/github/curriculeon/People.java new file mode 100644 index 0000000..fd49645 --- /dev/null +++ b/src/main/java/com/github/curriculeon/People.java @@ -0,0 +1,13 @@ +package com.github.curriculeon; + +import java.util.ArrayList; +import java.util.Collection; + +public class People extends ArrayList { + public People() { + } + + public People(Collection c) { + super(c); + } +} From abe4cbf31b8292c8ab137cbed2840f7c3be828bb Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 27 Oct 2024 11:44:27 -0400 Subject: [PATCH 05/22] completed classes, need to complete methods in classroom enum --- .../com/github/curriculeon/Classroom.java | 22 +++++++++++++++++++ .../com/github/curriculeon/Instructors.java | 11 ++++++++++ .../java/com/github/curriculeon/Students.java | 10 +++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Classroom.java create mode 100644 src/main/java/com/github/curriculeon/Instructors.java create mode 100644 src/main/java/com/github/curriculeon/Students.java diff --git a/src/main/java/com/github/curriculeon/Classroom.java b/src/main/java/com/github/curriculeon/Classroom.java new file mode 100644 index 0000000..0b85bca --- /dev/null +++ b/src/main/java/com/github/curriculeon/Classroom.java @@ -0,0 +1,22 @@ +package com.github.curriculeon; + +import java.util.HashMap; +import java.util.Map; + +public enum Classroom { + CLASSROOM, INSTRUCTORS; + + Classroom() { + } + public void hostLecture(Teacher teacher, Double time){ + + } + public void hostLecture(Long l, Double time){ + + } + public Map getStudyMap(){ + Map studyMap = new HashMap<>(); + return studyMap; + } + +} diff --git a/src/main/java/com/github/curriculeon/Instructors.java b/src/main/java/com/github/curriculeon/Instructors.java new file mode 100644 index 0000000..ca94c5a --- /dev/null +++ b/src/main/java/com/github/curriculeon/Instructors.java @@ -0,0 +1,11 @@ +package com.github.curriculeon; + +public class Instructors extends People{ + + public Instructors() { + } + public Instructors getInstance(){ + return this; + } + +} diff --git a/src/main/java/com/github/curriculeon/Students.java b/src/main/java/com/github/curriculeon/Students.java new file mode 100644 index 0000000..9542174 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Students.java @@ -0,0 +1,10 @@ +package com.github.curriculeon; + +public class Students extends People{ + public Students() { + } + + public Students getInstance(){ + return this; + } +} From b8e3feb0047acb3b5944213471ed3b7eb033aeb7 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 10 Nov 2024 21:01:54 -0500 Subject: [PATCH 06/22] added test for person class --- .DS_Store | Bin 0 -> 6148 bytes .../com/github/curriculeon/TestPerson.java | 47 ++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e1373dfa4b97c3334c25d7bd0547956dda621fdb GIT binary patch literal 6148 zcmeHKJxc>Y5PfS-32G5U!NTG?3qcUU%Hq^m2{yq}$d|@Q!UaG2>um&k!A7tUEc^jh z+V}_j4_5vHXLg5VE>TMnnStH6w{K_P?F+Y?1>iQ%n=3#GK#>Y#G)dJL!916d7?Yk^ zLdSD-S}T=C+U<>uv<`E?9Qcb4@V6Ub87;JNroZ3P%k_rlx@oyw@1%9=E3VI9-|w`Z zhxq1?eD7$mHIz$s49(5k>RyD5y;T-fVt z_SwN&M_H{0Jh0vb&QK%87CD{!je)Vi@39Oyg1`$J5HF%irH`mKX1e+3|nsM`m%`7XgZv0x&Y1tf;Tg;c_j>g0;y zLOS)wGApw;GpIgodt5FSf>{%?PO|Ia7clR01x z{3{1sRIZdaX-RUnjx3JP+L%g}3I~tN0{RrH Date: Sun, 10 Nov 2024 21:25:26 -0500 Subject: [PATCH 07/22] added test for student class --- .../java/com/github/curriculeon/Student.java | 4 +++ .../com/github/curriculeon/TestStudent.java | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/test/java/com/github/curriculeon/TestStudent.java diff --git a/src/main/java/com/github/curriculeon/Student.java b/src/main/java/com/github/curriculeon/Student.java index 9d78a41..34f42d9 100644 --- a/src/main/java/com/github/curriculeon/Student.java +++ b/src/main/java/com/github/curriculeon/Student.java @@ -11,6 +11,10 @@ public Student(Long id, String name) { super(id, name); } + public Student() { + + } + @Override public void learn(Double hours) { totalStudyTime+=hours; diff --git a/src/test/java/com/github/curriculeon/TestStudent.java b/src/test/java/com/github/curriculeon/TestStudent.java new file mode 100644 index 0000000..3f96371 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestStudent.java @@ -0,0 +1,33 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Optional; + +public class TestStudent { + + @Test + public void testImplementation(){ + Student b = new Student(); + boolean isInstance = (b instanceof Learner); + Assert.assertTrue(isInstance); + } + @Test + public void testLearn(){ + //given + Student student = new Student(); + //when + Double num = student.getTotalStudyTime(); + Double expected = 0.0; + Assert.assertEquals(num, expected); + Double hoursStudied = 1.0; + student.learn(hoursStudied); + //then + Assert.assertEquals(student.getTotalStudyTime(), hoursStudied); + + + + } + +} From d2f5601887027704254a02996f42b5d3228502b4 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 10 Nov 2024 21:46:55 -0500 Subject: [PATCH 08/22] updated teacher interface --- src/main/java/com/github/curriculeon/Teacher.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/curriculeon/Teacher.java b/src/main/java/com/github/curriculeon/Teacher.java index a4a3827..834cdfa 100644 --- a/src/main/java/com/github/curriculeon/Teacher.java +++ b/src/main/java/com/github/curriculeon/Teacher.java @@ -1,6 +1,6 @@ package com.github.curriculeon; public interface Teacher { - void lecture (Learner learners [], Double time); - void teach(Learner learner, Double time); + void lecture (Learner [] learners, Double numberOfHours); + void teach(Learner learner, Double numberOfHours); } From e44c1bd7f5aab56a12c8651466cff51f1d93977c Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 10 Nov 2024 21:50:57 -0500 Subject: [PATCH 09/22] updated Instructor class --- src/main/java/com/github/curriculeon/Instructor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/curriculeon/Instructor.java b/src/main/java/com/github/curriculeon/Instructor.java index 492475c..748c97a 100644 --- a/src/main/java/com/github/curriculeon/Instructor.java +++ b/src/main/java/com/github/curriculeon/Instructor.java @@ -1,6 +1,6 @@ package com.github.curriculeon; -public class Instructor extends Person{ +public class Instructor extends Person implements Teacher{ public Instructor() { } @@ -11,9 +11,10 @@ public Instructor(Long id, String name) { public void teach(Learner learner, Double time){ learner.learn(time); } - public void lecture (Learner learners [], Double time){ + public void lecture (Learner[] learners, Double time){ + double numberOfHoursPerLearner = time / learners.length; for(Learner learner : learners){ - learner.learn(time); + learner.learn(numberOfHoursPerLearner); } } From 9a85edec78df84db19f16f33eb058177e64dd379 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Sun, 10 Nov 2024 22:31:05 -0500 Subject: [PATCH 10/22] completed test for testInstructor class --- .../com/github/curriculeon/Instructor.java | 2 +- .../github/curriculeon/TestInstructor.java | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/github/curriculeon/TestInstructor.java diff --git a/src/main/java/com/github/curriculeon/Instructor.java b/src/main/java/com/github/curriculeon/Instructor.java index 748c97a..b5dd73f 100644 --- a/src/main/java/com/github/curriculeon/Instructor.java +++ b/src/main/java/com/github/curriculeon/Instructor.java @@ -14,7 +14,7 @@ public void teach(Learner learner, Double time){ public void lecture (Learner[] learners, Double time){ double numberOfHoursPerLearner = time / learners.length; for(Learner learner : learners){ - learner.learn(numberOfHoursPerLearner); + teach(learner, numberOfHoursPerLearner); } } diff --git a/src/test/java/com/github/curriculeon/TestInstructor.java b/src/test/java/com/github/curriculeon/TestInstructor.java new file mode 100644 index 0000000..594b0c0 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestInstructor.java @@ -0,0 +1,70 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +public class TestInstructor { + @Test + public void testImplementation(){ + //given + Instructor instructor = new Instructor(); + + //when + boolean isInstance = instructor instanceof Teacher; + + + //then + Assert.assertTrue(isInstance); + + } + + @Test + public void testInheritance(){ + //given + Instructor instructor = new Instructor(); + + //when + boolean isInstance = instructor instanceof Person; + + + //then + Assert.assertTrue(isInstance); + + } + + @Test + public void testTeach(){ + //given + Instructor instructor = new Instructor(); + Learner student = new Student(); + //when + Double initialTime = student.getTotalStudyTime(); + Double studyTime = 5.0; + instructor.teach(student, studyTime); + Double addedTime = initialTime + studyTime; + + + //then + Assert.assertEquals(student.getTotalStudyTime(), addedTime); + + } + + @Test + public void testLecture(){ + //given + Instructor instructor = new Instructor(); + Student[] students = new Student[]{new Student(), new Student()}; + //when + Double lectureTime = 50.0; + Double lectureTimeForStudent = lectureTime / students.length; + instructor.lecture(students, lectureTime); + Student firstStudent = students[0]; + + + //then + Assert.assertEquals(firstStudent.getTotalStudyTime(), lectureTimeForStudent); + + } + + +} From c0998700da3303f2741c08de4a604404e6d615d8 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 10:11:51 -0500 Subject: [PATCH 11/22] updated people class --- .../java/com/github/curriculeon/People.java | 52 +++++++++++++++++-- .../github/curriculeon/TestInstructor.java | 6 +-- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/github/curriculeon/People.java b/src/main/java/com/github/curriculeon/People.java index fd49645..6d7886a 100644 --- a/src/main/java/com/github/curriculeon/People.java +++ b/src/main/java/com/github/curriculeon/People.java @@ -1,13 +1,55 @@ package com.github.curriculeon; -import java.util.ArrayList; -import java.util.Collection; +import java.util.*; -public class People extends ArrayList { +public class People implements Iterable{ + private List personList = new ArrayList<>(); public People() { } + public void add(Person person){ + personList.add(person); + } + public Person findById(Long id){ + for(Person person : personList){ + if(person.getId().equals(id)){ + return person; + } + } + return null; + } + + public boolean contains(Person person){ + boolean results = false; + for(Person ele: personList){ + if(ele.equals(person)){ + results = true; + break; + } + } + + return results; + } + public void remove(Person person){ + personList.remove(person); + } + + public void remove(Long id){ + personList.remove(findById(id)); + } + + public void removeAll(){ + this.personList.clear(); + } + public Integer count(){ + return this.personList.size(); + } + public Person[] toArray(){ + return this.personList.toArray(new Person[0]); + } + - public People(Collection c) { - super(c); + @Override + public Iterator iterator() { + return personList.iterator(); } } diff --git a/src/test/java/com/github/curriculeon/TestInstructor.java b/src/test/java/com/github/curriculeon/TestInstructor.java index 594b0c0..70c86e5 100644 --- a/src/test/java/com/github/curriculeon/TestInstructor.java +++ b/src/test/java/com/github/curriculeon/TestInstructor.java @@ -26,7 +26,6 @@ public void testInheritance(){ //when boolean isInstance = instructor instanceof Person; - //then Assert.assertTrue(isInstance); @@ -43,10 +42,8 @@ public void testTeach(){ instructor.teach(student, studyTime); Double addedTime = initialTime + studyTime; - //then Assert.assertEquals(student.getTotalStudyTime(), addedTime); - } @Test @@ -54,11 +51,12 @@ public void testLecture(){ //given Instructor instructor = new Instructor(); Student[] students = new Student[]{new Student(), new Student()}; + Student firstStudent = students[0]; //when Double lectureTime = 50.0; Double lectureTimeForStudent = lectureTime / students.length; + Assert.assertNotEquals(firstStudent.getTotalStudyTime(), lectureTimeForStudent); instructor.lecture(students, lectureTime); - Student firstStudent = students[0]; //then From 6f67e26d8c39d8a822a6d796e18e9147c0d38069 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 10:34:49 -0500 Subject: [PATCH 12/22] added employee class to practice static variables and singletons --- .../java/com/github/curriculeon/Employee.java | 42 +++++++++++++++++++ .../java/com/github/curriculeon/Main.java | 11 +++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/java/com/github/curriculeon/Employee.java create mode 100644 src/main/java/com/github/curriculeon/Main.java diff --git a/src/main/java/com/github/curriculeon/Employee.java b/src/main/java/com/github/curriculeon/Employee.java new file mode 100644 index 0000000..0b27a83 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Employee.java @@ -0,0 +1,42 @@ +package com.github.curriculeon; + +public class Employee { + public static Employee LEON = new Employee(5l, "leon", 555.0); + public static Employee MOHAMMED = new Employee(1l, "mohammed", 4444.0); + private Long id; + private String name; + private Double salary; + + private Employee() { + } + + private Employee(Long id, String name, Double salary) { + this.id = id; + this.name = name; + this.salary = salary; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Double getSalary() { + return salary; + } + + public void setSalary(Double salary) { + this.salary = salary; + } +} diff --git a/src/main/java/com/github/curriculeon/Main.java b/src/main/java/com/github/curriculeon/Main.java new file mode 100644 index 0000000..f39ce83 --- /dev/null +++ b/src/main/java/com/github/curriculeon/Main.java @@ -0,0 +1,11 @@ +package com.github.curriculeon; + +public class Main { + public static void main(String[] args) { + Employee employee = Employee.LEON; + Employee employee2 = Employee.MOHAMMED; + System.out.println(employee.getId() + employee.getName()); + System.out.println(employee2.getName()f); + + } +} From 3e718553f0066132c548604333c08936b013002c Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 11:31:25 -0500 Subject: [PATCH 13/22] added students class instance field --- src/main/java/com/github/curriculeon/Main.java | 2 +- src/main/java/com/github/curriculeon/Students.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/github/curriculeon/Main.java b/src/main/java/com/github/curriculeon/Main.java index f39ce83..03d3a2f 100644 --- a/src/main/java/com/github/curriculeon/Main.java +++ b/src/main/java/com/github/curriculeon/Main.java @@ -5,7 +5,7 @@ public static void main(String[] args) { Employee employee = Employee.LEON; Employee employee2 = Employee.MOHAMMED; System.out.println(employee.getId() + employee.getName()); - System.out.println(employee2.getName()f); + System.out.println(employee2.getName()); } } diff --git a/src/main/java/com/github/curriculeon/Students.java b/src/main/java/com/github/curriculeon/Students.java index 9542174..9b77dcb 100644 --- a/src/main/java/com/github/curriculeon/Students.java +++ b/src/main/java/com/github/curriculeon/Students.java @@ -1,10 +1,15 @@ package com.github.curriculeon; -public class Students extends People{ - public Students() { +public final class Students extends People{ + public static Students INSTANCE = new Students(); + private Students() { + INSTANCE.add(new Student(5l, "mohammed")); + INSTANCE.add(new Student(9l, "naser")); + INSTANCE.add(new Student(4l, "ayad")); + } - public Students getInstance(){ - return this; + public static Students getInstance(){ + return INSTANCE; } } From 533da6fcfe99423e9109ca044fa2e987a9023518 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 12:59:31 -0500 Subject: [PATCH 14/22] completed TestStudents class --- .../java/com/github/curriculeon/Students.java | 8 ++--- .../com/github/curriculeon/TestStudents.java | 30 +++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/github/curriculeon/TestStudents.java diff --git a/src/main/java/com/github/curriculeon/Students.java b/src/main/java/com/github/curriculeon/Students.java index 9b77dcb..91d6de8 100644 --- a/src/main/java/com/github/curriculeon/Students.java +++ b/src/main/java/com/github/curriculeon/Students.java @@ -1,11 +1,11 @@ package com.github.curriculeon; public final class Students extends People{ - public static Students INSTANCE = new Students(); + private static Students INSTANCE = new Students(); private Students() { - INSTANCE.add(new Student(5l, "mohammed")); - INSTANCE.add(new Student(9l, "naser")); - INSTANCE.add(new Student(4l, "ayad")); + this.add(new Student(5l, "mohammed")); + this.add(new Student(9l, "naser")); + this.add(new Student(4l, "ayad")); } diff --git a/src/test/java/com/github/curriculeon/TestStudents.java b/src/test/java/com/github/curriculeon/TestStudents.java new file mode 100644 index 0000000..3327f69 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestStudents.java @@ -0,0 +1,30 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class TestStudents { +@Test + public void test(){ + // given + Students students = Students.getInstance(); + String[] names = "mohammed ayad naser".split(" "); + + //when + List nameList = Arrays + .stream(Students.getInstance().toArray()) + .map(Person::getName) + .collect(Collectors.toList()); + + //then + for(String expectedName : names){ + Assert.assertTrue(nameList.contains(expectedName)); + } + + +} +} From dbdfd9f4bcaeb09c803d1a17b46727dc3c6a62b1 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 13:26:59 -0500 Subject: [PATCH 15/22] completed instructors class and created test for Instructors --- .../com/github/curriculeon/Instructors.java | 12 +++++--- .../github/curriculeon/TestInstructors.java | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 src/test/java/com/github/curriculeon/TestInstructors.java diff --git a/src/main/java/com/github/curriculeon/Instructors.java b/src/main/java/com/github/curriculeon/Instructors.java index ca94c5a..6e8c08b 100644 --- a/src/main/java/com/github/curriculeon/Instructors.java +++ b/src/main/java/com/github/curriculeon/Instructors.java @@ -1,11 +1,15 @@ package com.github.curriculeon; -public class Instructors extends People{ +public final class Instructors extends People{ + private static Instructors INSTANCE = new Instructors(); + private Instructors() { + this.add(new Instructor(1l, "mohammed")); + this.add(new Instructor(2l, "ayad")); + this.add(new Instructor(3l, "naser")); - public Instructors() { } - public Instructors getInstance(){ - return this; + public static Instructors getInstance(){ + return INSTANCE; } } diff --git a/src/test/java/com/github/curriculeon/TestInstructors.java b/src/test/java/com/github/curriculeon/TestInstructors.java new file mode 100644 index 0000000..5da505d --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestInstructors.java @@ -0,0 +1,28 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class TestInstructors { + + @Test + public void test(){ + // given + String []names = "mohammed ayad naser".split(" "); + Instructors instructors = Instructors.getInstance(); + //when + List listNames = Arrays.stream(Instructors.getInstance().toArray()) + .map(Person::getName) + .collect(Collectors.toList()); + + + //then + for(String name: names){ + Assert.assertTrue(listNames.contains(name)); + } + } +} From b19505205e49c45c6d208066468b26b3f90c3716 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 14:21:23 -0500 Subject: [PATCH 16/22] completed classroom enum class --- .../com/github/curriculeon/Classroom.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/github/curriculeon/Classroom.java b/src/main/java/com/github/curriculeon/Classroom.java index 0b85bca..dc1fb82 100644 --- a/src/main/java/com/github/curriculeon/Classroom.java +++ b/src/main/java/com/github/curriculeon/Classroom.java @@ -4,19 +4,35 @@ import java.util.Map; public enum Classroom { - CLASSROOM, INSTRUCTORS; + INSTANCE; + private Students students = Students.getInstance(); + private Instructors instructors = Instructors.getInstance(); - Classroom() { - } - public void hostLecture(Teacher teacher, Double time){ - } - public void hostLecture(Long l, Double time){ + public void hostLecture(Teacher teacher, Double numberOfHours){ + Person[] personArray = students.toArray(); + Student[] studentArray = new Student[personArray.length]; + for(int i=0; i< personArray.length; i++){ + Person person = personArray[i]; + Student student = (Student) person; + studentArray[i] = student; + } + teacher.lecture(studentArray, numberOfHours); + } + public void hostLecture(Long id, Double numberOfHours){ + Person person = Instructors.getInstance().findById(id); + Teacher teacher = (Teacher) person; + hostLecture(teacher, numberOfHours); } public Map getStudyMap(){ - Map studyMap = new HashMap<>(); - return studyMap; + Map map = new HashMap<>(); + for(Person person : Students.getInstance().toArray()){ + Student student = (Student) person; + double numberOfHours = student.getTotalStudyTime(); + map.put(student, numberOfHours); + } + return map; } } From 25b773262f8a2d624a52c97e88614270f422a4ba Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 21:25:37 -0500 Subject: [PATCH 17/22] completed classroom tests --- .../com/github/curriculeon/TestClassroom.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/test/java/com/github/curriculeon/TestClassroom.java diff --git a/src/test/java/com/github/curriculeon/TestClassroom.java b/src/test/java/com/github/curriculeon/TestClassroom.java new file mode 100644 index 0000000..d02f7b5 --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestClassroom.java @@ -0,0 +1,33 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Map; + +public class TestClassroom { +@Test + public void testHostLecture(){ + // given + Classroom classroom = Classroom.INSTANCE; + Teacher teacher = (Teacher) Instructors.getInstance().findById(1l); + double numberOfHours = Students.getInstance().count(); + double hoursPerStudent = Students.getInstance().count() / numberOfHours; + MappreStudyMap = classroom.getStudyMap(); + + //when + classroom.hostLecture(teacher, numberOfHours); + Map postStudyMap = classroom.getStudyMap(); + + for(Map.Entry entry : preStudyMap.entrySet()){ + Student student = entry.getKey(); + double preStudyTime = entry.getValue(); + double actualStudyTime = postStudyMap.get(student); + double expectedStudyTime = preStudyTime + hoursPerStudent; + //then + Assert.assertEquals(expectedStudyTime, actualStudyTime, 0.0001); + } + +} + +} From 880bc1d14b6364f664fa6024d4cf5a36209cd095 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 21:38:25 -0500 Subject: [PATCH 18/22] updated people class made it generic and abstract --- .../java/com/github/curriculeon/People.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/github/curriculeon/People.java b/src/main/java/com/github/curriculeon/People.java index 6d7886a..d33d819 100644 --- a/src/main/java/com/github/curriculeon/People.java +++ b/src/main/java/com/github/curriculeon/People.java @@ -2,25 +2,25 @@ import java.util.*; -public class People implements Iterable{ - private List personList = new ArrayList<>(); +abstract class People implements Iterable{ + private List personList = new ArrayList<>(); public People() { } - public void add(Person person){ + public void add(PersonType person){ personList.add(person); } - public Person findById(Long id){ - for(Person person : personList){ - if(person.getId().equals(id)){ + public PersonType findById(Long id){ + for(PersonType person : personList){ + if(person.getId() == id){ return person; } } return null; } - public boolean contains(Person person){ + public boolean contains(PersonType person){ boolean results = false; - for(Person ele: personList){ + for(PersonType ele: personList){ if(ele.equals(person)){ results = true; break; @@ -29,7 +29,7 @@ public boolean contains(Person person){ return results; } - public void remove(Person person){ + public void remove(PersonType person){ personList.remove(person); } @@ -43,13 +43,11 @@ public void removeAll(){ public Integer count(){ return this.personList.size(); } - public Person[] toArray(){ - return this.personList.toArray(new Person[0]); - } + abstract public Person[] toArray(); @Override - public Iterator iterator() { + public Iterator iterator() { return personList.iterator(); } } From b6970d75d3c12a0ba525d2f1f7cd6199979945d8 Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 21:43:42 -0500 Subject: [PATCH 19/22] modified people class --- src/main/java/com/github/curriculeon/People.java | 5 +++-- src/main/java/com/github/curriculeon/Students.java | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/github/curriculeon/People.java b/src/main/java/com/github/curriculeon/People.java index d33d819..6fbba86 100644 --- a/src/main/java/com/github/curriculeon/People.java +++ b/src/main/java/com/github/curriculeon/People.java @@ -3,7 +3,8 @@ import java.util.*; abstract class People implements Iterable{ - private List personList = new ArrayList<>(); + //protected indicates that only subclasses have access to this field + protected List personList = new ArrayList<>(); public People() { } public void add(PersonType person){ @@ -43,7 +44,7 @@ public void removeAll(){ public Integer count(){ return this.personList.size(); } - abstract public Person[] toArray(); + abstract public PersonType[] toArray(); @Override diff --git a/src/main/java/com/github/curriculeon/Students.java b/src/main/java/com/github/curriculeon/Students.java index 91d6de8..d08eb15 100644 --- a/src/main/java/com/github/curriculeon/Students.java +++ b/src/main/java/com/github/curriculeon/Students.java @@ -1,6 +1,6 @@ package com.github.curriculeon; -public final class Students extends People{ +public final class Students extends People{ private static Students INSTANCE = new Students(); private Students() { this.add(new Student(5l, "mohammed")); @@ -9,7 +9,12 @@ private Students() { } - public static Students getInstance(){ + @Override + public Student[] toArray() { + return this.personList.toArray(new Student[0]); + } + + public static Students getInstance(){ return INSTANCE; } } From 36e67080d3bb8494d45c60cd51a2a907de5e932f Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Mon, 11 Nov 2024 22:01:47 -0500 Subject: [PATCH 20/22] updated testinstructor class --- src/main/java/com/github/curriculeon/Classroom.java | 11 ++--------- src/main/java/com/github/curriculeon/Instructors.java | 8 +++++++- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/github/curriculeon/Classroom.java b/src/main/java/com/github/curriculeon/Classroom.java index dc1fb82..39e8bca 100644 --- a/src/main/java/com/github/curriculeon/Classroom.java +++ b/src/main/java/com/github/curriculeon/Classroom.java @@ -10,15 +10,8 @@ public enum Classroom { public void hostLecture(Teacher teacher, Double numberOfHours){ - Person[] personArray = students.toArray(); - Student[] studentArray = new Student[personArray.length]; - - for(int i=0; i< personArray.length; i++){ - Person person = personArray[i]; - Student student = (Student) person; - studentArray[i] = student; - } - teacher.lecture(studentArray, numberOfHours); + Student[] personArray = students.toArray(); + teacher.lecture(personArray, numberOfHours); } public void hostLecture(Long id, Double numberOfHours){ Person person = Instructors.getInstance().findById(id); diff --git a/src/main/java/com/github/curriculeon/Instructors.java b/src/main/java/com/github/curriculeon/Instructors.java index 6e8c08b..c0c6e02 100644 --- a/src/main/java/com/github/curriculeon/Instructors.java +++ b/src/main/java/com/github/curriculeon/Instructors.java @@ -1,6 +1,6 @@ package com.github.curriculeon; -public final class Instructors extends People{ +public final class Instructors extends People{ private static Instructors INSTANCE = new Instructors(); private Instructors() { this.add(new Instructor(1l, "mohammed")); @@ -8,6 +8,12 @@ private Instructors() { this.add(new Instructor(3l, "naser")); } + + @Override + public Instructor[] toArray() { + return this.personList.toArray(new Instructor[0]); + } + public static Instructors getInstance(){ return INSTANCE; } From ce5ec7af1ac174f6ab8999602a34f0d7821fba5b Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Tue, 12 Nov 2024 11:23:57 -0500 Subject: [PATCH 21/22] completed educator enum and educator test class --- .../com/github/curriculeon/Classroom.java | 6 +- .../java/com/github/curriculeon/Educator.java | 15 +++-- .../com/github/curriculeon/TestEducator.java | 55 +++++++++++++++++++ 3 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 src/test/java/com/github/curriculeon/TestEducator.java diff --git a/src/main/java/com/github/curriculeon/Classroom.java b/src/main/java/com/github/curriculeon/Classroom.java index 39e8bca..59eb9c1 100644 --- a/src/main/java/com/github/curriculeon/Classroom.java +++ b/src/main/java/com/github/curriculeon/Classroom.java @@ -14,14 +14,12 @@ public void hostLecture(Teacher teacher, Double numberOfHours){ teacher.lecture(personArray, numberOfHours); } public void hostLecture(Long id, Double numberOfHours){ - Person person = Instructors.getInstance().findById(id); - Teacher teacher = (Teacher) person; + Teacher teacher = Instructors.getInstance().findById(id); hostLecture(teacher, numberOfHours); } public Map getStudyMap(){ Map map = new HashMap<>(); - for(Person person : Students.getInstance().toArray()){ - Student student = (Student) person; + for(Student student : Students.getInstance().toArray()){ double numberOfHours = student.getTotalStudyTime(); map.put(student, numberOfHours); } diff --git a/src/main/java/com/github/curriculeon/Educator.java b/src/main/java/com/github/curriculeon/Educator.java index 0d42770..da2d05b 100644 --- a/src/main/java/com/github/curriculeon/Educator.java +++ b/src/main/java/com/github/curriculeon/Educator.java @@ -1,23 +1,26 @@ package com.github.curriculeon; public enum Educator implements Teacher{ - LEON, HASEEB; + MOHAMMED, AYAD, NASER; + private final Instructor instructor; private Double hoursWorked = 0.0; - Educator(Double hoursWorked) { - this.hoursWorked = hoursWorked; - } Educator() { + this.instructor = new Instructor(); + Instructors.getInstance().add(this.instructor); + } @Override public void lecture(Learner[] learners, Double time) { - + this.instructor.lecture(learners, time); + this.hoursWorked += time; } @Override public void teach(Learner learner, Double time) { - +this.instructor.teach(learner, time); +this.hoursWorked+= time; } } diff --git a/src/test/java/com/github/curriculeon/TestEducator.java b/src/test/java/com/github/curriculeon/TestEducator.java new file mode 100644 index 0000000..15e07ec --- /dev/null +++ b/src/test/java/com/github/curriculeon/TestEducator.java @@ -0,0 +1,55 @@ +package com.github.curriculeon; + +import org.junit.Assert; +import org.junit.Test; + +public class TestEducator { + + @Test + public void testImplementation(){ + //given + Educator instructor = Educator.AYAD; + + //when + boolean isInstance = instructor instanceof Teacher; + + + //then + Assert.assertTrue(isInstance); + + } + + + @Test + public void testTeach(){ + //given + Educator instructor = Educator.AYAD; + Learner student = new Student(); + //when + Double initialTime = student.getTotalStudyTime(); + Double studyTime = 5.0; + instructor.teach(student, studyTime); + Double addedTime = initialTime + studyTime; + + //then + Assert.assertEquals(student.getTotalStudyTime(), addedTime); + } + + @Test + public void testLecture(){ + //given + Educator instructor = Educator.AYAD; + Student[] students = new Student[]{new Student(), new Student()}; + Student firstStudent = students[0]; + //when + Double lectureTime = 50.0; + Double lectureTimeForStudent = lectureTime / students.length; + Assert.assertNotEquals(firstStudent.getTotalStudyTime(), lectureTimeForStudent); + instructor.lecture(students, lectureTime); + + + //then + Assert.assertEquals(firstStudent.getTotalStudyTime(), lectureTimeForStudent); + + } +} From 24ea0a477a181b593d324e79d87beca91591c17b Mon Sep 17 00:00:00 2001 From: Mohammed N Date: Tue, 12 Nov 2024 11:25:36 -0500 Subject: [PATCH 22/22] tested hostlecture can take educator as instructor --- src/test/java/com/github/curriculeon/TestClassroom.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/github/curriculeon/TestClassroom.java b/src/test/java/com/github/curriculeon/TestClassroom.java index d02f7b5..bc70be6 100644 --- a/src/test/java/com/github/curriculeon/TestClassroom.java +++ b/src/test/java/com/github/curriculeon/TestClassroom.java @@ -10,7 +10,8 @@ public class TestClassroom { public void testHostLecture(){ // given Classroom classroom = Classroom.INSTANCE; - Teacher teacher = (Teacher) Instructors.getInstance().findById(1l); + //Teacher teacher = (Teacher) Instructors.getInstance().findById(1l); + Educator teacher = Educator.AYAD; double numberOfHours = Students.getInstance().count(); double hoursPerStudent = Students.getInstance().count() / numberOfHours; MappreStudyMap = classroom.getStudyMap();