Clase Rectangulo

Iniciado por Francky92, 1 Marzo 2015, 19:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Francky92

¿Alguien me puede ayudar a programar la clase rectangulo para que pueda ejecutarse el siguiente codigo?

Código (java) [Seleccionar]
public static void main(String[] args) {
int i=0;
Rectangulo [] rec =new Rectangulo[5];
final int num=5;
for (i=0;i<num,;i++)
{
rec[i]= new Rectangulo(i+1,(i+1)*(i+2));
}
}

Gracias de antemano


Mod: al publicar código, usa las etiquetas GeSHi

peib0l

#1
Ese codigo esta mal por donde lo mires, deberías seguir la ortodoxia de java, pero bueno

Código (java) [Seleccionar]
public class Rectangulo {

   int ancho;
   int alto;

  public Rectangulo(alto, ancho){
        this.alto = alto;
        this.ancho = ancho;
   }


}


Mod: al publicar código usa las GeSHi  :¬¬

Francky92

pues es codigo dado por el profesor.
y como rectificas ese codigo para que funcione con la clase que has dado?

Usuario Invitado

#3
Código (java) [Seleccionar]
public class Rectangle {
private String color;
private int width;
private int height;

public Rectangle() {}

public Rectangle(String color, int width, int height) {
 this.color = color;
 this.width = width;
 this.height = height;
}

public String getColor() { return color; }

public void setColor(String color) { this.color = color; }

public int getWidth() { return width; }

public void setWidth(int width) { this.width = width; }

public int getHeight() { return height; }

public void setHeight(int height) { this.height = height; }

@Override
public String toString() {
 String data = "Este rectángulo es de color "+color+
  " y tiene "+width+"px de ancho y "+height+"px de alto";
 return data;
}

}


Código (java) [Seleccionar]
import java.util.List;
import java.util.ArrayList;
import java.util.Random;

public class RectangleTest {
public static void main(String[] args) {
 List<Rectangle> rectangleList = new ArrayList<>();
 final String[] COLORS = {"Blue", "Coral", "Orange red", "Green", "Gray"};
 final int RECTANGLE_SIZE = 50;
 for(byte i=1; i<=5; i++) {
  Rectangle rectangle = new Rectangle();
  String color = COLORS[new Random().nextInt(COLORS.length)];
  rectangle.setColor(color);
  rectangle.setWidth(i * RECTANGLE_SIZE);
  rectangle.setHeight(i * RECTANGLE_SIZE);
  rectangleList.add(rectangle);
 }
 for(byte i=0; i<rectangleList.size(); i++) {
  System.out.println("Rectángulo "+ (i+1)+": "+rectangleList.get(i));
 }
 
}
}


Código limpio = fácil de entender + fácil de mantener.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Baal_30

Gus si que da gusto leer tus códigos ¡! haha :D

Pero me surgen un par de dudas :

1- ¿Porque en el main colors y size los declaras como final?

2- ¿Porque en los for declaras la "i" como byte?

3- Y... ¿en color no tendría que ser String[] en vez de int? ¿O me confundo yo?

Merci :)
«La suerte es el cuidado de los detalles». -Winston Churchill

Usuario Invitado

#5
1) Es para ilustrar, en este caso no tiene sentido. Lo puse para ilustrar por qué debe ser una constante estática. Esto aplica si COLORS fuese una propiedad. Los colores se suponen que están pre-establecidos es decir que se puede crear uno, por lo que solo me interesa que:

  • Sea estático (static)
  • Sea constante (final)

    Cuando declaras una variable u objeto como static, estás indicando que dicha variable/objeto solo tendrá una instancia que será compartida por todo aquel objeto del que sea propiedad. Si creas 5 objetos de dicha clase los 5 objetos compartirán dicha variable, ya no será una variable que pertenezca al objeto si no que dicha variable pertenece a la clase. Por eso, si el objeto 3 actualiza la variable y el objeto 5 accede a ella, el valor será el que actualizó el objeto 3.

    Cuando declaras una variable/objeto como final, estás indicando que dicha variable/objeto es una constante cuyo valor no cambiará.

    Por lo que static + final = Constante de la que solo habrá una instancia.

    2) Declaro la variable de control como byte porque la lista a recorrer será muy pequeña (5). Si utilizo int estaría usando 4 bytes mientras que con byte solo 1. Es por cuestión de rendimiento aunque no afecte casi nada xD. Pero si un tipo de dato es mejor para X operación, debes usarlo.

    3) Si, me equivoqué ^^, pero ya lo corregí.

    Ejecutando lo anterior, se obtiene:

    Rectángulo 1: Este rectángulo es de color Blue y tiene 50px de ancho y 50px de alto
    Rectángulo 2: Este rectángulo es de color Blue y tiene 100px de ancho y 100px de alto
    Rectángulo 3: Este rectángulo es de color Gray y tiene 150px de ancho y 150px de alto
    Rectángulo 4: Este rectángulo es de color Orange red y tiene 200px de ancho y 200px de alto
    Rectángulo 5: Este rectángulo es de color Green y tiene 250px de ancho y 250px de alto
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Baal_30

Que grande, gracias Gus por las aclaraciones :)
«La suerte es el cuidado de los detalles». -Winston Churchill