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.