UNIVERSIDAD TECNOLÓGICA DE SANTIAGO UTESA
Lab. De Programación II
Tarea sobre Clases Abstractas
1- Cree una clase abstracta llamada FiguraGeometrica con los atributos tipo double x e y.
Esta clase abstracta tiene dos métodos abstractos llamados Área y Volumen, dichos
métodos retornan valores double.
2- Escriba clases relacionadas con figuras geométricas (como el Circulo, Cuadrado, Esfera, etc.)
donde se implementen los métodos abstractos heredados. En total hacer 9 clases, una para
cada figura geométrica. Estas figuras tienen sus atributos particulares. Por ejemplos: el
Circulo tiene el atributo Radio, el Cuadrado tiene el atributo lado, etc.
3- Hacer una clase PrincipalFigura donde haya un menú para seleccionar la Figura Geométrica
para calcular su área y volumen (si tiene volumen). En este menú cree métodos para
calcular el área y volumen de la figura seleccionada. Todos los atributos deben ser
validados.
Nota:
Ejemplos de figuras geométricas: Circulo, Cuadrado, Triangulo, Rectángulo, Esfera,
Rombo, Trapecio, Cilindro, Ovalo, Cubo, Pentágono, Cono, etc.
Debe buscar la fórmula del área y volumen (El volumen para los que apliquen).
Adrian Rodríguez 2-19-0639
import java.text.DecimalFormat;
import java.util.Scanner;
public class Principal {
DecimalFormat formato = new DecimalFormat("0.00");
public static Scanner entrada = new Scanner(System.in);
public void Menu(){
System.out.println("-CALCULAR ÁREA/VOLUMEN DE FIGURAS-");
System.out.println("1- Calcular área del cuadrado.");
System.out.println("2- Calcular área/volumen del cilindro.");
System.out.println("3- Calcular área del círculo.");
System.out.println("4- Calcular área del triángulo.");
System.out.println("5- Calcular área del rectángulo.");
System.out.println("6- Calcular área/volumen de esfera.");
System.out.println("7- Calcular área/volumen del cubo.");
System.out.println("8- Calcular área/volumen del paralelepípedo.");
System.out.println("9- Calcular área del óvalo.");
System.out.println("10- Salir.\n");
System.out.print("Digite la opción: ");
}
public static void main(String[]
args) { Principal p = new
Principal(); int op=0,i = 0;
p.Menu();
do{
op =
entrada.nextInt(); if
(op<=0 || op > 10)
System.out.println("El número debe estar entre 1 y 10. Digite nuevamente:");
else i++;
}while(i==0);
if(op == 1)
p.CalcularCuadrado();
else if(op == 2)
p.CalcularCilindro();
else if(op==3)
p.CalcularCirculo();
else if(op==4)
p.CalcularTriangulo();
else if (op ==5)
p.CalcularRectangulo();
else if (op ==6)
p.CalcularEsfera();
else if(op==7)
p.CalcularCubo();
else if (op==8)
p.CalcularParale();
else if(op==9)
p.CalcularOvalo();
else
System.out.println("Gracias por usar el programa de las figuras");
public abstract class
FiguraGeometrica { protected
double a; protected double b;
public FiguraGeometrica (double x,double
y) { this.a=x; this.b=y;
}
public abstract double Area();
public abstract double Volumen();
public void CalcularCuadrado(){
double l;
System.out.println("\nDigite el lado: ");
do{
l=
entrada.nextDouble();
if (l<=0)
System.out.println("\nEl número debe ser mayor a cero. Hazlo denuevo:");
}while(l<=0);
Cuadrado cu = new Cuadrado(0,0,l);
System.out.println("\nEl área del cuadrado es: "+formato.format(cu.Area()));
}
public void CalcularCilindro(){
double r,h;
System.out.println("\nDigite el radio: ");
do{
r=
entrada.nextDouble();
if (r<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(r<=0);
System.out.println("\nDigite la altura:");
do{
h=
entrada.nextDouble(); if
(h<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(h<=0);
Cilindro ci = new Cilindro(0,0,r,h);
System.out.println("\nEl área del cilindro es: "+formato.format(ci.Area()));
System.out.println("El volumen del cilindro es: "+formato.format(ci.Volumen()));
}
public void CalcularCirculo(){
double r;
System.out.println("\nDigite el radio: ");
do{
r=
entrada.nextDouble();
if (r<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(r<=0);
Circulo ci = new Circulo(0,0,r);
System.out.println("\nEl área del circulo es: "+formato.format(ci.Area()));
}
public void CalcularTriangulo(){
double b,h;
System.out.println("\nDigite el base: ");
do{
b=
entrada.nextDouble(); if
(b<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(b<=0);
System.out.println("\nDigite la altura: ");
do{
h=
entrada.nextDouble(); if
(h<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(h<=0);
Triangulo t = new Triangulo(0,0,b,h);
System.out.println("\nEl área del triángulo es: "+formato.format(t.Area()));
}
public void CalcularRectangulo(){
double b,h;
System.out.println("\nDigite el base: ");
do{
b=
entrada.nextDouble(); if
(b<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(b<=0);
System.out.println("\nDigite la altura: ");
do{
h=
entrada.nextDouble(); if
(h<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(h<=0);
Rectangulo r = new Rectangulo(0,0,b,h);
System.out.println("\nEl área del rectángulo es: "+formato.format(r.Area()));
public void CalcularEsfera(){
double r;
System.out.println("\nDigite el radio: ");
do{
r=
entrada.nextDouble();
if (r<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(r<=0);
Esfera e = new Esfera(0,0,r);
System.out.println("\nEl área de la esfera es: "+formato.format(e.Area()));
System.out.println("El volumen de la esfera es: "+formato.format(e.Volumen()));
}
public void CalcularCubo(){
double a;
System.out.println("\nDigite el lado (arista): ");
do{
a=
entrada.nextDouble();
if (a<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(a<=0);
Cubo cu = new Cubo(0,0,a);
System.out.println("\nEl área del cubo es: "+formato.format(cu.Area()));
System.out.println("El volumen del cubo es: "+formato.format(cu.Volumen()));
}
public void CalcularParale(){
double l,h,a;
System.out.println("\nDigite la longitud: ");
do{
l = entrada.nextDouble();
if (l<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(l<=0);
System.out.println("\nDigite la altura:");
do{
h=
entrada.nextDouble(); if
(h<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(h<=0);
System.out.println("\nDigite la anchura:");
do{
a=
entrada.nextDouble();
if (a<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(a<=0);
Paralelepipedo p = new Paralelepipedo(0,0,l,h,a);
System.out.println("\nEl área del paralelepípedo es: "+formato.format(p.Area()));
System.out.println("El volumen del paralelepípedo es:
"+formato.format(p.Volumen()));
}
public void CalcularOvalo(){
double rma,rme;
System.out.println("\nDigite el radio mayor: ");
do{
rma =
entrada.nextDouble(); if
(rma<=0)
System.out.println("\nEl número debe ser mayor a cero. Digite nuevamente:");
}while(rma<=0);
System.out.println("\nDigite la radio menor:");
do{
rme =
entrada.nextDouble(); if
(rme<=0)
System.out.println("\nEl número
debe ser mayor a cero. Digite
nuevamente:");
}while(rme<=0);
Ovalo o = new Ovalo(0,0,rma,rme);
System.out.println("\nEl área del óvalo es: "+formato.format(o.Area()));
}
public class Cuadrado extends FiguraGeometrica {
private double lado;
public Cuadrado(double x, double y,double
lado) { super(x, y); this.lado = lado;
@Override
public double
Area() { return
lado*lado;
@Override
public double Volumen() {
return 0;
public class Cilindro extends
FiguraGeometrica { private double radio;
private double altura;
public Cilindro(double x, double y,double radio,double altura) {
super(x, y);
this.radio = radio;
this.altura = altura;
@Override
public double
Area() {
return ((2*Math.PI*radio*altura)+(2*Math.PI*Math.pow(radio, 2)));
}
@Override public
double Volumen() {
return (Math.PI*Math.pow(radio, 2)*altura);
}
}
public class Circulo extends FiguraGeometrica{
private double radio;
public Circulo(double x,double y, double
radio){ super(x, y); this.radio = radio;
@Override
public double
Area(){
return (Math.PI*Math.pow(radio, 2));
}
@Override
public double
Volumen(){
return 0;
}
}
public class Triangulo extends
FiguraGeometrica{ private double base;
private double altura;
public Triangulo(double x, double y, double base, double altura)
{ super(x, y); this.base = base; this.altura = altura;
@Override
public double Area() {
return ((base*altura)/2);
}
@Override
public double
Volumen() { return
0;
}
}
public class Rectangulo extends
FiguraGeometrica{ private double base;
private double altura;
public Rectangulo(double x, double y,double base, double altura)
{ super(x, y); this.base = base; this.altura = altura;
}
@Override
public double
Area() { return
(base*altura);
@Override
public double Volumen() {
return 0;
}
}
public class Esfera extends FiguraGeometrica {
private double radio;
public Esfera(double x, double y, double
radio) { super(x, y); this.radio = radio;
@Override
public double Area() { return
(4*Math.PI*Math.pow(radio, 2));
}
@Override
public double Volumen() {
return
((4*Math.PI*Math.pow(radio,3))/3);
}
}
public class Cubo extends FiguraGeometrica{
private double arista;
public Cubo(double x, double y, double
arista) { super(x, y); this.arista = arista;
@Override
public double Area() {
return
(6*Math.pow(arista,2));
@Override
public double Volumen() {
return (Math.pow(arista,
3));
}
public class Paralelepipedo extends
FiguraGeometrica{ private double altura;
private double anchura;
private double longitud;
public Paralelepipedo(double x, double y, double altura, double anchura, double
longitud) { super(x, y); this.longitud = longitud; this.anchura =
anchura; this.altura = altura;
}
@Override
public double
Area() {
return ((2*longitud*anchura)+(2*longitud*altura)+(2*anchura*altura));
}
@Override
public double Volumen() {
return(longitud*anchura*altura);
public class Ovalo extends
FiguraGeometrica{ private double
radiomayor;
private double radiomenor;
public Ovalo(double x, double y, double radiomayor, double radiomenor) {
super(x, y);
this.radiomayor = radiomayor;
this.radiomenor = radiomenor;
}
@Override
public double
Area() {
return (((radiomayor/2)*(radiomenor/2))*Math.PI);
}
@Override
public double
Volumen() {
return 0;