Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

// ---------------------------------------------------------- // Student.java //

ID: 3791564 • Letter: #

Question

// ----------------------------------------------------------
//                    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   { }


    @Override
            public Object clone() throws CloneNotSupportedException
            {
            
             //   return super.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;              }


        @Override
   public String toString()
   {
       return id + " " + fullName.toString ( );
   }

  
    @Override
   public boolean equals ( Object obj )
        {
        return false;
        }
        @Override
   public void finalize()
        {
            System.out.println("Finalizing the student object");
       System.out.println(this);
        }

   public void dispose()
        {
            System.out.println("Disposing the student object");
       System.out.println(this);
        }

   public int hashCode()
        {
            return super.hashCode();
        }

   public int compareTo (Student studentObj )
        {
            return studentObj.getName().compareTo(this.getName());
        }

} // end Student

// ------------------------------------------------------------
//                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 );
   }

        @Override
   public boolean equals ( Object obj )
        {
            //return obj.equals(first);
          
        }               // Equals method

   public String toString( )
   {
       return first + " " + last;
   }

        @Override
   public void finalize ( )
        {
       System.out.println("Finalizing the name object");
       System.out.println(this);
        }                           // finalize method

   public void dispose ( )
        {
          System.out.println("Disposing the name object");
       System.out.println(this);
        }                           // dispose method

   public int hashCode ( )
        {
             return super.hashCode();
        }                           // hashCode method

   public int compareTo (Name nameObj)
        {
            return nameObj.getName().compareTo(this.getName());
        }
        @Override
        public Object clone() throws CloneNotSupportedException
        {
              Name obj = new Name(this.first, this.last);
        return obj;
        }

} // end Name

// -----------------------------------------------
//                    TestStudentName.java
// -----------------------------------------------

public class TestStudentName
{
   public static void main ( String [ ] args ) throws CloneNotSupportedException
   {
       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 ( " Error - students should not be the same" );
           System.out.println ( " s1 = " + s1 );
           System.out.println ( " s1 = " + s2 );
       }
       else
       {
           System.out.println ( " Success - students are not the same" );
           System.out.println ( " s1 = " + s1 );
           System.out.println ( " s1 = " + s2 );
       }
                //
                System.out.println("student1");
       System.out.println(s1);
       System.out.println("student2");
       System.out.println(s2);
              
                //

   // ---- Test the clone method ------------
       System.out.println ( " Test the 'clone' method ------------" );
                           Student s3 = (Student) s1.clone ();
              

       if ( s1.equals ( s3 ) )
           System.out.println ( " Success - Students s1 and s3 are the same." );
       else
       {
           System.out.println ( " Error - Students s1 and s3 are not the same" );
           System.out.println ( " s1 = " + s1 );
           System.out.println ( " s3 = " + s3 );
       }

       s3.setStudent ( n2, "234567" );
       if ( s1.equals ( s3 ) )
       {
           System.out.println ( " Error - students should not be the same" );
           System.out.println ( " s1 = " + s1 );
           System.out.println ( " s1 = " + s3 );
       }
       else
           System.out.println ( " Success - students are not the same" );

   // ---- Test the finalize method ---------
       System.out.println ( " Test the 'finalize' method ------------" );
       s1 = null;
       System.gc();
       System.out.println ( " Should see the 'finalize' message ------------" );

   // ---- Test the dispose method ----------
       System.out.println ( " Test the 'dispose' method ------------" );
       s2.dispose();
       System.out.println ( " Should 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 ( " Success - hashCode for s1 and s3 are the same." );
       else
       {
           System.out.println ( " Error - hashCode for s1 and s3 are not the same." );
           System.out.println ( " s1.hashCode = " + s1.hashCode() );
           System.out.println ( " s3.hashCode = " + s3.hashCode() );
       }

       System.out.println ( );
   }
}


// Someone code me equals and clone method that work with tester file would be great. Post only those method code.

Explanation / Answer

Hi,

Please see below the updated classes. Please comment for any queries/feedbacks.

Thanks,

Anita Joseph

Student.java

// ----------------------------------------------------------
// 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 {
   this.fullName = obj.fullName;
   this.id = obj.id;
}

@Override
public Object clone() throws CloneNotSupportedException
{
           Student obj = new Student((Name)this.getName().clone(), this.id);
       return obj;
      
}
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; }

