package com.trifulcas.figuras; public abstract class Figura { private String nombre; public abstract void dibujar(); protected String getNombre() { return nombre; } protected void setNombre(String nombre) { this.nombre = nombre; } } package com.trifulcas.figuras; public abstract class Figura2D extends Figura { public abstract double area(); } package com.trifulcas.figuras; public abstract class Figura3D extends Figura2D{ public abstract double volumen(); } package com.trifulcas.figuras; public class Cuadrado extends Figura2D { private double lado; protected double getLado() { return lado; } protected void setLado(double lado) { this.lado = lado; } public Cuadrado(double lado) { this.lado=lado; } @Override public double area() { // TODO Auto-generated method stub return lado*lado; } @Override public void dibujar() { System.out.println("Cuadrado"); } } package com.trifulcas.figuras; public class Circulo extends Figura2D { private double radio; protected double getRadio() { return radio; } protected void setRadio(double radio) { this.radio = radio; } public Circulo(double radio) { this.radio = radio; } @Override public double area() { return Math.PI*radio*radio; } @Override public void dibujar() { System.out.println("Círculo"); } } package com.trifulcas.figuras; public class Cubo extends Figura3D { private double lado; protected double getLado() { return lado; } protected void setLado(double lado) { this.lado = lado; } public Cubo(double lado) { this.lado = lado; } @Override public double volumen() { return Math.pow(lado, 3); } @Override public double area() { // Se puede hacer más sencillo pero así también // Ojo que acoplamos cubo a cuadrado Cuadrado c=new Cuadrado(lado); return c.area() * 6; } @Override public void dibujar() { System.out.println("Cubo"); } } package com.trifulcas.figuras; public class Esfera extends Figura3D { private double radio; protected double getRadio() { return radio; } protected void setRadio(double radio) { this.radio = radio; } public Esfera(double radio) { this.radio = radio; } @Override public double volumen() { return 4/3*Math.PI*Math.pow(radio, 3); } @Override public double area() { return 4*Math.PI*Math.pow(radio, 2); } @Override public void dibujar() { // TODO Auto-generated method stub } } Cuadrado c=new Cuadrado(2); System.out.println(c.area()); Circulo ci=new Circulo(1); System.out.println(ci.area()); Cubo cu=new Cubo(2); System.out.println(cu.area()); System.out.println(cu.volumen()); Esfera e=new Esfera(1); System.out.println(e.area()); System.out.println(e.volumen());