module Grader; import File.File; export UserWorkSpace, Gradesheets, UserGrader, RequiresSaving; object UserWorkSpace components: Gradesheets; description: (* The user contains active gradesheets upon which the user is working. *); end UserWorkSpace; object Gradesheets components: Gradesheet*; description: (* Gradesheets is a list of the active gradesheets open in the UserWorkspace *); end Gradesheets; object Gradesheet components: Row*; description: (* A gradesheet is a collection of zero or more rows, that represents a course grade sheet *); end Gradesheet; object UserGrader -- components: file:File and requires_saving:RequiresSaving; components: requires_saving:RequiresSaving; description: (* A UserGrader has a flag indicating if the GradeSheet requires saving. *); end UserGrader; object StudentInfo; -- stub object Row extends StudentInfo components: Column* and CourseGradeColumn; description: (* Row is an individual students grade and personal information. It consists of a student name, an ID, a collection of zero or more columns, and a course grade column. *); end Row; object CourseGradeColumn components: PointsCol and PercentageCol and LetterCol; description: (* Course Grade Column is a default column created by the system when roster is imported. The course grade column has three subcolumns: a course points column, a course percentage column, and a course letter grade column *); end CourseGradeColumn; object PointsCol = Points; object PercentageCol = Percentage; object LetterCol = Symbol; object Points = integer; object Percentage = real; object Symbol = string; object Column components: ColumnValue and AVGColumn and SubColumn*; description: (* Column is a category in the gradesheet that contains a column value, a system defaulted average column, and a collection of 0 or more sub columns. *); end Column; object ColumnValue components: Points or Percentage or Symbol; description: (* ColumnValue is the component of a cell in points form, percentage form or letter form *); end ColumnValue; object AVGColumn components: Points or Percentage or Symbol; description: (* AVGColumn is a default column created by the system when a new column is created that contains the average of all subcolumns at the same level *); end AVGColumn; object SubColumn components: SubColumnValue and SubColumn*; description: (* SubColumn is an assignment in the grade sheet that contains a value, and a collection of zero or more subcolumns *); end SubColumn; object SubColumnValue components: Points or Percentage or Symbol; description: (* SubColumnValue is the component of a cell in points form, percentage form or letter form *); end SubColumnValue; object RequiresSaving = boolean description: (* True if a grader requires saving, which is the case if one or more successful edit operations has been performed on the grader since the most recent save. The grader edit operations are ... *); end RequiresSaving; object PreviousState components: ; description: (* PreviousState is the snapshot of scheduled items before the most recently performed scheduling operation used by EditUndo. The Schedule, Change, and Delete operations save the previous state to support Undo. *); end PreviousState; end Grader;