object Roster components: Attendance*; operations: AddStudent, EditStudent, RemoveStudent,LoadRoster,ViewScreen,GrantAccess; description: (* Roster is a dialogue with the collection of students names that are enrolled in the class. It contains operations for the instructor to add/edit/remove students as well as loading a roster. It also has operation that grants students drawing access and view student screen. *); end InstructorRoster; object Attendance components: Name and Status and Time; description: (* Attendance is the component of Roster that stores information of students that are enrolled in the class. The name component is the student's real name. The status component tells whether the student is signed on or signed off. The Time component reports the students' sign on time. *); end Attendance; object Name = string; object Status = string; object Time = string; operation AddStudent inputs: Name, Id; outputs: ; precondition:(* The student's name cannot be NULL and the student's ID has to be numerical values*); postcondition:(* A new student has been added to the database and the student's name will appear on the roster attendance list *); description:(* Adds a new student to the current roster *); end; operation EditStudent inputs: Name, Id ; outputs: ; precondition:(* Name cannot be null and Id has to be numerical values *); postcondition:(* The student's information has been edited and saved in the database. The new name will appear on the roster attendance *); description:(* Edits the Name and Id of the student *); end; object Id = int; operation RemoveStudent precondition:(* A name of the student on the roster list must be selected *); postcondition:(* Student has been removed from the roster *); description:(* Removes a student from the roster *); end; operation LoadRoster inputs: ; outputs: ; precondition:(* A roster file type '.rst' must exist *); postcondition:(* The roster list is loaded to the attendance list *); description:(* loads a roster from a .rst (roster) file *); end; operation ViewScreen inputs: ; outputs: ; precondition:(*A name of the student on the roster list must be selected *); postcondition:(* The instructor screen displays the screen of that selected student *); description:(* views the screen of a selected student *); end; operation GrantAccess inputs: ; outputs: ; precondition:(* a student name on the attendance list must be selected*); postcondition:(* student's drawing will now appear on all screens *); description:(* grats the selected student access to draw *); end; object UserAccess components: Mode*; description: (* UserAccess allows the instructor to set different accessing mode for the students. These modes determine how much access the students have over their workstations. *); end UserAccess; object Mode components: FreeAccess or LectureOnly or EnableProgram or Disable; precondition: (* None yet *); postcondition:(* Once a mode is selected, the current mode will change to the selected mode *); description:(*The Mode object allows the intrucstor to select an access mode for the students. The four modes are FreeAccess, LectureOnly, EnableProgram, and Disable *); end Mode; object FreeAccess components: Access*; precondition:(* None yet *); postcondition:(* The useraccess mode is changed to free access*); description:(*This is a mode that grants the students all access to their workstation*); end FreeAccess; object LectureOnly components: Access*; precondition:(* None yet *); postcondition:(* The useraccess mode is changed to lecture only*); description:(*This is a mode that only allows e-Class lecture application to run in the students workstation*); end LectureOnly; object EnableProgram components: Access*; precondition:(* None yet*); postcondition:(* The useraccess mode is changed to Enable Program *); description:(*This is a mode that allows the instructor to allow selective applications for the students to use along with the lecture. *); end EnableProgram; object Disable components: Keyboard and Mouse; precondition:(* None yet *); postcondition:(* The useraccess mode is changed to Disable Mode and the user must select either Keyboards and/or Mouse to disable *); description:(*This is a mode that allows the instructor to disable either the Keyboards and/or mouse in the students workstations. *); end Disable; object Access component: AccessType; precondition: (* A type of mode must be selected *); postcondition:(* The access is changed to the access type contains in Mode *); description: (* The Access component contains that actual code that sets the actual mode *); end Access; object AccessType = String; object Keyboard components: Access*; precondition( * The 'Disable' mode must be selected *); postcondition( * All keyboards in the students' workstations are now disabled*); description: (* The keyboard component disables all the students' keyboards access to their workstations *); end Keyboard; object Mouse components: Access*; precondition( *The 'Disable' mode must be selected *); postcondition( *All mouse in the students' workstations are now disabled*); description: (* The mouse component disables all the students' mouse access to their workstations *); end Mouse;