Colección de figuras en Java

DESCARGAR



import java.util.Scanner;

/**
 *
 */

public class Main {

/**
* Lee una colección de figuras con su identificador y sus medidas básicas asociadas
* por la entrada estándar y devuelve sus áreas y perímetros, en orden ascendente respecto
* a su identificador de figura.
*
* La entrada será de la forma siguiente
* <LetraTipoFigura> <número_identificativo_unico> <lista_medidas>
*
* donde <LetraTipoFigura> será una T por triángulo, una R por rectángulo y una C por círculo,
* <número_identificativo_único> será un número long único por cada figura, independientemente del
* tipo de figura que sea y <lista_medidas> serán tres números dobles para un triángulo, representando
* la longitud de sus tres lados, dos números dobles para un rectángulo, representando la longitud de
* sus lados y un único número para un círculo, representando la longitud del radio del círculo.
*
* La salida será una línea por cada figura de la entrada, ordenadas por su identificador único de la
* forma:
* <número_identificativo único> <perímetro_figura> <área_figura>
* donde tanto el perímetro como el área se darán con dos dígitos decimales.
* @param args
*/
public static void main(String[] args) {
Scanner lee = new Scanner(System.in);
ColeccionFiguras cf = new ColeccionFiguras();

while (lee.hasNext()){
String tipoFig = lee.next();
long id = lee.nextLong();
Figura f=null;
switch (tipoFig) {
case "T":  f = new Triangulo(id, lee.nextDouble(), lee.nextDouble(), lee.nextDouble()); break;
case "R":  f = new Rectangulo(id, lee.nextDouble(), lee.nextDouble()); break;
case "C":  f = new Circulo(id, lee.nextDouble()); break;
}

cf.add(f);
}

cf.ordenaFiguras();

System.out.print(cf);;
}

}








public class Circulo extends Figura {

}







/**
 * Clase que permite almacenar un conjunto de figuras y realizar algunas operaciones con la colección.

 *
 */
public class ColeccionFiguras implements ListaFiguras{
}










/**
 * Interfaz que declara un método para comparar dos figuras.
 */
public interface Comparable {
/**
* Compara según el orden definido por el identificador de una figura la figura this con la figura fig que se pasa como parámetro.
* @param fig Objeto Figura a comparar con this.
* @return Devuelve un -1 si this es menor que o, 0 si es igual, y 1 si es mayor.
*/
int comparaA(Figura fig);

}








/** Clase abstracta que representa figuras geométricas planas.
 * 
 */
public abstract class Figura implements Comparable{
protected long idFigura; //Identificador único de una figura
public long getIdFigura(){
   return idFigura;
}
/**
* Calcula el área de una figura geométrica plana.
* @return El área en unidades de longitud al cuadrado.
*/
public abstract double area();

/**
* Calcula el perímetro de una figura geométrica plana.
* @return El perímetro en unidades de longitud al cuadrado.
*/
public abstract double perimetro();
}









/**
 * Define un conjunto de operaciones para manipular una colección de figuras.
 */


public interface ListaFiguras {

/** 
* Añade una figura a la colección.
* @param f La figura a añadir.
*/
void add (Figura f);

/**
* Ordena las figuras que pertenezcan al objeto de la clase que implementa el interfaz ListaFiguras.
* Después de llamar a éste método las figuras están en orden de menor a mayor respecto a su atributo
* identificador.
*/
void ordenaFiguras ();
}










public class Rectangulo extends Figura {

}












public class Triangulo extends Figura {

}