Git-Leon 7 anni fa
parent
commit
53004fc3c4
1 ha cambiato i file con 21 aggiunte e 16 eliminazioni
  1. 21
    16
      README.md

+ 21
- 16
README.md Vedi File

1
 # Student, Instructor, Classroom
1
 # Student, Instructor, Classroom
2
 * **Purpose** - to demonstrate the use of [Java interfaces](http://tutorials.jenkov.com/java/interfaces.html)
2
 * **Purpose** - to demonstrate the use of [Java interfaces](http://tutorials.jenkov.com/java/interfaces.html)
3
+* **Objective** - to implement a `ZipCodeWilmington` _singleton_ which _mediates_ a _composite_ `Students` and `Instructors` reference.
3
 
4
 
4
 
5
 
5
 # Part 1.1 - Create `Person` Class
6
 # Part 1.1 - Create `Person` Class
100
 
101
 
101
 
102
 
102
 -
103
 -
103
-# Part 7.1 - Create `MyCohort` singleton
104
+# Part 7.1 - Create `Students` singleton
104
 * **Note:** The creation of this class will demonstrate an implementation of [singleton design pattern](https://www.journaldev.com/1377/java-singleton-design-pattern-best-practices-examples#eager-initialization).
105
 * **Note:** The creation of this class will demonstrate an implementation of [singleton design pattern](https://www.journaldev.com/1377/java-singleton-design-pattern-best-practices-examples#eager-initialization).
105
-* Create a `MyCohort` class.
106
-	* The class should be a subclass of the `People` class.
107
-	* The class should _statically instantiate_ a `final` field named `INSTANCE` of type `MyCohort`.
108
-	* The class should define a _private constructor_ which populates the `INSTANCE` field with respective `Student` representations of your colleagues.
109
-		* Each student should have a unique `id` field.
106
+* Create a `Students` class.
107
+	* The class should be an _unextendable_ subclass of the `People` class.
108
+	* The class should _statically instantiate_ a `final` field named `INSTANCE` of type `Students`.
109
+	* The class should define a _private nullary constructor_ which populates the `INSTANCE` field with respective `Student` representations of your colleagues.
110
+		* Each student should have a _relatively_ unique `id` field.
110
 	* The class should define a `getInstance` method which returns the `INSTANCE` field.
111
 	* The class should define a `getInstance` method which returns the `INSTANCE` field.
111
 	
112
 	
112
 	
113
 	
113
 
114
 
114
 -
115
 -
115
-# Part 7.0 - Test `MyCohort` singleton
116
-* Create a `TestMyCohort` class.
117
-	* Create a `test` method which ensures that each of the students in your current cohort are in your `MyCohort` singleton.
116
+# Part 7.0 - Test `Students` singleton
117
+* Create a `TestStudents` class.
118
+	* Create a `test` method which ensures that each of the students in your current cohort are in your `Students` singleton.
118
 
119
 
119
 -
120
 -
120
-# Part 7.2 - Create `ZipCodeInstructors` singleton
121
+# Part 7.2 - Create `Instructors` singleton
121
 * Use `Part 7.0` and `Part 7.1` as a reference.
122
 * Use `Part 7.0` and `Part 7.1` as a reference.
122
-* Create a `ZipCodeInstructors` singleton which represents the set of instructors at ZipCodeWilmington.
123
-* Create a `TestZipCodeInstructors` class.
123
+* Create a `Instructors` singleton which represents the set of instructors at ZipCodeWilmington.
124
+* Create a `TestInstructors` class.
124
 
125
 
125
 
126
 
126
-
127
--
128
 # Part 8.1 - Create `ZipCodeWilmington` Class
127
 # Part 8.1 - Create `ZipCodeWilmington` Class
129
 * Use `Part 7` as a reference.
128
 * Use `Part 7` as a reference.
130
 * Create a `ZipCodeWilmington` singleton.
129
 * Create a `ZipCodeWilmington` singleton.
131
-	* The class should declare a field that references `MyCohort` called `cohort`.
132
-	* The class should declare a field that references `ZipCodeInstructors` called `instructors`.
130
+	* The class should declare a field that references the instance of `Students` called `students`.
131
+	* The class should declare a field that references the instance of `Instructors` called `instructors`.
133
 	* The class should define a method `hostLecture` which makes use of a `long id, double numberOfHours` parameter to identify a respective `Instructor` to host a `lecture` to the composite `people` field in the `cohort` reference.
132
 	* The class should define a method `hostLecture` which makes use of a `long id, double numberOfHours` parameter to identify a respective `Instructor` to host a `lecture` to the composite `people` field in the `cohort` reference.
134
 
133
 
135
 -
134
 -
136
 # Part 8.0 - Test `ZipCodeWilmington`
135
 # Part 8.0 - Test `ZipCodeWilmington`
137
 * Create a `TestZipCodeWilmington` class.
136
 * Create a `TestZipCodeWilmington` class.
138
 	* Create a `testHostLecture` method which ensures that each of the `Student`'s `totalStudyTime` instance variable is incremented by the specified `numberOfHours` upon invoking the `.hostLecture` method.
137
 	* Create a `testHostLecture` method which ensures that each of the `Student`'s `totalStudyTime` instance variable is incremented by the specified `numberOfHours` upon invoking the `.hostLecture` method.
138
+
139
+-
140
+# Notice the Design Flaw
141
+* You may have notice that `findById` makes it difficult to intuitively identify _which_ `Person` object is being returned.<br>
142
+Additionally, it's challengaing to ensure **every** `Person` instance has a unique ID amongst its respective `People` subclass.<br>
143
+To remedy this issue, we redesign and refactor. Visit the [enum microlab]()