Ejemplo 6 - Utilización del encadenamiento de métodos

Objetivo

Comprender como implementar métodos que permitan encadenamiento

Enunciado

Programe una clase Hora que tenga métodos encadenables para asignarle el valor de la hora, minutos y segundos.

Con encadenamiento de métodos esto se puede escribir como:

reloj.setHora(10).setMinutos(20).setSegundos(35);

Escriba un método llamado toString() que devuelva un String con la hora de la siguiente forma HH:MM:SS donde HH es la hora MM los minutos y SS los segundos.

 

Solución

El encadenamiento de métodos permite escribir en secuencia las instrucciones que se asocian a un mismo objeto.

Esto simplifica la lectura del programa y permite escribir instrucciones en una misma línea.

Por ejemplo, el siguiente método luego de modificar el atributo hora con el valor del parámetro devuelve una referencia a si mismo con la referencia "this":

public Hora setHora( int hora ){ 
 if( ( hora>=0 ) && ( hora<=60 ) ) {
 	  this.hora = hora;} 
 }
 else
   this.hora = 0;
 return this;
}

/**
* Hora es una clase que demuestra el uso del encadenamiento de m&eacute;todos.
*/
public class Hora{

int hora;
int minuto;
int segundo;
/**
* Establece el valor de la hora
*/
public Hora setHora( int hora ){
if( ( hora>=0 ) && ( hora<=12 ) ) {
this.hora = hora;
}
else{
this.hora = 0;
}
return this;
}

/**
* Establece el valor del minuto
*/
public Hora setMinuto( int minuto ){
if( ( minuto>=0 ) && ( minuto<=60 ) ) {
this.minuto = minuto;
}
else{
this.minuto = 0;
}
return this;
}

/**
* Establece el valor del segundo
*/
public Hora setSegundo( int segundo ){
if( ( segundo>=0 ) && ( segundo<=60 ) ) {
this.segundo = segundo;
}
else{
this.segundo = 0;
}
return this;
}

/**
* Crea una hilera con el contenido de la instancia de Hora
*/
public String toString(){
return (this.hora + ":" + this.minuto + ":" + this.segundo);
}

public static void main(String args[]){
Hora hora = new Hora();
hora.setHora(10).setMinuto(50).setSegundo(60);
System.out.println(hora.toString());
}
}

La salida es la siguiente:

Código Fuente

Hora.java