Java Figuras Geométricas: Clases Círculo, Cuadrado y Triángulo
Figuras
public class Circulo extends Figura {
private float radio;
public Circulo(String nombre, float coordenadax, float coordenaday, float radio) {
super(nombre, coordenadax, coordenaday);
this.radio = radio;
}
public float getRadio() {
return radio;
}
public void setRadio(float radio) {
this.radio = radio;
}
@Override
public float CalculaArea() {
return (float) (radio * radio * Math.PI);
}
}
public class Cuadrado extends Figura {
private float lado;
public Cuadrado(String nombre, float coordenadax, float coordenaday, float lado) {
super(nombre, coordenadax, coordenaday);
this.lado = lado;
}
public float getLado() {
return lado;
}
public void setLado(float lado) {
this.lado = lado;
}
@Override
public float CalculaArea() {
return lado * lado;
}
}
Clase abstracta Figura
public abstract class Figura {
protected float coordenadax;
protected float coordenaday;
protected String nombre;
public Figura(String nombre, float coordenadax, float coordenaday) {
this.coordenadax = coordenadax;
this.coordenaday = coordenaday;
this.nombre = nombre;
}
public float getCoordenadax() {
return coordenadax;
}
public void setCoordenadax(float coordenadax) {
this.coordenadax = coordenadax;
}
public float getCoordenaday() {
return coordenaday;
}
public void setCoordenaday(float coordenaday) {
this.coordenaday = coordenaday;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public abstract float CalculaArea();
@Override
public String toString() {
return "Figura{" + "coordenadax=" + coordenadax + ", coordenaday=" + coordenaday + ", nombre=" + nombre + ", el área es " + CalculaArea();
}
}
Clase Triangulo
public class Triangulo extends Figura {
private float altura;
private float base;
public Triangulo(String nombre, float coordenadax, float coordenaday, float altura, float base) {
super(nombre, coordenadax, coordenaday);
this.altura = altura;
this.base = base;
}
public float getAltura() {
return altura;
}
public void setAltura(float altura) {
this.altura = altura;
}
public float getBase() {
return base;
}
public void setBase(float base) {
this.base = base;
}
@Override
public float CalculaArea() {
return (base * altura) / 2;
}
}
Clase GestorFachada
import java.util.Scanner;
public class GestorFachada {
private static Scanner teclado = new Scanner(System.in);
public static String leeString(String mensaje) {
System.out.println(mensaje);
return teclado.nextLine();
}
public static float leeFloat(String mensaje) {
System.out.println(mensaje);
boolean error;
float numero = 0;
do {
try {
numero = teclado.nextFloat();
error = false;
} catch (Exception e) {
System.out.println("Introduce un número float por favor");
error = true;
}
teclado.nextLine();
} while (error == true);
return numero;
}
public static int leeInt(String mensaje, int min, int max) {
System.out.println(mensaje);
boolean error;
int numero = 0;
do {
try {
numero = teclado.nextInt();
if (numero < min || numero > max) {
System.out.println("Error, introduce un número entero entre " + min + " y " + max);
error = true;
} else {
error = false;
}
} catch (Exception e) {
System.out.println("Error, introduce un entero");
error = true;
}
teclado.nextLine();
} while (error == true);
return numero;
}
public static Figura[] creaFiguras() {
int n = GestorFachada.leeInt("Introduce las figuras que desee crear", 0, 100);
Figura[] f = new Figura[n];
for (int x = 0; x < n; x++) {
System.out.println("Introduce la coordenada x");
float coordenadax = teclado.nextFloat();
float coordenaday = GestorFachada.leeFloat("Introduce la coordenada y");
System.out.println("A continuación indique el tipo de figura que desea crear");
int tipo = GestorFachada.leeInt("0-Triángulo, 1-Cuadrado, 2-Círculo", 0, 2);
switch (tipo) {
case 0: {
System.out.println("Introduce la altura del triángulo");
float altura = teclado.nextFloat();
float base = GestorFachada.leeFloat("Introduce la base del triángulo");
f[x] = new Triangulo("Triángulo", coordenadax, coordenaday, altura, base);
break;
}
case 1: {
float lado = GestorFachada.leeFloat("Introduce el lado del cuadrado");
f[x] = new Cuadrado("Cuadrado", coordenadax, coordenaday, lado);
break;
}
case 2: {
float radio = GestorFachada.leeFloat("Introduce el radio del círculo");
f[x] = new Circulo("Círculo", coordenadax, coordenaday, radio);
break;
}
}
for (Figura lista : f) {
System.out.println(lista);
}
}
return f;
}
}
Clase Principal
public class Principal {
public static void main(String[] args) {
Facahda f1 = new Facahda();
f1.CrearFigura();
}
}