en esta clase podemos ver que existe una clase abstracta y esta es la que se define como clase madre de la cual heredan todas las otras clases
package ejercicio3;
public abstract class figura {
private String nombre;
private double area;
public figura(){};
public abstract double getArea();
public abstract String getNombre();
public abstract int getNumFiguras();
}
////////////////////////////////////////////////////////////////
public class cuadrado extends figura {
private double lado;
public static int cantidadCuadrados=0;
public cuadrado()
{
this.lado=2;
}
public cuadrado(double l)
{
this.lado=l;
}
@Override
public double getArea() {
return (this.lado*this.lado);
}
@Override
public String getNombre() {
return "cuadrado";
}
public int getNumFiguras()
{
return cantidadCuadrados;
}
public String toString()
{
return "cuadrado de lado " + this.lado;
}
}
///////////////////////////////////////////////////////////////////////
public class triangulo extends figura{
private double base, altura;
public static int cantidadTriangulos=0;
public triangulo()
{
this.base=2;
this.altura=4;
}
public triangulo(double b,double a)
{
this.base = b;
this.altura=a;
}
public double getArea() {
return this.base*this.altura/2;
}
@Override
public String getNombre() {
return"triangulo";
}
public int getNumFiguras() {
return cantidadTriangulos;
}
public String toString()
{
return "triangulo de base "+ this.base +" y altura " + this.altura;
}
}
//////////////////////////////////////////////////////////////////
public class Rectangulo extends figura{
private double base;
private double altura;
public static int cantidadRectangulos=0;
public Rectangulo()
{
this.altura=2;
this.base=4;
}
public Rectangulo(double b, double a)
{
this.base=b;
this.altura=a;
}
public String getNombre()
{
return "rectangulo";
}
public int getNumFiguras()
{
return cantidadRectangulos;
}
public double getArea() {
return base*altura;
}
public String toString()
{
return "Rectangulo de base "+ this.base +" y altura " + this.altura;
}
}
////////////////////////////////////////////////
public class Circulo extends figura{
double r;
public static int cantidadCirculos=0;
public Circulo()
{
cantidadCirculos+=1;
this.r=2;
}
public Circulo(double radio)
{
this.r= radio;
cantidadCirculos+=1;
}
public double getArea() {
return Math.PI*r*r;
}
public String getNombre() {
return"circulo";
}
public int getNumFiguras()
{
return cantidadCirculos;
}
public String toString()
{
return "circulo de radio " + r;
}
}
///////////////////////////////////////////////////////////////////
public class Vector {
figura[] figuras;
public static double sumatoriaAreas=0;
public Vector(int tamañoVector)
{
figuras= new figura[tamañoVector];
}
public void addFiguras(int pos)
{
int eleccion = SimpleInput.getInteger("[1]circulo [2]cuadrado [3]triangulo [4]rectangulo");
if (eleccion ==2)
{
figura c= new cuadrado(SimpleInput.getDouble("digite el lado"));
figuras[pos]= c;
sumatoriaAreas +=c.getArea();
}
if (eleccion ==1)
{
figura c= new Circulo(SimpleInput.getDouble("digite el radio"));
figuras[pos]= c;
sumatoriaAreas +=c.getArea();
}
if (eleccion ==3)
{
figura c= new triangulo(SimpleInput.getDouble("base"), SimpleInput.getDouble("altura"));
figuras[pos]= c;
sumatoriaAreas +=c.getArea();
}
if (eleccion ==4)
{
figura c= new Rectangulo(SimpleInput.getDouble("base"), SimpleInput.getDouble("altura"));
figuras[pos]= c;
sumatoriaAreas +=c.getArea();
}
}
double getSumatoria() {
return sumatoriaAreas;
}
}
////////////////////////////////////////////
public class Buscar {
public figura[] lista ;
public static String busqueda;
public Buscar(figura[] v,String nombreFigura)
{
lista=v;
busqueda=nombreFigura;
}
public int BuscarFigura(){
int pos=-1;
for(int i =0;i<lista.length;i++)
{
if(lista[i].getNombre().compareTo(busqueda)==0)
{
pos =i;
}
}
return pos;
}
}
//////////////////////////////////////////////////
public class main3 {
public static void main(String[] args) {
boolean sw=true;
double sumatoria=0;
Vector v= new Vector(SimpleInput.getInteger("digite la cantidad de figuras a almacenar")); //Crea un objeto vector de
//tipo object donde se almacenan todas las figuras
//---------------------------------------
//este es el ciclo for para llenar el vector con todas las figuras
for(int i =0;i<v.figuras.length;i++)
{
v.addFiguras(i);
}
double sumaAreas= v.getSumatoria();
System.out.println("la suma de todas las areas ingresadas es de: "+ sumaAreas);
//ciclo for para mostrar cada figura con sus atributos
for(int i =0;i<v.figuras.length;i++)
{
v.figuras[i].toString();
}
//este metodo a continuacion es para crear un menu de eleccion
while (sw)
{
Buscar b;
System.out.println("[1] conocer area de una figura almacenada");
System.out.println("[2] obtener propiedades de una figura");
System.out.println("[3] obtener el numero de figuras que existen de un tipo");
System.out.println("[4] buscar una figura y eliminar");
System.out.println("[5] terminar");
int eleccion = SimpleInput.getInteger("");
if (eleccion == 1)
{
try{
int posicion = SimpleInput.getInteger("posicion de la figura");
System.out.println("el area del "+v.figuras[posicion-1]+" en la posicion "+posicion+" es: "+v.figuras[posicion-1].getArea());
//este es un buscador de objetos y devuelve su posicion
}
catch(Exception e)
{
System.out.println("no exite tal posicion");
}
}
if (eleccion == 2)
{
int pos = SimpleInput.getInteger("Posicion de la figura");
if(pos<=v.figuras.length) {
System.out.println("las propiedades de la figura en la pos "+pos+" es: " +v.figuras[pos-1].toString());
}
//este es un buscador de objetos y devuelve su posicion
}
if (eleccion == 3)
{
String nombre = SimpleInput.getString("nombre de la figura");
b= new Buscar(v.figuras,nombre);
int pos = b.BuscarFigura();
if (pos!=-1){
System.out.println("la cantidad de "+nombre+"s es:" +v.figuras[pos].getNumFiguras());
//este es un buscador de objetos y devuelve su posicion
}
}
if (eleccion == 4)
{
String nombre = SimpleInput.getString("nombre de la figura");
b= new Buscar(v.figuras,nombre);
int pos = b.BuscarFigura();
if (pos!=-1){
if(v.figuras[pos].getNumFiguras()>1)
{
v.figuras[pos] =null;
}
//este es un buscador de objetos y devuelve su posicion
}
}
}
}
}