lunes, 28 de julio de 2014

Comportamiento de Objetos

Hemos visto que los objetos tienen "estados" y "comportamientos" representados mediante "variables de referencia" y "métodos", ahora vamos a ver de que forma podemos relacionar estos dos elementos.

Se podría decir que: Los métodos usan los valores de las variables de la clase.

Un ejemplo claro es:

class Perro {
int altura;
String nombre;

void ladrar () {
if (altura > 60) {
System.out.println("que grande soy");
} else if (altura >15) {
System.out.println("bueno, no soy tan pequeño");
} else {
System.out.println ("vaya marrón");
}
}
}
class PerroTestDrive {

public static void main (String[] args) {
Perro uno = new Perro ();
Perro dos = new Perro ();
Perro tres = new Perro ();
uno.altura = 70;
dos.altura = 8;
tres.altura = 35;

uno.ladrar();
dos.ladrar();
tres.ladrar();
}
}

Vemos como el método puede utilizar las variables definidas en su código.


Enviando cosas al objeto:

Podemos pasar valores a los métodos, por ejemplo, podríamos decir:

Perro uno = new Perro ();
uno.ladrar (3);                //Donde el 3 es el argumento

void ladrar (int numeroDeLadridos) {    //Donde numeroDeLadridos es el parámetro)

while (numeroDeLadridos > 0) {
System.out.println ("Jáu Jáu");
numeroDeLadridos = numeroDeLadridos -1;
}
}

 Recibiendo cosas de un método:


Hasta ahora hemos visto métodos que no devolvían nada, es el caso de:

void ejemplo () {
}

Pero podemos también declarar métodos que devuelvan un tipo de valor específico:

int devuelveAlgo () {

     return 10;
}
// Debemos tener una variable que pueda almacenar el valor que nos devuelve el método, en este caso es un valor entero, por lo tanto podremos decir que:

int dameLoQueDevuelves = unaClase.devuelveAlgo;


Mandando más de una cosa a un objeto:

Podemos enviar mas de una variable a la vez;

void unMetodo () {

   nuevoObjeto nuevo = new nuevoObjeto ();
   nuevo.tomaDos (10, 20);
}

void tomaDos (int x, int y) {

   int z = x + y;
   System.out.println ("El total es " + z);
}

El 10 se corresponde con la x y el 20 con la y.

* Podemos enviar también variables que contengan el valor deseado:

void unMetodo () {

   int uno = 10;    // Creamos unas variables nueva
   int dos = 20;
   nuevoObjeto nuevo = new nuevoObjeto ();
   nuevo.tomaDos (unodos);
}

void tomaDos (int x, int y) {

   int z = x + y;
   System.out.println ("El total es " + z);
}


Un detalle a tener en cuenta es que el argumento no está conectado con el parámetro, es decir, una vez que le pasemos el valor de uno y dos al método tomaDos (int x, int y) El valor que tenga x e y no modificarán el valor de uno y dos. Es decir, el valor de uno y dos se "copia" en los valores de x e y. A partir de ese momento todo lo que hagamos con x e y no influirá en el valor inicial de uno y dos.


Getters y Setters:

Los getters y setters te permitirán obtener y establecer/definir cosas. Valores de variables instanciadas por lo general. La estructura generar que se emplear es:

Ejemplo:

class GuitarraElectrica {

  String marca;
  int numeroDeGuitarras;
  boolean artistaLaUsa

//Esto es un Getter
String getMarca () {
  return marca;
}

//Esto es un Setter
void setMarca (String aMarca) {
  marca = aMarca;
}

//Lo hacemos con cada una de las variables
 int getnumeroDeGuitarras () {
  return numeroDeGuitarras;
}

void setNumeroDeGuitarras (int num) {
numeroDeGuitarras = num;
}

//Y con la ultima:

boolean getArtistaLaUsa () {
   return artistaLaUsa;
}
void setArtistaLaUsa (boolean siONo) {
artistaLaUsa = siONo;
}
}



No hay comentarios:

Publicar un comentario