Bueno, pues tengo que entregar una practica mañana y la verdad es que esta casi hecha pero me fallan un par de cosas, a ver si me entendeis bien y me podeis ayudar.
La practica trata de crear un "programa" en el que creemos circulos que despues sean mostrados en pantalla, bastante sencillito vamos.
entonces para ello debia crear una clase punto, y una clase circulo, aqui definidas
clase punto
/**
* La clase Punto modela a un punto en el plano
* @author
* @version 1.0
*/
public class Punto {
/* Definimos los atributos del punto */
/** Coordenada X del punto. atributo de tipo int, que representa números enteros */
private int x;
/** Coordenada Y del punto */
private int y;
/* definición de métodos del punto */
/** Construye un punto a partir de sus coordenadas
* @param coordX es la coordenada x del nuevo punto
* @param coordY es la coordenada y del nuevo punto
*/
public Punto(int coordX, int coordY) {
x= coordX;
y= coordY;
}
/** Imprime por pantalla la situación del punto */
public void mostrarSituacion() {
System.out.println("("+x+","+y+")");
}
}
Clase circulo
/**
* Modela un circulo a partir de su centro y su radio
* @author
* @version 1.0
*/
class Circulo {
/* Definición de atributos del círculo */
/** Centro */
private Punto centro;
/** Radio */
private int radio;
/** Color */
private int color;
/* Definición de métodos del círculo */
/** Construye un círculo a partir de su centro y su radio
* @param cnt es el centro del triángulo
* @param rad es el radio del círculo
*/
public Circulo(Punto cnt, int rad, int clr) {
centro = cnt;
radio = rad;
color = clr;
}
public Circulo(Punto cnt, int rad) {
centro = cnt;
radio = rad;
color = 0;
}
public Circulo crearCirculo(Punto cnt) {
centro = cnt;
return this;
}
public void setColor (int clr) {
color = clr;
}
public void setCentro (Punto cnt) {
centro = cnt;
}
public void setRadio (int rad) {
radio = rad;
}
/** dibuja el círculo en pantalla */
public void mostrarSituacion () {
System.out.println("Este círculo se define por:");
System.out.println("Un centro:");
centro.mostrarSituacion();
System.out.println("un radio:"+radio+"");
System.out.println("y un color:"+color+"");
}
public void mostrarCentro () {
centro.mostrarSituacion();
}
public void mostrarRadio () {
System.out.println(radio);
}
public void mostrarColor () {
System.out.println(color);
}
}
Programa con el que hago las pruebas para el objeto circulo
/**
* Programa que ilustra el manejo de objetos Circulo
* @author
* @version 1.0
*/
class PruebaCirculo {
public static void main(String args[]) {
/* creamos un punto que sera el centro del circulo */
Punto cnt = new Punto (1,1);
/* ...y le damos un valor al radio */
int rad = 3;
/* ...creamos el circulo */
Circulo c1 = new Circulo(cnt, rad, 2);
Circulo c2 = new Circulo(cnt, rad);
Circulo c3 = new Circulo(new Punto (-1,-1),2);
Circulo c4 = c3.crearCirculo(new Punto (3,1));
/*y dibujamos el circulo */
c3.mostrarSituacion();
c3.setCentro(3,3);
}
}
Bien, si me he explicado bien os expongo los problemas:
1- el c3.setCentro(3,3) no me compila correctamente porque me pone lo siguiente:
setCentro(Punto) in Circulo cannot be applied to (int,int)
No lo entiendo, creo que esta todo perfectamente hecho y sin embargo, no me deja cambiar el valor del centro del circulo c3.
2- cuando c3 se muestra con "c3.mostrarSituacion();" en vez de adquirir el valor que se indica en el codigo (-1,-1) adquiere el valor 3,1 del circulo c4, obviamente parece que el metodo "crearCirculo" a afectado tambien a c3, pero no comprendo porque ni como evitarlo, se supone que solo deberia funcionar para c4.
Esos son mis dos fallos en la practica, por lo demas creo que funciona bastante bien y que para ser de las primeras no lo he hecho mal, pero quien sabe, seguramente tenga mas errores de los que pienso, de todas formas, gracias a todo aquel que quiera ayudarme.