object Class is components: ClassName and Section and Professor and stus:Student* and gilist:GradedItem* and UseWeight and requires_saving:RS and permissions:Permit and tot:Total; description: (* A Class is what is stored in a grade book. The ClassName component is the name of the class. The Section component is the section number. The Professor component is the name of the professor. The Students component is the list of students in the class. The Items component is the list of graded items in the class. *); end Class; object ClassName is string; object Section is integer; object Professor is string; object UseWeight is boolean; object RS is boolean; object Total is integer; operation AddClass is inputs: uws:UserWorkSpace, ClassName, Section, Professor; outputs: uws':UserWorkSpace; precondition: (* None yet. *); postcondition: (* A Class with the given specifications exists, with no * Students or Items. The list of active classes of the * output workspace is changed. *); description: (* AddClass creates a Class with the given ClassName, Section, and Professor. *); end AddClass; operation ToggleWeight is inputs: Class, UseWeight; outputs: Class; precondition: (* None yet. *); postcondition: (* The Class's UseWeight setting has changed. *); description: (* ToggleWeight toggles weights on and off for the given Class. *); end ToggleWeight; object UserWorkSpace is components: uid:Access and gradebooks:Class* and previous_stack:Previous and next_stack:Next and clipboard:Clipboard and selection:Selection and context:SelectionContext; description: (* The UserWorkSpace contains the active classes upon which the user is working. The first component is the UserId of the current user, which is used as necessary by operations that input the workspace to determine who the user is. The Class* component is the list of active classes; the list is maintained in the order visited by the user, with the first element being the most recently visited, and hence current, and the last element being the earliest visited. The previous_stack component is used to support multiple levels of command undo, and the next_stack component is used to support multipple levels of command redo. The Clipboard is used with the Edit cut, copy, and paste operations. *); end UserWorkSpace; object Previous is UserWorkSpace*; object Next is UserWorkSpace*; object Permit is components: is_readable:readable and is_writeable:writeable and is_executable:executable; description:(* This describes the file permissions to the current user, rwx *); end Permit; obj readable is boolean; obj writeable is boolean; obj executable is boolean;