En aquest tema, explorarem dos conceptes fonamentals en la programació orientada a objectes amb Groovy: les interfícies i els traits. Aquests conceptes ens permeten definir contractes i comportaments reutilitzables que poden ser implementats per diverses classes.
Interfícies
Què és una Interfície?
Una interfície és una col·lecció de mètodes abstractes (sense implementació) que una classe pot implementar. Les interfícies defineixen un contracte que les classes han de complir, però no proporcionen cap codi concret.
Definició d'una Interfície
En Groovy, les interfícies es defineixen de manera similar a Java. Aquí teniu un exemple:
Implementació d'una Interfície
Una classe que implementa una interfície ha de proporcionar implementacions per a tots els mètodes definits en la interfície. Vegem un exemple:
class Avio implements Volador { void volar() { println "L'avió està volant" } void aterrar() { println "L'avió està aterrant" } }
Exemple Pràctic
interface Volador { void volar() void aterrar() } class Avio implements Volador { void volar() { println "L'avió està volant" } void aterrar() { println "L'avió està aterrant" } } class Ocells implements Volador { void volar() { println "L'ocell està volant" } void aterrar() { println "L'ocell està aterrant" } } def avio = new Avio() def ocell = new Ocells() avio.volar() avio.aterrar() ocell.volar() ocell.aterrar()
Exercici
Defineix una interfície Nadador
amb els mètodes nadar
i submergir
. Implementa aquesta interfície en dues classes: Peix
i Submarinista
.
Traits
Què és un Trait?
Un trait és una unitat de comportament reutilitzable que es pot afegir a una classe. Els traits poden contenir mètodes amb implementació, cosa que els fa més flexibles que les interfícies.
Definició d'un Trait
En Groovy, els traits es defineixen utilitzant la paraula clau trait
. Aquí teniu un exemple:
Implementació d'un Trait
Una classe pot implementar un trait utilitzant la paraula clau implements
. Vegem un exemple:
class Persona implements Salutador {} def persona = new Persona() persona.saludar() // Sortida: Hola!
Exemple Pràctic
trait Salutador { void saludar() { println "Hola!" } } trait Despedidor { void despedir() { println "Adéu!" } } class Persona implements Salutador, Despedidor {} def persona = new Persona() persona.saludar() // Sortida: Hola! persona.despedir() // Sortida: Adéu!
Exercici
Defineix un trait Corredor
amb un mètode córrer
que imprimeixi "Estic corrent". Implementa aquest trait en una classe Atleta
.
Comparació entre Interfícies i Traits
Característica | Interfícies | Traits |
---|---|---|
Definició de mètodes | Només mètodes abstractes | Mètodes amb implementació |
Herència múltiple | No | Sí |
Paraula clau | interface |
trait |
Flexibilitat | Menys flexible | Més flexible |
Resum
En aquesta secció, hem après sobre les interfícies i els traits en Groovy. Les interfícies ens permeten definir contractes que les classes han de complir, mentre que els traits ens permeten afegir comportaments reutilitzables a les classes. Hem vist exemples pràctics de com definir i implementar interfícies i traits, i hem comparat les seves característiques.
Exercicis de Repàs
- Defineix una interfície
Conductor
amb els mètodesconduir
iparar
. Implementa aquesta interfície en una classeCotxe
. - Defineix un trait
Cantant
amb un mètodecantar
que imprimeixi "Estic cantant". Implementa aquest trait en una classeArtista
.
Amb aquests coneixements, estàs preparat per avançar cap a conceptes més avançats de la programació orientada a objectes en Groovy.
Curs de Programació Groovy
Mòdul 1: Introducció a Groovy
Mòdul 2: Sintaxi i Característiques del Llenguatge Groovy
Mòdul 3: Programació Orientada a Objectes en Groovy
Mòdul 4: Característiques Avançades de Groovy
Mòdul 5: Groovy en la Pràctica
- Entrada/Sortida de Fitxers
- Treballant amb XML i JSON
- Accés a Bases de Dades
- Desenvolupament Web amb Groovy
Mòdul 6: Proves i Depuració
Mòdul 7: Ecosistema i Eines de Groovy
- Eina de Construcció Gradle
- Framework de Proves Spock
- Framework Grails
- Altres Llibreries i Eines de Groovy
Mòdul 8: Millors Pràctiques i Temes Avançats
- Estil de Codi i Convencions
- Optimització del Rendiment
- Consideracions de Seguretat
- Concurrència en Groovy