import java.util.ArrayList; class Student { /* * data members/state variables */ private String firstName, lastName, gender, phone, userid; private long studentNumber; private ArrayList courses; /* * Constructors */ public Student(long studentNumber) { this.studentNumber = studentNumber; this.courses = new ArrayList(); } public Student(long studentNumber, String userid) { this.studentNumber = studentNumber; this.userid = userid; this.courses = new ArrayList(); } /* * Utility methods */ public String toString() { return studentNumber + ": " + lastName + ", " + firstName; } /* simple clone method Is this ok?*/ public Student clone() { Student s = new Student(studentNumber, userid); s.setFirstName(firstName); s.setLastName(lastName); return s; } /* Equality based on student number. */ public boolean equals(Student other) { return this.studentNumber == other.studentNumber; } /* What is going on here? */ public long compareTo(Student other) { int ln = lastName.compareTo(other.lastName); if (ln!=0) { return ln; } else { return firstName.compareTo(other.firstName); } } /* * Simple getters and setters */ public void setFirstName(String name) { if ( name.length() > 0 ) { firstName = name; } else { // error } } public String getFirstName() { return firstName; } public void setLastName(String name) { if ( name.length() > 0 ) { lastName = name; } else { // error } } public String getLastName() { return lastName; } public long getStudentNumber() { return studentNumber; } public String getUserID() { return userid; } public String getPhone() { return phone; } public void setPhone(long number) { setPhone( Long.toString(number) ); } public void setPhone(String number) { if ( number.length() == 10 && number.charAt(0) != '1' ) { phone = number; } else { // should cause an error here. } } /* * Dealing with course registration */ public void addCourse(String crs) { // check for duplicates for( int i=0; i copyCourses() { ArrayList copy = new ArrayList(); for(int i=0; i