Módulo 3: Métodos                                      

     1. Declaración y Definición de Métodos


Métodos

Un método es algo muy utilizado en la programación de Java y en POO representa las conductas de los objetos que se traten.

El método nos ayuda a definir un cambio en algún objeto y es importante que entendamos como funciona un método ya definido y como utilizarlo al hacer alguna aplicación o un applet.

Volvemos en este momento a la definición de la clase Punto vista al inicio:

public class Punto {

    private int x;  //  variable para la coordenada en x

    private int y; // variable para la coordenada en y

    public Punto() {  // metodo para construir un objeto sin parámetros

          x = 0;

          y = 0;

      }

      public Punto(int x, int y) {  // método para construir un objeto con parámetros

           this.x = x;

            this.y = y;

       }

       public int getX() {         // método que te dá el valor de la coordenada x

             return x;

       }

       public int getY() {         // método que te dá el valor de la coordenada y

             return y;

      }

       public void setX(int x) {  // método que sirve para cambiar el valor de la coordenada x

              this.x = x;         // this se utiliza porque se esta utilizando (x) como parámetro y como 

                                  // variable de instancia y esto es para que no se confunda

      }

      public void setY(int y) {  // método que te sirve para cambiar el valor de la coordenada y

              this.y = y;        // this se utiliza porque se esta utilizando (y)  como parámetro y como 

                                 // variable de instancia y esto es para que no se confunda

      }

}

Esta clase queremos que contenga un método que nos sirva para dibujar un punto en la coordenada (x,y), entonces crearemos un nuevo método llamado paint(), el cual requerira un elemento gráfico como el que hasta ahora hemos utilizado con un applet paint(Graphics g).

Si el método paint() de la clase Punto no recibe como parámetro el objeto gráfico de la clase Graphics, no habrá manera que pueda dibujar el punto.

Veamos como quedaria ahora nuestra clase Punto modificada:

public class Punto {

    private int x;  //  variable para la coordenada en x

    private int y; // variable para la coordenada en y

    public Punto() {  // metodo para construir un objeto sin parámetros

          x = 0;

          y = 0;

      }

      public Punto(int x, int y) {  // método para construir un objeto con parámetros

           this.x = x;

            this.y = y;

       }

       public int getX() {         // método que te dá el valor de la coordenada x

             return x;

       }

       public int getY() {         // método que te dá el valor de la coordenada y

             return y;

      }

       public void setX(int x) {  // método que sirve para cambiar el valor de la coordenada x

              this.x = x;         // this se utiliza porque se esta utilizando (x) como parámetro y como 

                                  // variable de instancia y esto es para que no se confunda

      }

      public void setY(int y) {  // método que te sirve para cambiar el valor de la coordenada y

              this.y = y;        // this se utiliza porque se esta utilizando (y)  como parámetro y como 

                                 // variable de instancia y esto es para que no se confunda

      }

  public void paint(Graphics g) {

          g.fillOval(x,y, 5, 5);

  }

}

Esta clase se utiliza creando un objeto de ella dentro de un applet y haciendo uso de sus métodos:

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

// <applet width="200" height="200" code="AppletMetodos1"></applet>

public class AppletMetodos1 extends Applet implements ActionListener {

   Label l1, l2, l3,l4;

   TextField t1, t2, t3,t4;

   Button b;

   Punto p;

 

   public AppletMetodos1() {

      l1 = new Label("X");

      t1 = new TextField(4);

      l2 = new Label("Y");

      t2 = new TextField(4);

      b = new Button("DIBUJA PUNTO");

      add(l1);

      add(t1);

      add(l2);

      add(t2);

      add(b);

      b. addActionListener(this);

   }

 

   public void paint(Graphics g) {

      p.paint(g);

   }

 

   public void actionPerformed(ActionEvent ae) {

      int x = Integer.parseInt(t1.getText());

      int y = Integer.parseInt(t1.getText());

      p = new Punto(x, y);

      repaint();

   }

}

El applet ejecutado quedaría:

En el se puede observar un punto grande en la coordenada 100, 100, ahora hicimos este punto grande con el método fillOval y mandandole un diametro de mas de un pixel para que se viera la diferencia.

Al utilizar un método, o al llamar (invocar) un método, nosotros le podemos pasar valores al método y a su vez, el método puede utilizar aquellos valores que han sido definidos en forma global, por ejemplo, nosotros en la clase Punto, dentro del método paint(), podemos utilizar x, o y, ya que ambas son variables de instancia definidas arriba de todos los métodos, por lo tanto todos los métodos pueden utilizar el valor de x o el valor de y. 

Por otro lado la clase Punto no es un applet y no tiene la capacidad de dibujar en un elemento gráfico por si solo, por eso desde el método paint() del applet, le pasamos al método paint de la clase Punto, el parámetro gráfico g, y de esa manera dentro del método paint() de la clase Punto es como este método puede dibujar.

Es importante tambien que notes que en la clase Punto al introducir el método paint(), se hizo el  import java.awt.*;    ya que ahora que se dibuja, se requiere utilizar el método fillRect() el cual pertenece a los elementos de la clase Graphics que está dentro de ese paquete.

Un método es definido como void cuando no requiere regresar un valor a quien lo llamó. En caso de requerir regresar un valor este puede ser de los mismos tipos que las variables definidas al principio:

tipo descripción formato/tamaño
(integers)
byte entero de tamaño byte 8-bits a complementos a dos
short entero corto 16-bits a complementos a dos
int entero 32-bits a complementos a dos
long entero grande 64-bits a complementos a dos
(números reales)
float punto flotante de precision sencilla 32-bits IEEE 754
double punto flotante de doble precision 64-bits IEEE 754
(otros tipos)
char un solo caracter caracter de 16-bits de tipo Unicode
boolean valor boleano (true o false) true o false
NombreClase Alguna clase existente representará un objeto de alguna clase conocida

Las variables y objetos definidos y creados dentro de un método se consideran locales al método y solo pueden ser utilizados dentro de él. Si al llamar a otro método se quiere que el método llamado utilice alguna variable o algún objeto, dicho método debe de tomarlo a través de un parámetro para tal efecto.

Es muy importante que los métodos se llamen con el número exacto de variables y/o objetos definidos como parámetros, asi como el tipo correspondiente de cada uno de ellos.

 

Ejercicio


 1. Todas las clases tienen dos métodos que son muy utilizados, el método equals y el método toString. Se te pide completes la clase Punto para que contenga el método equals que recibe un objeto de la clase Punto y compara si los valores de (x,y) en el objeto recibido son los mismos que el objeto en el que se esta.

2. Todas las clases tienen dos métodos que son muy utilizados, el método equals y el método toString. Se te pide completes la clase Punto para que contenga el método toString, el cual debe regresar un String que concatene los valores de las coordenadas x,y. La forma de regresar esto debe ser utilizando () paréntesis, por ejemplo el punto 3 en x, 2 en y debe regresarse como (3,2) en formato String.

Ligas sugeridas
http://java.sun.com/docs/books/tutorial/native1.1/implementing/method.html

Regresar                                                                                                                                                                       Siguiente