Question: Problem: Using the Name.java and Student.java files, expand both classes to include the following methods: A copy constructor, A clone method, A finalize method, A

Problem: Using the Name.java and Student.java files, expand both classes to include the following methods: A copy constructor, A clone method, A finalize method, A dispose method, and A hashCode method. A compareTo method Test the upgraded classes using the application TestStudentName.java located in Chapter01_Files.zip. Be sure to include output messages in both the finalize method and the dispose method. // ------------------------------------------------------------ // Name.java // ------------------------------------------------------------ public class Name { private String first; // first name private String last; // last name public Name() { this ( "", "" ); } public Name(String firstName, String lastName) { first = firstName; last = lastName; } public void setName(String firstName, String lastName) { first = firstName; last = lastName; } public Name(Name obj) throws NullPointerException { } // Copy Constructor public void setFirst(String firstName) { first = firstName; } public void setLast (String lastName ) { last = lastName; } public String getFirst() { return first; } public String getLast () { return last; } public String getName () { return toString(); } public void giveLastNameTo ( Name aName ) { aName.setLast ( last ); } public boolean equals ( Object obj ) { } // Equals method public String toString( ) { return first + " " + last; } public void finalize ( ) { } // finalize method public void dispose ( ) { } // dispose method public int hashCode ( ) { } // hashCode method public int compareTo ( ) { } // compareTo Method } // end Name // ---------------------------------------------------------- // Student.java // ---------------------------------------------------------- public class Student { private Name fullName; private String id; public Student() { this ( new Name ( ), "" ); } public Student(Name studentName, String studentId) { fullName = studentName; id = studentId; } public Student(Student obj) throws NullPointerException { } public Object clone() { } public void setStudent(Name studentName, String studentId) { fullName = studentName; id = studentId; } public void setName(Name studentName) { fullName = studentName; } public Name getName() { return fullName; } public void setId(String studentId) { id = studentId; } public String getId() { return id; } public String toString() { return id + " " + fullName.toString ( ); } public boolean equals ( Object obj ) { } public void finalize() { } public void dispose() { } public int hashCode() { } public int compareTo ( ) { } } // end Student // ----------------------------------------------- // TestStudentName.java // ----------------------------------------------- public class TestStudentName { public static void main ( String [ ] args ) { Name n1 = new Name ( "Ty", "Cobb" ); Name n2 = new Name ( "Babe", "Ruth" ); // ---- Test the copy constructor -------- System.out.println ( "Test the copy constructor ------------" ); Student s1 = new Student ( n1, "123456" ); Student s2 = new Student ( s1 ); s2.setStudent ( n2, "234567" ); if ( s1.equals ( s2 ) ) { System.out.println ( "\t\tError - students should not be the same" ); System.out.println ( "\t\ts1 = " + s1 ); System.out.println ( "\t\ts1 = " + s2 ); } else { System.out.println ( "\t\tSuccess - students are not the same" ); System.out.println ( "\t\ts1 = " + s1 ); System.out.println ( "\t\ts1 = " + s2 ); } // ---- Test the clone method ------------ System.out.println ( " Test the 'clone' method ------------" ); Student s3 = (Student) s1.clone ( ); if ( s1.equals ( s3 ) ) System.out.println ( "\t\tSuccess - Students s1 and s3 are the same." ); else { System.out.println ( "\t\tError - Students s1 and s3 are not the same" ); System.out.println ( "\t\ts1 = " + s1 ); System.out.println ( "\t\ts3 = " + s3 ); } s3.setStudent ( n2, "234567" ); if ( s1.equals ( s3 ) ) { System.out.println ( "\t\tError - students should not be the same" ); System.out.println ( "\t\ts1 = " + s1 ); System.out.println ( "\t\ts1 = " + s3 ); } else System.out.println ( "\t\tSuccess - students are not the same" ); // ---- Test the finalize method --------- System.out.println ( " Test the 'finalize' method ------------" ); s1 = null; System.gc(); System.out.println ( "\t\tShould see the 'finalize' message ------------" ); // ---- Test the dispose method ---------- System.out.println ( " Test the 'dispose' method ------------" ); s2.dispose(); System.out.println ( "\t\tShould see the 'dispose' message ------------" ); s2 = null; // ---- Test the hashCode method --------- s1 = new Student ( s3 ); System.out.println ( " Test the 'hashCode' method ------------" ); if ( s1.hashCode ( ) == s3.hashCode ( ) ) System.out.println ( "\t\tSuccess - hashCode for s1 and s3 are the same." ); else { System.out.println ( "\t\tError - hashCode for s1 and s3 are not the same." ); System.out.println ( "\t\ts1.hashCode = " + s1.hashCode() ); System.out.println ( "\t\ts3.hashCode = " + s3.hashCode() ); } System.out.println ( ); } }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!