0

Java paso a paso: Capítulo 2º – Clases y Objetos

Como vimos en el capítulo anterior, una clase se define como una plantilla del cual se instancian todos los objetes provenientes del mismo, nos dedicaremos a explicar el concepto de clase en profundidad así como de las partes que la forman con un ejemplo sencillo:

 

Imaginemos que poseemos una clase que define un Punto en el plano, como todos sabemos en un plano 2D este punto va determinado por sus ejes de coordenadas X e Y, por lo que necesitaremos definir un constructor el cual le pasemos como parámetros estas dos variables así como métodos que retornen dichos valores o los establezca por si queremos trasladarlo dentro de un plano así como calcular la distancia entre dos puntos en concreto, una clase Punto sería definida de la siguiente forma:

 


class Punto{

private double x, y;

public Punto()

{this.x = 0; this.y = 0;}

public Punto(double x, double y)

{this.x = x; this.y = y;}

public double x()

{ return this.x; }

public double y()

{ return this.y;

}

public void trasladar(double x, double y)

{ this.x += x; this.y += y;}

public void x(double x)

{ this.x = x; }

public void y(double y)

{ this.y = y; }

public double distancia(Punto pto)

{return Math.sqrt(Math.pow(this.x - pto.x, 2) + Math.pow(this.y - pto.y, 2));}

public String toString()

{ return ("Punto: ("+this.x()+","+this.y()+")");

}

}

Ahora analizaremos la clase:

  • Public: Son los constructores de la clase y básicamente los que inicializan el estado de las variables de nuestro objeto, podemos definir tantos constructores como necesitemos, en este caso definimos 2 constructores, uno el cual le pasaremos los valores que nosotros establezcamos y otro que se inicializará a “0” por defecto ya que no le pasamos valores; los constructores siempre han de respetar el nombre de la clase del cual parte si no recibiremos un error de compilación.
  • Public <tipo> <nombre>: Son lo que denominaríamos funciones, han de realizar una operación determinada y retornar un solo valor siempre referido al tipo de variable u objeto que se le pida en la cabecera, en este caso retornaremos un double referido a los ejes de coordenadas X e Y  y también para obtener el valor de la distancia entre 2 puntos.
  • Public void <nombre>: Son lo que denominaríamos métodos, un método al igual que una función puede realizar una operación determinada pero en este caso no retornaría un valor, un método es usado de forma común para accesar las variables de estado de un objeto y modificarlos, por defecto las variables se establecerán como private y podremos modificar sus valores a través de los métodos, también son usados para informar de un estado e imprimir por pantalla un mensaje referido al objeto. En este caso usaremos los métodos para establecer los valores de las variables en el plano a través del método trasladar donde se le sumarán a las variables presentes las que les pasemos como argumento.
  • ToString: es una palabra reservada con el cual podemos imprimir el valor del objeto que nosotros definamos dentro de la función.
  • This: como apreciación la palabra resevada this se suele usar para hacer referencia a un objeto en concreto de la misma clase, esto a grandes rasgos parece complejo de entender pero cuando usamos la función “distancia” pasamos un segundo punto de la misma clase al objeto que estamos haciendo referencia, con this lo que hacemos es referirnos a ese mismo objeto al que estamos haciendo referencia, cuando se usan variables con el mismo nombre ayuda mucho a entender este concepto y te será muy útil a la hora de programar varios objetos contenidos en una misma clase.

 

Procederemos ahora a crear una clase main para crear un objeto de la clase Punto y manipularlo a nuestro antojo:

public class TestPunto {

public static void main(String[] args)
{
Punto punto1 = new Punto(1.0, 2.0);
System.out.println(punto1);
punto1.trasladar(2.0, 2.0);
System.out.println(punto1);

Punto punto2 = new Punto(3.0,8.0);

System.out.println("La distancia entre los dos puntos es: " + punto2.distancia(punto1));
}
}

Al crear el objeto tenemos que tener en cuenta que a diferencia de los tipos primitivos (int, double, float…) en este caso tenemos que definir su tipo e inicializarlo para poder usarlo, en el caso de que solo definiésemos el tipo estaríamos instanciándolo con un valor nulo por lo cual no tendríamos nada es por eso que debemos iniciarlo con new <nombre de la clase>(<argumentos>) en capítulos más posteriores explicaré este concepto más en profundidad. Una vez que hayamos creado nuestro objeto procederemos a manipularlo, en este caso llamaremos al método trasladar para trasladar nuestro punto en el plano e imprimiremos sus valores antes y después para observar los cambios, como ya dije previamente a la hora de llamar System.Out.println(<nombre del objeto>) estamos llamando realmente al método toString donde mostramos el mensaje personal que definimos en la clase, también crearemos un segundo punto que pasaremos como argumento al primer punto para calcular la distancia entre ambos, al compilar y ejecutarlo nos saldría lo siguiente:

Punto: (1.0,2.0)
Punto: (3.0,4.0)
La distancia entre los dos puntos es: 4.0

En resumen esto sería la definición principal de clases y objetos, ya en el próximo capítulo hablaremos del control de visibilidad más a fondo de las clases así como las variables de instancia.

Tone

Ingeniero del Software y procrastinador sin remedio, interesado en todo lo que tenga que ver con el mundo del desarrollo web y la inteligencia artificial, no sé si seré el responsable de la creación de Skynet algún día pero se intenta.

ESCRIBIR UN COMENTARIO
  • (will not be published)

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>