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:

interface Volador {
    void volar()
    void aterrar()
}

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:

trait Salutador {
    void saludar() {
        println "Hola!"
    }
}

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
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

  1. Defineix una interfície Conductor amb els mètodes conduir i parar. Implementa aquesta interfície en una classe Cotxe.
  2. Defineix un trait Cantant amb un mètode cantar que imprimeixi "Estic cantant". Implementa aquest trait en una classe Artista.

Amb aquests coneixements, estàs preparat per avançar cap a conceptes més avançats de la programació orientada a objectes en Groovy.

© Copyright 2024. Tots els drets reservats