@Override
public String toString()
{
return id + " " + fullName.toString ( );
}
  
@Override
public boolean equals ( Object obj )
{
   Student st = (Student) obj;
   if(this.getName().equals(st.getName()) ){
       return true;
   }
return false;
}
@Override
protected void finalize()
{
System.out.println("Finalizing the student object");
System.out.println(this);
}
public void dispose()
{
System.out.println("Disposing the student object");
System.out.println(this);
}
public int hashCode()
{
       String studentId = this.id;
return Integer.valueOf(studentId);
}
public int compareTo (Student studentObj )
{
return studentObj.getName().compareTo(this.getName());
}
} // end Student

Name.java

// ------------------------------------------------------------
// 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 );
}
@Override
public boolean equals ( Object obj )
{  
   Name name = (Name) obj;
   if(this.getFirst().equalsIgnoreCase(name.getFirst())){
       return true;
   }
   return false;
  
  
} // Equals method
public String toString( )
{
return first + " " + last;
}
@Override
public void finalize ( )
{
System.out.println("Finalizing the name object");
System.out.println(this);
} // finalize method
public void dispose ( )
{
System.out.println("Disposing the name object");
System.out.println(this);
} // dispose method
public int hashCode ( )
{
return super.hashCode();
} // hashCode method
public int compareTo (Name nameObj)
{
return nameObj.getName().compareTo(this.getName());
}
@Override
public Object clone() throws CloneNotSupportedException
{
Name obj = new Name(this.first, this.last);
return obj;
}
} // end Name

TestStudentName.java

// -----------------------------------------------
// TestStudentName.java
// -----------------------------------------------
public class TestStudentName
{
public static void main ( String [ ] args ) throws CloneNotSupportedException
{
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 ( " Error - students should not be the same" );
System.out.println ( " s1 = " + s1 );
System.out.println ( " s1 = " + s2 );
}
else
{
System.out.println ( " Success - students are not the same" );
System.out.println ( " s1 = " + s1 );
System.out.println ( " s1 = " + s2 );
}
//
System.out.println("student1");
System.out.println(s1);
System.out.println("student2");
System.out.println(s2);
  
//
// ---- Test the clone method ------------
System.out.println ( " Test the 'clone' method ------------" );
Student s3 = (Student) s1.clone ();
  
if ( s1.equals ( s3 ) )
System.out.println ( " Success - Students s1 and s3 are the same." );
else
{
System.out.println ( " Error - Students s1 and s3 are not the same" );
System.out.println ( " s1 = " + s1 );
System.out.println ( " s3 = " + s3 );
}
s3.setStudent ( n2, "234567" );
if ( s1.equals ( s3 ) )
{
System.out.println ( " Error - students should not be the same" );
System.out.println ( " s1 = " + s1 );
System.out.println ( " s1 = " + s3 );
}
else
System.out.println ( " Success - students are not the same" );
// ---- Test the finalize method ---------
System.out.println ( " Test the 'finalize' method ------------" );
s1 = null;
System.gc();
System.out.println ( " Should see the 'finalize' message ------------" );
// ---- Test the dispose method ----------
System.out.println ( " Test the 'dispose' method ------------" );
s2.dispose();
System.out.println ( " Should 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 ( " Success - hashCode for s1 and s3 are the same." );
else
{
System.out.println ( " Error - hashCode for s1 and s3 are not the same." );
System.out.println ( " s1.hashCode = " + s1.hashCode() );
System.out.println ( " s3.hashCode = " + s3.hashCode() );
}
System.out.println ( );
}
}

SAmple output:

Test the copy constructor ------------
       Success - students are not the same
       s1 = 123456 Ty Cobb
       s1 = 234567 Babe Ruth
student1
123456 Ty Cobb
student2
234567 Babe Ruth


Test the 'clone' method ------------
       Success - Students s1 and s3 are the same.
       Success - students are not the same


Test the 'finalize' method ------------
       Should see the 'finalize' message ------------


Test the 'dispose' method ------------
Disposing the student object
234567 Babe Ruth
       Should see the 'dispose' message ------------
Finalizing the name object
Ty Cobb
Finalizing the student object
123456 Ty Cobb
Finalizing the name object
Ty Cobb


Test the 'hashCode' method ------------
       Success - hashCode for s1 and s3 are the same.