In: Computer Science
Java Programming 5th edition Chapter 10 Inheritance Programs
Part 1
Number 3 on page 719 which creates a Point class with 2 instance variables; the xCoordinate and yCoordinate. It should have a default constructor and a values constructor. Also include a set method that sets both attributes, a get method for each attribute, and a method that redefines toString() to print the attributes as follows.
point: (x, y)
Part 2
Do number 4 on page 719 which creates a Circle class that extends the Point class above. It adds the radius, circumference, and area instance variables. It should have a default constructor and a values constructor (circumference and area will be 0.0). Include a set method that sets the coordinates and radius attributes, get methods that get each of the 3 new attributes, and a method that redefines toString() to print all attributes. Also, include methods to calculate the circumference and area of the circle. Use pie = 3.141593. Make sure your methods don’t repeat the code already written in the Point class.
Circumference = 2pier
Area = pier2
Part 3
Do number 5 on page 719 which creates a Cylinder class that extends the Circle class above. It adds the height, surfaceArea, and volume instance variables. It should have a default constructor and a values constructor (circumference and circleArea will be calculated from the Circle class, surfaceArea and volume will be 0.0). Include a set method for the center point coordinates, radius, height, circumference, and circleArea attributes (circumference and circleArea will be calculated from the Circle class), get methods that get each of the 3 new attributes, and a method that redefines toString() to print all attributes. Also, include methods to calculate the surfaceArea and volume of the cylinder. Make sure your methods don’t repeat the code already written in the Circle class.
surfaceArea = 2 * circleArea + circleCircumference * cylinderHeight
volume = circleArea * cylinderHeight
Hints:
1.In the values constructor and the set method you’ll need to call the methods to calculate circumference and area so that they have values to use in calculating the surface area and volume.
2.The methods in the Circle class to calculate circumference and area will need to return those values for use in the Cylinder class.
Part 4
Create a client program that uses all 3 of the classes created above. Make it do the following in this order:
1.Instantiate point1 with the default constructor.
2. Instantiate point2 with the values constructor.
3. Use the Point class print method to print point1 and point2.
4. Call the set method to set the x and y coordinates for point1.
5. Use the get methods to get the attributes for point1 and print them in the client (not with the print method).
6. Instantiate circle1 with the default constructor.
7. Instantiate circle2 with the values constructor.
8. Call the methods to calculate the circumference and area for circle2.
9. Use the Circle class print method to print attributes for circle1 and circle2.
10. Use the set method to set the coordinates and radius for circle1.
11. Call the methods to calculate the circumference and area for circle1.
12. Use the get methods to get the attributes for circle1 and print them in the client (not with the print method).
13. Instantiate cylinder1 with the default constructor.
14. Instantiate cylinder2 with the values constructor.
15. Call the methods to calculate the surfaceArea and volume for cylinder2.
16. Use the Cylinder class print method to print the attributes for cylinder1 and cylinder2
17. Call the set method to set the attributes for cylinder1.
18. Call the methods to calculate the surfaceArea and volume for cylinder1.
19.Use the get methods to get the attributes for cylinder1 and print them in the client (not with the print method).
Point.java
public class Point{
protected double xCoordinate;
protected double yCoordinate;
protected Point(){ //Default
Constructor
xCoordinate = 0;
yCoordinate
= 0;
}
protected Point(double x, double y){
//Parameterized Constructor
xCoordinate = x;
yCoordinate = y;
}
public void setCoordinates(double x, double y){
xCoordinate = x;
yCoordinate = y;
}
public double getXCoordinate(){
return xCoordinate;
}
public double getYCoordinate(){
return yCoordinate;
}
public String toString()
{ //returns a string representation of this point
return
"point: (" + xCoordinate + ", " + yCoordinate + ")";
}
}
Circle.java
public class Circle extends Point{
protected double radius;
protected double area;
protected double circumference;
private final double pi = 3.141593;
//default constructor
protected Circle() {
super();
//calling super class constructor
radius = 0.0;
area = 0.0;
circumference = 0.0;
}
//parameterized constructor
protected Circle(double x, double y, double r)
{
super(x,y); //calling super class
constructor
radius = r;
area = pi * radius * radius;
circumference = 2 * pi * radius;
}
//set circle attributes
public void setCircleAttributes(double r)
{
double x =
getXCoordinate(); //calling superclass method
getXCoordinate() of Point class
double y = getYCoordinate(); //calling
superclass method getYCoordinate() of Point class
radius = r;
area = pi * radius * radius;
circumference = 2 * pi * radius;
}
//get radius of circle
public double getRadius() {
return radius;
}
//get area of circle
public double getArea() {
return area;
}
//get circumference of circle
public double getCircumference() {
return
circumference;
}
//calculate area of circle
public double calculateArea() {
return (pi * radius * radius);
}
//calculate circumference of
circle
public double calculateCircumference() {
return (2 * pi * radius);
}
//Overridden method of Point class
//returns a string representation of the radius,
circumference and area of the circle
@Override
public String toString() {
return
"circle: (" + xCoordinate + "," + yCoordinate + "," + radius + ", "
+ area + ", " + circumference +")";
}
}
Cylinder.java
public class Cylinder extends Circle {
protected double height;
protected double surfaceArea;
protected double volume;
//default constructor
protected Cylinder()
{
super(); //calling super
class constructor
height = 0.0;
surfaceArea = 0.0;
volume = 0.0;
}
//parameterized constructor
protected Cylinder( double x, double y, double r,
double h)
{
super( x, y, r );
//calling super class constructor
height = h;
surfaceArea = 2 * (calculateArea())
+ (calculateCircumference()) * h; //calling superclass
methods getArea and getCircumference of Circle class
volume = calculateArea() *
h; //calling superclass method getArea of Circle
class
}
//get height of Cylinder
public double getHeight()
{
return height;
}
//set cylinder attributes
public void setCylinderAttributes(double h)
{
double r = getRadius();
height = h;
surfaceArea = 2 *
(calculateArea()) + (calculateCircumference()) * h;
//calling superclass methods getArea and getCircumference of Circle
class
volume =
(calculateArea()) * h; //calling superclass method
getArea of Circle class
}
//get area of Cylinder
public double getSurfaceArea()
{
return surfaceArea;
}
//get volume of Cylinder
public double getVolume()
{
return volume;
}
//calculate surface area of cylinder
public double calculateSurfaceArea()
{
double r = getRadius();
return 2 * (calculateArea()) +
(calculateCircumference()) * height; //calling
superclass methods getArea and getCircumference of Circle
class
}
//calculate volume of cylinder
public double calculateVolume()
{
double r = getRadius();
return ((calculateArea()) * height);
//calling superclass method getArea of Circle class
}
//convert the Cylinder to a String
@Override
public String toString()
{
return "cylinder: (" +
xCoordinate + "," + yCoordinate + "," + radius + "," + height + ","
+ surfaceArea + ", " + volume +")";
}
}
ClientProgram.java
public class ClientProgram{
public static void main(String args[]){
Point point1 = new
Point(); //creating object of Point class using default
constructor
Point point2 = new
Point(2,3); //creating object of Point class using
values constructor
System.out.println(point1.toString()); //calling
toString method of Point class
System.out.println(point2.toString());
point1.setCoordinates(4.5,5.5);
System.out.println("point: ("
+point1.getXCoordinate()+ ","+point1.getYCoordinate()+")") ;
Circle circle1 = new
Circle(); //creating object of Circle class using
default constructor
Circle circle2 = new
Circle(1,1.6,4); //creating object of Circle class
using values constructor
double area =
circle2.calculateArea(); //calling calculateArea method
for circle2
double circumference =
circle2.calculateCircumference(); //calling
calculateCircumference method for circle2
System.out.println(circle1.toString()); //calling
toString method of Circle class
System.out.println(circle2.toString()); //calling
toString method of Circle class
circle1.setCircleAttributes(9.5);
circle1.calculateArea();
circle1.calculateCircumference();
System.out.println("circle: ("
+circle1.getXCoordinate()+
","+circle1.getYCoordinate()+","+circle1.getRadius()+","+circle1.getArea()+","+circle1.getCircumference()+")")
;
Cylinder cylinder1 = new
Cylinder(); //creating object of Cylinder class using
default constructor
Cylinder cylinder2 = new
Cylinder(7,10,2,8); //creating object of Cylinder class
using values constructor
double surfaceArea =
cylinder2.calculateSurfaceArea(); //calling
calculateSurfaceArea method for cylinder2
double volume =
cylinder2.calculateVolume(); //calling calculateVolume
method for cylinder2
System.out.println(cylinder1.toString()); //calling
toString method of Cylinder class
System.out.println(cylinder2.toString()); //calling
toString method of Cylinder class
cylinder1.setCylinderAttributes(5);
cylinder1.calculateSurfaceArea();
cylinder1.calculateVolume();
System.out.println("cylinder: ("
+cylinder1.getXCoordinate()+
","+cylinder1.getYCoordinate()+","+cylinder1.getRadius()+","+cylinder1.getHeight()+","+cylinder1.getSurfaceArea()+","+cylinder1.getVolume()+")")
;
}
}