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 NameExplanation / 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();
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.