miércoles, 16 de mayo de 2007

¡ rápido con groovy ! GroovyBeans para programadores Java y C#

representando una clase libro

Así es como se ve una clase en Groovy:

  1    class Libro {
  2 
  3      String titulo
  4 
  5      String getTitulo() {
  6          return titulo
  7      }
  8 
  9      void setTitulo(String tit) {
 10          titulo = tit
 11      }
 12    }

se parece mucho a Java y a C#, excepto que:

  • no necesito de puntos y comas para separar sentencias
  • el campo titulo es preconfigurado como privado como todo campo
  • los métodos getTitulo() y setTitulo(...) son preconfigurados como públicos al igual que todo método

La clase aquí formada es la encapsulación de un solo campo, titulo, por lo tanto los métodos get... y set... son sus accesores, que además están en un formato muy común.

Para evitarle esta molestia de estar programado get... y set... la mayoría de los IDE´s (como los míos: NetBeans para Java y SharpDevelop para C#) están en capacidad de generarlos automáticamente.

  1    class Libro {                    
  2                                     
  3        String titulo                
  4                
  5        String getTitulo() {         
  6            return titulo            
  7        }                            
  8                                     
  9        void setTitulo(String tit) { 
 10            titulo = tit             
 11        }                            
 12    }                                

Groovy le va a evitar la molestia a Ud. y a su IDE favorito, las declaraciones muy obvias get... y set... pasan a ser implícitas.

  1    class Libro {                    
  2                                     
  3        String titulo                
  4                
  5    }                                

Si no se convence todavía, por favor corra el programa:

  1    class Libro {                    
  2        String titulo                
  3    }                                
  4                                     
  5    miLibrito = new Libro()          
  6    miLibrito.setTitulo('Amares')    
  7    println miLibrito.getTitulo()    

Y si lo que extraña es la notación de propiedad de C# y VB.NET, simplemente reemplace la llamada a los métodos set... y get... con la notación "bean":

  1    class Libro {                    
  2        String titulo                
  3    }                                
  4                                     
  5    miLibrito = new Libro()          
  6    miLibrito.titulo = 'Amares'      
  7    println miLibrito.titulo         

En tal caso recuerde que no está accesando directamente al campo, sino los métodos implícitos get... y set... con notación "Bean".

Es posible redefinir el comportamiento predeterminado e implícito de los accesores si lo que se quiere es un método más especializado:

  1    class Libro {                    
  2                                     
  3        String titulo                
  4                                     
  5        void setTitulo(String tit) { 
  6            titulo = tit.toUpperCase() 
  7        }                            
  8    }                                
  9                                     
 10    miLibrito = new Libro()          
 11    miLibrito.titulo = 'Amares'      
 12    println miLibrito.titulo         

En este ejemplo se redefine la función set... con el propósito de transformar a mayúsculas el valor del campo. No se requiere redefinir el método get. Trate de hacer lo mismo en Java o C# y compare el número de líneas y el nivel de complejidad del código. En Groovy se programa menos líneas de código que en esos lenguajes pero debe ser conciente de las declaraciones implícitas y dinámicas.

No hay comentarios: