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

Using the ‘Name.java’ and ‘Student.java’ files, expand both classes to include t

ID: 3877860 • Letter: U

Question

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’
Be sure to include output messages in both the ‘finalize’ method and the ‘dispose’ method.

I have uploaded the following code files to start:

Name.java

Student.java

TestStudentName.java

public class Name private String first //first name private String last // last name public Name) this (, "" ); public Name String firstName, String lastName) 12 3 fi rst fi rst Name ; last = lastName ; public void setName(String firstName, String lastName) fi rst fi rst Name ; last = lastName ; public Name (Name obj) throws Nul I PointerException t/ Copy Constructor public void setFirst ( String firstName) { first = firstName public void setLast (String last Name ) { last = last Name: public String getFirst) public String getLast () publ ic String getName () public void giveLast NameTo Name aName) return first return last return toSt r ing) 30 aName.setLast ast; publ ic String toStr ing) return first ast public void finalize ) public void dispose // finalize method //dispose method [ 15/ end Name

Explanation / Answer

// Name.java
public class Name {

   private String first;
   private String last;

   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
   {

   }

   public String getFirst() {
       return first;
   }

   public void setFirst(String first) {
       this.first = first;
   }

   public String getLast() {
       return last;
   }

   public void setLast(String last) {
       this.last = last;
   }

   public String getName(){
       return toString();
   }

   public void giveLastNameTo(Name aName){
       aName.setLast(last);
   }

   @Override
   public int hashCode() {
       final int prime = 31;
       int result = 1;
       result = prime * result + ((first == null) ? 0 : first.hashCode());
       result = prime * result + ((last == null) ? 0 : last.hashCode());
       return result;
   }

   @Override
   public boolean equals(Object obj) {
       if (this == obj)
           return true;
       if (obj == null)
           return false;
       if (getClass() != obj.getClass())
           return false;
       Name other = (Name) obj;
       if (first == null) {
           if (other.first != null)
               return false;
       } else if (!first.equals(other.first))
           return false;
       if (last == null) {
           if (other.last != null)
               return false;
       } else if (!last.equals(other.last))
           return false;
       return true;
   }

   @Override
   public String toString() {
       return "Name [first=" + first + ", last=" + last + "]";
   }


  
   @Override
   protected void finalize() throws Throwable {
       // TODO Auto-generated method stub
       super.finalize();
   }

   public int compareTo(){
       return 0;
   }
  
  
   public void dispose(){
      // in java there is no dispose method .
       // if it is normal method, it's return type is void.So, it not return any value.
       // Generally dispose method releases all resources and return memory to OS.
   }
  
  
}

// Student.java

public class Student {

// to remove error import Name class here.  
private Name fullName;
private String id;
public Student() {
  
  
   this(new Name(),"");
}
public Student(Name fullName, String id) {
   super();
   this.fullName = fullName;
   this.id = id;
}

   public Student(Student obj)throws NullPointerException{
      
   }
   @Override
   protected Object clone() throws CloneNotSupportedException {
       // TODO Auto-generated method stub
       return super.clone();
   }
   @Override
   public boolean equals(Object obj) {
       // TODO Auto-generated method stub
       return super.equals(obj);
   }
   @Override
   protected void finalize() throws Throwable {
       // TODO Auto-generated method stub
       super.finalize();
   }
   @Override
   public int hashCode() {
       // TODO Auto-generated method stub
       return super.hashCode();
   }
   @Override
   public String toString() {
       // TODO Auto-generated method stub
       return super.toString();
   }
   public Name getFullName() {
       return fullName;
   }
   public void setFullName(Name fullName) {
       this.fullName = fullName;
   }
   public String getId() {
       return id;
   }
   public void setId(String id) {
       this.id = id;
   }
  
  
   public void setStudent(Name studentName,String studentId){
       fullName=studentName;
       id=studentId;
   }
  
  
   public int compareTo(){
       return 0;
   }
  
   public void dispose(){
      
   }
  
}

//TestStudentName

public class TestStudentName {

   public static void main(String[] args) {
      
       // to remove error import Name class here. like import packageName.Name;
       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,"12345");
       Student s2=new Student(s1);
      
       s2.setStudent(n2,"234567");
       if(s1.equals(s2)){
          
           System.out.println("WtWtError-students should not be same");
           System.out.println("WtWts1= "+s1);
           System.out.println("WtWts2= "+s2);          
          
       }
       else{
          
           System.out.println("WtWt Success-students are not the same");
           System.out.println("WtWts1= "+s1);
           System.out.println("WtWts2= "+s2);          
          
          
       }
      
      
      
       // test the clone method----------
               System.out.println("WtWt Test the clone method----------");
              
               Student s3=null;
               try {
                   s3 = (Student)s1.clone();
               } catch (CloneNotSupportedException e) {
                   System.out.println(e.getMessage());
               }
              
          
               if(s1.equals(s3)){
                   System.out.println("WtWt Success- Students s1 and s3 are the same");
                  
               }
               else{
                  
                   System.out.println("WtWtError- Students s1 and s3 are not the same");
                   System.out.println("WtWts1= "+s1);
                   System.out.println("WtWts2= "+s2);          
                  
               }
      
      
               try{
                   s3.setStudent(n2, "234567");
               }catch(NullPointerException e){
                   System.out.println(e.getMessage());
               }
      
if(s1.equals(s3)){
          
           System.out.println("WtWtError-students should not be same");
           System.out.println("WtWts1= "+s1);
           System.out.println("WtWts2= "+s3);          
          
       }
       else{
          
           System.out.println("WtWt Success-students are not the same");
              
       }
      
      
       // Test the finalize method
    System.out.println("WtWt Test the 'finalize' method------");
   s1=null;
   System.gc();
   System.out.println("WtWt should see the 'finalize' message------");

// test the dispose method

   System.out.println("WtWt Test the 'dispose' method------");  
      
       s2.dispose();
      
       System.out.println("WtWt should see the 'dispose' message------");
      
       s2=null;
      
      
       // test the hashcode method
      
       s1=new Student(s3);
      
          System.out.println("WtWt Test the 'hashcode' method------");  
       try{
       if(s1.hashCode()==s3.hashCode()){
           System.out.println("WtWt Hashcode of s1 and s3 are same---");
       }
       else{
           System.out.println("WtWt Hashcode of s1 and s3 are not same---");
      
           System.out.println("WtWts1.hashcode= "+s1.hashCode());
               System.out.println("WtWts2.hashcode= "+s3.hashCode());  
      
       }
       }catch(NullPointerException e){
           System.out.println(e.getMessage());
       }
      
       System.out.println();
      
      
   }
  
  
  
}