Diario de un Aprendiz de Java

Monday, May 23, 2005

Ejercicios básicos

Buscando por la red he encontrado unos ejercicios propuestos de clases y objetos, y he empezado a hacerlos. Son parte de la asignatura de Programación Orientada a Objetos de la Universidad de Murcia. Podeis encontrar su página web en este enlace. En la parte teórica de la asignatura se trabaja con los lenguajes orientados a objetos Eiffel, C++ y Java, pero las prácticas se entregan solo en este último, Java.

El enunciado de lo primero que he hecho dice asi :

1.- Implementar la clase Posicion que represente un punto (x,y) en el eje de las coordenadas. Cada posición viene definida por dos valores enteros x e y. Las operaciones disponibles son:

    · Constructor por defecto, se corresponde con la posición (0,0).
    · Constructor al que se le pasa como parámetro los valores inciales de las coordenadas X e Y.
    · Constructor de copia.
    · Métodos para modificación y consulta (set/get) de los atributos de la clase.
    · Métodos para incrementar y decrementar los valores de cada una de las coordenadas de la posición (incX, incY, decX, decY).
    · Un método para establecer los valores de las coordenadas (setXY).


Y siguiendo este enunciado, he escrito este codigo

class Posicion {
  int x, y;

/*Constructor por defecto*/
  Posicion() {
   this.x = 0;
   this.y = 0;
  }

/*Constructor al que se le pasa como parámetro los valores
iniciales de las coordenadas X e Y.*/
  Posicion(int x, int y) {
   this.x = x;
   this.y = y;
  }

/*Métodos para modificación y consulta*/
  void setX(int x) {
   this.x = x;
  }

  void setY(int y) {
   this.y = y;
  }

  int getX() {
  return x;
  }

  int getY() {
   return y;
  }

/* Métodos para incrementar y decrementar los atributos*/
  void incX() {
   x++;
  }

  void incY() {
   y++;
  }

  void decX() {
   x--;
  }

  void decY() {
   y--;
  }

/*Método para establecer los valores de las coordenadas*/
  void setXY(int x, int y) {
   this.x = x;
   this.y = y;
  }
}


Como veis, lo único que me falta es el constructor de copia, pero es algo que no he hecho nunca y aún desconozco. Queda en la lista de cosas TO-LEARN (pero en la lista que realmente se va siguiendo, no el otra en la que dejas los temas imposibles .. xD).
¡Aprovecho para pedir rectificaciones y/o ayudas en el codigo, se agradece mucho si alguien lo revisa! ¡Saludos!

7 Comments:

  • Hola!
    He estado mirando tu código y parece correcto, lo único que el último método, no estoy segura de lo que te pide porque si te das cuenta, es idéntico al de modificar...
    En cuanto al constructor de copia, se utilizan para inicializar un objeto con otro objeto de la misma clase.
    Ejemplo:

    public class Coordenadas
    {
    int x,y;
    public Coordenadas(const Coordenadas c)
    {
    x=c.x;
    y=c.y
    }


    };

    Espero haberte ayudado algo...
    Saludos!! ;)

    By Blogger Hada, at 3:11 AM  

  • Hola,
    El método de copia me imagino que es aquel constructor en el que haces referencia a otro constructor, por ejemplo:

    Posicion() {
    this(0, 0);
    }

    esto da el mismo resultado de lo que habías colocado inicializando en cero, pero es una forma más elegante. Saludos y suerte con este maravilloso lenguaje.

    By Blogger Frank, at 1:03 PM  

  • El constructor por copia es exactamente lo que planteo Hada.
    Dicho constructor recibe como parametro otro objeto de la misma clase y copia los atributos de este, tal cual mostro Hada.

    Saludos.

    By Anonymous kbza, at 1:32 PM  

  • esta chevere...pero me encantaria saber mucho mas...porfa podriame enviarme a mi blog.

    By Blogger yack dexsar castillo barrazueta, at 7:43 PM  

  • Hola amigo esta muy interesante tu blog yo recien inicio java desde 0, ahora recién estoy en la lectura mira tengo un ejemplo:

    import java.io.*;
    public class sibasico
    {
    public static void main (String args[])throws IOException
    {

    InputStreamReader teclado = new InputStreamReader (System.in);
    BufferedReader flujo = new BufferedReader (teclado);
    String cadena;

    int a,b;
    char c;
    c='\0';
    a=b=0;


    System.out.print("Ingrese primer numero: ");
    cadena=flujo.readLine();
    a=Integer.parseInt(cadena);
    System.out.print("Ingrese segundo numero: ");
    cadena=flujo.readLine();
    b=Integer.parseInt(cadena);
    System.out.print("Elegir su tipo de operacion: ");
    cadena=flujo.readLine();
    c=Character.charCount(cadena);
    switch (c)
    {
    case '+':
    {

    System.out.print("HOLA");
    }
    default:
    {
    System.out.print("ERROR: ");

    }

    }




    }
    }


    Lo que tengo problemas es con la variable char de "c", porque quiero ingresar con variable +, -, * para que calcule la operacion correspondiente, pero no sé como asignar al caracter c.
    he probado con:
    c=Character.charCount(cadena);

    pero me bota error por favor si alguien me ayuda =)

    By Blogger Kevin Espinoza, at 9:23 AM  

  • para un costructor de copia lo unico que tienes que hacer es instanciar como parametro el mismo contructor de la clase que estas creando, que en tu caso seria Posicion
    Posicion(Posicion p)
    {
    this.x = p.x;
    this.y = p.y;
    }

    By Blogger CARLOS, at 1:06 AM  

  • Hi it's me, I am also visiting this website daily, this web page is really fastidious and the viewers are actually sharing fastidious thoughts.

    Review my website - cellulite treatment reviews

    By Anonymous Anonymous, at 9:45 AM  

Post a Comment

<< Home