Question: Please Use JAVA ! ClassA Constructor 10 pts. Study existing ClassA code. Write code for constructor with parameters. The method header is already written into

Please Use JAVA !

ClassA Constructor

10 pts.

Study existing ClassA code. Write code for constructor with parameters. The method header is already written into the class: public ClassA (int n, ArrayList listObj)

Make sure to create deep copies of non-primitive fields.

Add Java Doc comments before the method header.

ClassA Copy Constructor

10 pts.

Study existing ClassA code. Write code for copy constructor. The method header is already written into the class: public ClassA (ClassA obj)

Make sure to create deep copies of non-primitive fields.

Add Java Doc comments before the method header.

ClassA equals() Method

10 pts.

Study existing ClassA code. Write code for equals() method Override. The method header is already written into the class: public boolean equals(Object s).

Add Java Doc comments before the method header.

ClassA.java

import java.util.ArrayList; import java.io.Serializable; public class ClassA { private int a; private ArrayList aList; /** * No-argument constructor */ public ClassA() { a = 10; aList = new ArrayList(5); for(int i = 0; i< 5; i++ ) { aList.add(10); } } public ClassA (int aa, ArrayList listObj) { // add your code here }

public ClassA (ClassA obj) { // add your code here } @Override public boolean equals(Object o) { return false; } /** * Method needed for testing only * @param i index value * @param num value to change the ArrayList element to */ public void forTesting(int i, int num) { aList.add(i, num); } /** * Override of toString() method */ @Override public String toString() { return "ClassA object: "+"a="+a+"; aList="+aList.toString(); } }

ClassATests.java

import java.io.PrintStream; import java.util.ArrayList;

public class ClassATests { public static void testSet01(PrintStream outputStream) { outputStream.println(" --------- ClassA Constructor Tests ---------"); // Test #1

ArrayListnewList1 = new ArrayList(3); newList1.add(22); newList1.add(333); newList1.add(444); ClassA objA1 = new ClassA(111,newList1); if(objA1.toString().equals("ClassA object: a=111; aList=[22, 333, 444]")) { outputStream.printf("%-50s%-10s ", "ClassA TEST 01 - constructor", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 01 - constructor", "FAILED"); // Test #2 -- deep copy newList1.add(765); // change original list; no change must be observed in ClassA object if(objA1.toString().equals("ClassA object: a=111; aList=[22, 333, 444]")) { outputStream.printf("%-50s%-10s ", "ClassA TEST 02 - constructor deep copy", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 02 - constructor deep copy", "FAILED");

}

public static void testSet02(PrintStream outputStream) { outputStream.println(" --------- ClassA Copy Constructor Tests ---------");

// Test #3

ArrayListnewList1 = new ArrayList(3); newList1.add(22); newList1.add(333); newList1.add(444); ClassA objA1 = new ClassA(111,newList1); ClassA objA2 = new ClassA(objA1); if(objA2.toString().equals("ClassA object: a=111; aList=[22, 333, 444]")) { outputStream.printf("%-50s%-10s ", "ClassA TEST 03 - copy constructor", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 03 - copy constructor", "FAILED"); // Test #4 -- deep copy objA1.forTesting(0, 100);; // change original ClassA object. Copy must not be affected if(objA2.toString().equals("ClassA object: a=111; aList=[22, 333, 444]")) { outputStream.printf("%-50s%-10s ", "ClassA TEST 04 - copy constructor deep copy", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 04 - copy constructor deep copy", "FAILED");

}

public static void testSet03(PrintStream outputStream) { outputStream.println(" --------- ClassA equals() Tests ---------");

// Test #5

ArrayListnewList1 = new ArrayList(3); newList1.add(1); newList1.add(2); newList1.add(3); newList1.add(4); ClassA objA1 = new ClassA(55,newList1); ClassA objA12 = new ClassA(55,newList1); ClassA objA21 = new ClassA(1,newList1); newList1.add(5); ClassA objA22 = new ClassA(55,newList1); if(objA1.equals(objA12) && !objA1.equals(objA21) && !objA1.equals(objA22)) { outputStream.printf("%-50s%-10s ", "ClassA TEST 05 - equals()", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 05 - equals()", "FAILED"); // Test #6 -- it is a proper override! String s = "Test"; if(!objA1.equals(s)) // compilation will fail here if equals() has a parameter not of type Object { outputStream.printf("%-50s%-10s ", "ClassA TEST 06 - equals(Object) - an override", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 06 - equals(Object) - an override", "FAILED");

// Test #7 -- it is a proper override! if(!objA1.equals(null)) // may break here if equals() not handling null parameter { outputStream.printf("%-50s%-10s ", "ClassA TEST 07 - equals(null)", "PASSED"); } else outputStream.printf("%-50s%-10s ", "ClassA TEST 07 - equals(null)", "FAILED");

} }

MidtermWinter2021.java

import java.io.PrintStream; import java.util.ArrayList;

public class MidtermWinter2021 {

public static void main(String[] args) { PrintStream out = System.out; ClassATests.testSet01(out); // 10 pts. ClassATests.testSet02(out); // 10 pts. ClassATests.testSet03(out); // 10 pts. ClassBTests.testSet01(out); // 10 pts. ClassBTests.testSet02(out); // 10 pts. ClassCTests.testSet01(out); // 10 pts. ClassCTests.testSet02(out); // 10 pts. FileIOMethodsTests.testSet01(out); // 20 pts. } }

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!