/** Encapsulate information relating to a single student. ** @author: Jonathan Doughty **/ public class CSStudent { // Instance variables (fields) that will be associated with // each student private String GMU_Id; private String name; private int homeworkGrade; private CSStudent labPartner; // Constructors for the class private CSStudent() { // why do you think this is? } public CSStudent( String name, String id) { this.name = name; GMU_Id = id; } // An accessor method to set the Student's name field; not // needed any more but left in because a student's name could // change. public void setName( String studentName ) { name = studentName; } // An accessor method to return this Student's name public String getName() { return name; } // An accessor method to set the Student's GMU_Id field (probably // no longer necessary) public void setId( String id ) { GMU_Id = id; } // An accessor method to set the Student's homeworkGrade field public void setGrade( int grade ) { homeworkGrade = grade; } // An accessor method to assign this Student's lab partner public void setLabPartner( CSStudent s ) { labPartner = s; } // Using the toString method to enable an instance of an // object to identify itself usefully. public String toString() { // Since I'm going to be returning a String made up of various // pieces, I build up those pieces in a StringBuffer. StringBuffer sb = new StringBuffer(); sb.append(name); sb.append(" Id# "); sb.append(GMU_Id); if (labPartner != null) { // Notice I don't just use labPartner.toString(). If I did // I would create an infinite loop: each lab partner calls // its lab partner's toString() which calls's its lab // partner's toString() ... Instead, I just get and append // the lab partner's name. sb.append(" lab partner="); sb.append( labPartner.getName()); } return sb.toString(); } }