// ********************************************* client program public class CompositionDemo4 { public static void main(String[] args) { Student[] classRoster = new Student[5]; // class of 5 students classRoster[0] = new Student(new Name("Jane", "Doe"), 10, new String[]{"English", "Algebra", "History", "Biology"}); classRoster[1] = new Student(new Name("Bill", "Smith"), 10, new String[]{"Algebra", "English", "History", "Biology"}); classRoster[2] = new Student(new Name("Mary", "Jones"), 11, new String[]{"English", "Algebra", "Biology", "History"}); classRoster[3] = new Student(new Name("John", "Mason"), 12, new String[]{"Algebra", "History", "English", "Biology"}); classRoster[4] = new Student(new Name("Sally", "Smith"), 10, new String[]{"Biology", "Algebra", "History", "English"}); // display all information for (int i = 0; i < classRoster.length; i++) { System.out.println(classRoster[i]); } // using linear search to count number of students whose last name is alphabetically greater than "M" and // who have History as their third class of the day int count = 0; for (int i = 0; i < classRoster.length; i++) { if (classRoster[i].getSchedule()[2].equals("History") && classRoster[i].getName().getLastName().compareTo("M") > 0) { count++; } } System.out.println(count + " student's have a last name greater than \"M\" and have History as their third class of the day"); } } ///////////////////////////////////////////////// Name class class Name { // ************************************ instance fields private String myFirstName; private String myLastName; // ************************************ constructors public Name(String first, String last) { myFirstName = first; myLastName = last; } // ************************************ accessor methods public String getLastName() { return myLastName; } // ************************************ modifier methods public void setFirstName(String first) { myFirstName = first; } public void setLastName(String last) { myLastName = last; } // *********************************** interesting methods public String toString() { return myFirstName + " " + myLastName; } } /////////////////////////////////////////// Student class class Student { // ************************************ instance fields private Name myName; private int myGradeLevel; private String[] mySchedule; // ************************************ constructors public Student(Name name, int gradeLevel, String[] schedule) { myName = name; myGradeLevel = gradeLevel; mySchedule = schedule; } // ************************************ accessor methods public Name getName() { return myName; } public int getGradeLevel() { return myGradeLevel; } public String[] getSchedule() { return mySchedule; } // *********************************** interesting methods public String scheduleList() { String listOfClasses = ""; for (int i = 0; i < mySchedule.length; i++) { listOfClasses = listOfClasses + " " + mySchedule[i]; } return listOfClasses; } public String toString() { return myName.toString() + " " + myGradeLevel + " " + scheduleList(); } }