Clase Rectángulo

Clase Rectángulo:

Imagina que quieres escribir una clase que represente un rectángulo en el plano. Para ello has pensado en los siguientes atributos:

  • Atributos x1, y1, que representan la coordenadas del vértice inferior izquierdo del rectángulo. Ambos de tipo double (números reales).
  • Atributos x2, y2, que representan las coordenadas del vértice superior derecho del rectángulo. También de tipo double (números reales).

Con estos dos puntos (x1,y1) y (x2,y2) se puede definir perfectamente la ubicación de un rectángulo en el plano.

Escribe una clase que contenga todos esos atributos teniendo en cuenta que queremos que sea una clase visible desde cualquier parte del programa y que sus atributos sean también accesibles desde cualquier parte del código.

Crea 3 constructores diferentes: uno sin parámetros, otro que reciba las coordenadas de los vértices inferior izquierdo y superior derecho y otro que reciba la base y la altura.

Ampliar el ejercicio anterior del rectángulo incluyendo los siguientes atributos:

  • Atributo numeroDeRectangulos, que almacena el número de objetos de tipo rectángulo creados hasta el momento.
  • Atributo nombre, que almacena el nombre que se le quiera dar a cada rectángulo.
  • Atributo nombreDeLaFigura, que almacena el nombre de la clase, es decir, “Rectángulo”.
  • Atributo PI, que contiene el valor del número PI (como constante matemática) con una precisión de cuatro cifras decimales.

Modifica los constructores para tener en cuenta el numeroDeRectangulos.

No se desea que los atributos nombre y numeroDeRectangulos puedan ser visibles desde fuera de la clase.

Vamos a seguir ampliando la clase en la que se representa un rectángulo en el plano (clase Rectangulo). Para ello has pensado en los siguientes métodos públicos:

  • Métodos getNombre() y setNombre(), que permiten el acceso y modificación del atributo nombre del rectángulo.
  • Método calcularSuperfice(), que calcula el área encerrada por el rectángulo.
  • Método calcularPerimetro(), que calcula la longitud del perímetro del rectángulo.
  • Método desplazar(), que mueve la ubicación del rectángulo en el plano en una cantidad x (para el eje X) y otra cantidad y (para el eje Y). Se trata simplemente de sumar el desplazamiento x a las coordenadas x1 y x2, y el desplazamiento y a las coordenadas y1 e y2. Los parámetros de entrada de este método serán, por tanto, x e y, de tipo double.
  • Método getNumeroDeRectangulos(), que devuelve el número de rectángulos creados hasta el momento.

Crea un programa que incluya la implementación de la clase Rectángulo. Se crearán varios rectángulos y se utilizarán sus métodos.

Modifica los atributos x1, y1 y x2, y2 para que no sean accesibles fuera de la clase y cambia el programa que los usa.

Clase Rectángulo:

public class Rectangulo {
    
    public double x1;
    public double x2;
    public double y1;
    public double y2;


    private static int numeroDeRectangulos = 0;
    private String nombre;
    public static String nombreDeLaFigura = "Rectángulo";
    public static final double PI = 3.1416;

    public Rectangulo() {
        this.x1 = 0;
        this.y1 = 0;
        this.x2 = 1;
        this.y2 = 1;

        numeroDeRectangulos ++;
    }
    public Rectangulo(double x1, double y1, double x2, double y2) {
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;

        numeroDeRectangulos ++;
    }
    public Rectangulo(double base, double altura) {
        this.x1 = 0;
        this.y1 = 0;
        this.x2 = this.x1 + base;
        this.y2 = this.y1 + altura;

        numeroDeRectangulos ++;
    }
    public String getNombre() {
        
        return this.nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public double calcularSuperfice() {
        double base, altura;

        base = this.x2 - this.x1;
        altura = this.y2 - this.y1;

        return Math.abs(base * altura);
    }
    public double calcularPerimetro() {
        double base, altura;

        base = Math.abs(this.x2 - this.x1);
        altura = Math.abs(this.y2 - this.y1);

        return (base + altura) * 2;
    }
    public void desplazar(double x, double y) {
        this.x1 = this.x1 + x;
        this.y1 = this.y1 + y;
        this.x2 += x;
        this.y2 += y;
    }
    public static int getNumeroDeRectangulos() {
        
        return numeroDeRectangulos;
    }
    public String toString() {

        return "Coordenadas: " + this.x1 + ", " + this.y1 + ", " + this.x2 + ", " + this.y2;
    }
}

Programa que usa la clase Rectángulo:

public class EjemploRectangulo {

    public static void main(String[] args) {
        Rectangulo rectangulo1  = new Rectangulo();
        Rectangulo rectangulo2  = new Rectangulo(4, 5, -1, 2);
        Rectangulo rectangulo3 = new Rectangulo(3, 5);

        System.out.println("Rectángulo 1: " + rectangulo1);
        System.out.println("Rectángulo 2: " + rectangulo2);
        System.out.println("Rectángulo 3: " + rectangulo3);

        System.out.printf("Rectángulo 1, superficie: %4.2f\tperímetro: %4.2f\n", rectangulo1.calcularSuperfice(), rectangulo1.calcularPerimetro());
        System.out.printf("Rectángulo 2, superficie: %4.2f\tperímetro: %4.2f\n", rectangulo2.calcularSuperfice(), rectangulo2.calcularPerimetro());
        System.out.printf("Rectángulo 3, superficie: %4.2f\tperímetro: %4.2f\n", rectangulo3.calcularSuperfice(), rectangulo3.calcularPerimetro());
        
        rectangulo2.desplazar(-4, 7);
        System.out.println("Rectángulo 2: " + rectangulo2);
        System.out.printf("Rectángulo 2, superficie: %4.2f\tperímetro: %4.2f\n", rectangulo2.calcularSuperfice(), rectangulo2.calcularPerimetro());

        System.out.println("Nº de rectángulos creados: " + RectanguloMiercoles.getNumeroDeRectangulos());
    }
}

 

Deja un comentario