• Jueves 14 de Noviembre de 2024, 23:40

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Bestialazo

Páginas: [1]
1
Java / Practica (principio De Orientacion A Objetos)
« en: Martes 16 de Octubre de 2007, 23:23 »
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
Código: Text
  1.  
  2. /**
  3.  * La clase Punto modela a un punto en el plano
  4.  * @author
  5.  * @version 1.0
  6.  */
  7. public class Punto {
  8.   /* Definimos los atributos del punto */
  9.   /** Coordenada X del punto. atributo de tipo int, que representa números enteros */
  10.   private int x;
  11.   /** Coordenada Y del punto */
  12.   private int y;
  13.  
  14.   /* definición de métodos del punto */
  15.   /** Construye un punto a partir de sus coordenadas
  16.    * @param coordX es la coordenada x del nuevo punto
  17.    * @param coordY es la coordenada y del nuevo punto
  18.    */
  19.   public Punto(int coordX, int coordY) {
  20.     x= coordX;
  21.     y= coordY;
  22.   }
  23.  
  24.   /** Imprime por pantalla la situación del punto */
  25.   public void mostrarSituacion() {
  26.     System.out.println("("+x+","+y+")");
  27.   }
  28. }
  29.  
  30.  
Clase circulo
Código: Text
  1.  
  2. /**
  3.  * Modela un circulo a partir de su centro y su radio
  4.  * @author
  5.  * @version 1.0
  6.  */
  7.  class Circulo {
  8.    /* Definición de atributos del círculo */
  9.   /** Centro */
  10.   private Punto centro;
  11.   /** Radio */
  12.   private int radio;
  13.   /** Color */
  14.   private int color;
  15.  
  16.  
  17.  
  18.  
  19.  
  20.   /* Definición de métodos del círculo */
  21.   /** Construye un círculo a partir de su centro y su radio
  22.    * @param cnt es el centro del triángulo
  23.    * @param rad es el radio del círculo
  24.    */
  25.   public Circulo(Punto cnt, int rad, int clr) {
  26.     centro = cnt;
  27.     radio = rad;
  28.     color = clr;
  29.   }
  30.   public Circulo(Punto cnt, int rad) {
  31.     centro = cnt;
  32.     radio = rad;
  33.     color = 0;
  34.   }
  35.  
  36.   public  Circulo crearCirculo(Punto cnt) {
  37.      centro = cnt;
  38.     return this;
  39.  
  40.   }
  41.   public void setColor (int clr) {
  42.     color = clr;
  43.   }
  44.   public void setCentro (Punto cnt) {
  45.     centro = cnt;
  46.   }
  47.   public void setRadio (int rad) {
  48.     radio = rad;
  49.   }
  50.  
  51.   /** dibuja el círculo en pantalla */
  52.   public void mostrarSituacion () {
  53.     System.out.println("Este círculo se define por:");
  54.     System.out.println("Un centro:");
  55.     centro.mostrarSituacion();
  56.     System.out.println("un radio:"+radio+"");
  57.     System.out.println("y un color:"+color+"");
  58.    
  59.   }
  60.   public void mostrarCentro () {
  61.     centro.mostrarSituacion();
  62.   }
  63.   public void mostrarRadio () {
  64.     System.out.println(radio);
  65.   }
  66.   public void mostrarColor () {
  67.     System.out.println(color);
  68.   }
  69.  
  70.    
  71. }
  72.  
  73.  
  74.  
Programa con el que hago las pruebas para el objeto circulo
Código: Text
  1.  
  2. /**
  3.  * Programa que ilustra el manejo de objetos Circulo
  4.  * @author
  5.  * @version 1.0
  6.  */
  7. class PruebaCirculo {
  8.   public static void main(String args[]) {
  9.     /* creamos un punto que sera el centro del circulo */
  10.     Punto cnt = new Punto (1,1);
  11.    
  12.  
  13.     /* ...y le damos un valor al radio */
  14.     int rad = 3;
  15.     /* ...creamos el circulo */
  16.     Circulo c1 = new Circulo(cnt, rad, 2);
  17.     Circulo c2 = new Circulo(cnt, rad);
  18.     Circulo c3 = new Circulo(new Punto (-1,-1),2);
  19.     Circulo c4 = c3.crearCirculo(new Punto (3,1));
  20.     /*y dibujamos el circulo */
  21.  
  22.   c3.mostrarSituacion();
  23.   c3.setCentro(3,3);
  24.  
  25.  
  26.   }
  27. }
  28.  
  29.  


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.

Páginas: [1]