Could someone explain to me how this program works I dont un
Could someone explain to me how this program works? I dont understand how arrays could be utilized or initialized as objects. Could someone please explain to me the concept through this program? (Esp lines 14-21) Also I\'m confused about how the class was used as a modifier. Thanks!
}
Solution
Its very easy to introspect the code.
First and Foremost, We need to Understand the object called \"CircleWithPrivateDataFields\". Since it was not specified, I feel that Class may contain, a Constructor , setters and getters of radius and area like this:
class CircleWithPrivateDataFields{
int radius;
public CircleWithPrivateDataFields(int radius){
this.radius = radius;
}
public void setRadius(int radius){
this.radius = radius;
}
public int getRadius() {
return radius;
}
public double getArea() {
double area = (22/7)*radius*radius;
return area;
}
}
=====================================================
And coming to its implementation in TotalArea Class,
public static CircleWithPrivateDataFields[] createCircleArray() {
// Array of CircleWithPrivateDataFields Objects with size 5
CircleWithPrivateDataFields[] circleArray =
new CircleWithPrivateDataFields[5];
for (int i = 0; i < circleArray.length; i++) {
circleArray[i] =
new CircleWithPrivateDataFields(Math.random() * 100);
// Instantiates each object from the Array
// Indicates each Object to pass Parameter as Radius with Rndom Integer value
}
// Return Circle array
return circleArray;
}
1)We can identify the method called createCircleArray() that returns CircleWithPrivateDataFields object array.
Creating a random number everytime when new object is created and passed into constructor, i.e radius is initialized. Like wise, all the array of CircleWithPrivateDataFields are created with radius passed into constructor.
Random is class that generates a random number for every new CircleWithPrivateDataFields object is created, and is taken as Radius that passed into Constructor.
=======================================================
public static void printCircleArray(
CircleWithPrivateDataFields[] circleArray) {
System.out.printf(\"%-30s%-15s\ \", \"Radius\", \"Area\");
// Calculating area of each Circle object by taking radius from getRadius method
for (int i = 0; i < circleArray.length; i++) {
System.out.printf(\"%-30f%-15f\ \", circleArray[i].getRadius(),
circleArray[i].getArea());
}
System.out.println(\"-----------------------------------------\");
// Compute and display the result
System.out.printf(\"%-30s%-15f\ \", \"The total areas of circles is\",
sum(circleArray));
}
2) We can also identify method called printCircleArray which calls a method called getArea() of CircleWithPrivateDataFields class. Which calculates area of circle and returns the area into CircleWithPrivateDataFields[] object. Once areas of all Circles are calculated, then it calls to the method called \"sum(CircleWithPrivateDataFields[])\".
======================================================
public static double sum(
CircleWithPrivateDataFields[] circleArray) {
// Initialize sum
double sum = 0;
// Add areas to sum
for (int i = 0; i < circleArray.length; i++)
sum += circleArray[i].getArea();
return sum;
}
3) This method takes CircleWithPrivateDataFields[] array as a parameter, and calculates the sum of all areas stored into a variable called \"sum\". It adds each circle area sum() from CircleWithPrivateDataFields class, and calculates total sum of all circles.
================================================================================
//CircleWithPrivateDataFields.java
public class CircleWithPrivateDataFields {
double radius;
public CircleWithPrivateDataFields(double radius){
this.radius = radius;
}
public double getRadius(){
return radius;
}
public double getArea(){
double area = (22/7)*radius*radius;
return area;
}
}
//TotalArea.java
package Feburary;
public class TotalArea {
/** Main method */
public static void main(String[] args) {
// Declare circleArray
CircleWithPrivateDataFields[] circleArray;
// Create circleArray
circleArray = createCircleArray();
// Print circleArray and total areas of the circles
printCircleArray(circleArray);
}
/** Create an array of Circle objects */
public static CircleWithPrivateDataFields[] createCircleArray() {
CircleWithPrivateDataFields[] circleArray =
new CircleWithPrivateDataFields[5];
for (int i = 0; i < circleArray.length; i++) {
circleArray[i] =
new CircleWithPrivateDataFields(Math.random() * 100);
}
// Return Circle array
return circleArray;
}
/** Print an array of circles and their total area */
public static void printCircleArray(
CircleWithPrivateDataFields[] circleArray) {
System.out.printf(\"%-30s%-15s\ \", \"Radius\", \"Area\");
for (int i = 0; i < circleArray.length; i++) {
System.out.printf(\"%-30f%-15f\ \", circleArray[i].getRadius(),
circleArray[i].getArea());
}
System.out.println(\"-----------------------------------------\");
// Compute and display the result
System.out.printf(\"%-30s%-15f\ \", \"The total areas of circles is\",
sum(circleArray));
}
/** Add circle areas */
public static double sum(
CircleWithPrivateDataFields[] circleArray) {
// Initialize sum
double sum = 0;
// Add areas to sum
for (int i = 0; i < circleArray.length; i++)
sum += circleArray[i].getArea();
return sum;
}
}
Output:
Radius Area
80.424397 19404.250860
67.167496 13534.417483
53.157309 8477.098485
26.768281 2149.622530
49.468452 7341.383176
-----------------------------------------
The total areas of circles is 50906.772534



