TYbcs Java Slip 1-1 | IProgramX

Q. Create an abstract class shape. Derive three classes sphere, cone and cylinder from it. Calculate area and volume of all (use method overriding) 


Program:

import java.io.*;

abstract class Shape{
 protected double s1,s2;

 public Shape(double s1, double s2){
  this.s1 = s1;
  this.s2 = s2;
 }

 public abstract double calcArea();
 public abstract double calcVolume();
}

class Sphere extends Shape{

 public Sphere(double radius){
  super(radius,0);
 }

 public double calcArea(){
  return 4*Math.PI*s1*s1;
 }

 public double calcVolume(){
  return 4*Math.PI*Math.pow(s1,3)/3;
 }
}

class Cone extends Shape{

 public Cone(double radius, double height){
  super(radius,height);
 }

 public double calcArea(){
  return Math.PI*s1*(s1+
   Math.sqrt(s1*s1+s2*s2));
 }

 public double calcVolume(){
  return Math.PI*s1*s1*s2/3;
 }
}

class Cylinder extends Shape{
 
 public Cylinder(double radius, double height){
  super(radius,height);
 }

 public double calcArea(){
  return 2*Math.PI*s1*(s1+s2);
 }

 public double calcVolume(){
  return Math.PI*s1*s1*s2;
 }
}

class ShapeDemo{
 public static void main(String args[])
 throws Exception{
  BufferedReader br = new BufferedReader(
    new InputStreamReader(
     System.in));
  Shape s = null;

  double r=0,h=0,l=0,b=0;

  while(true){
   System.out.print("1.Sphere"+
   "\n2.Cone"+
   "\n3.Cylinder"+
   "\n4.Exit"+
   "\nEnter your choice (1-4):");

   int ch = Integer.parseInt(br.readLine());

   switch(ch){
   case 1:
    System.out.print("Enter sphere radius:");
    r=Double.parseDouble(br.readLine());
    s = new Sphere(r);
    break;
   case 2:
    System.out.print("Enter cone radius:");
    r=Double.parseDouble(br.readLine());
    System.out.print("Enter cone height:");
    h=Double.parseDouble(br.readLine());
    s = new Cone(r,h);
    break;
   case 3:
    System.out.print("Enter cylinder radius:");
    r=Double.parseDouble(br.readLine());
    System.out.print("Enter cylinder height:");
    h=Double.parseDouble(br.readLine());
    s = new Cylinder(r,h);
    break;
   case 4:
    System.exit(0);
   }
   System.out.println("Area="+s.calcArea()+
     "\nVolume="+s.calcVolume());
  }
 }
}

Post a Comment

0 Comments