Introducció

En aquest tema, explorarem els conceptes fonamentals de la programació orientada a objectes (POO) en Groovy. Aprendrem com definir classes, crear objectes i utilitzar-los en els nostres programes. També veurem com Groovy simplifica alguns aspectes de la POO en comparació amb altres llenguatges com Java.

Conceptes Clau

  1. Classe: Una plantilla o model que defineix les propietats (atributs) i comportaments (mètodes) dels objectes.
  2. Objecte: Una instància d'una classe que conté dades i comportaments definits per la classe.
  3. Atributs: Variables que emmagatzemen l'estat d'un objecte.
  4. Mètodes: Funcions que defineixen els comportaments d'un objecte.

Definició de Classes

En Groovy, les classes es defineixen de manera similar a Java, però amb algunes simplificacions. Aquí teniu un exemple bàsic:

class Persona {
    String nom
    int edat

    void saludar() {
        println "Hola, el meu nom és $nom i tinc $edat anys."
    }
}

Explicació del Codi

  • class Persona: Defineix una nova classe anomenada Persona.
  • String nom: Declara un atribut nom de tipus String.
  • int edat: Declara un atribut edat de tipus int.
  • void saludar(): Defineix un mètode saludar que imprimeix un missatge de salutació.

Creació d'Objectes

Per crear un objecte d'una classe, utilitzem el constructor de la classe. Groovy proporciona un constructor per defecte que podem utilitzar directament:

Persona persona = new Persona()
persona.nom = "Joan"
persona.edat = 30
persona.saludar()

Explicació del Codi

  • new Persona(): Crea una nova instància de la classe Persona.
  • persona.nom = "Joan": Assigna el valor "Joan" a l'atribut nom de l'objecte persona.
  • persona.edat = 30: Assigna el valor 30 a l'atribut edat de l'objecte persona.
  • persona.saludar(): Crida el mètode saludar de l'objecte persona.

Constructors Personalitzats

Podem definir constructors personalitzats per inicialitzar els objectes amb valors específics:

class Persona {
    String nom
    int edat

    Persona(String nom, int edat) {
        this.nom = nom
        this.edat = edat
    }

    void saludar() {
        println "Hola, el meu nom és $nom i tinc $edat anys."
    }
}

Persona persona = new Persona("Maria", 25)
persona.saludar()

Explicació del Codi

  • Persona(String nom, int edat): Defineix un constructor que accepta dos paràmetres (nom i edat) i inicialitza els atributs corresponents.
  • this.nom = nom: Assigna el valor del paràmetre nom a l'atribut nom de l'objecte.
  • this.edat = edat: Assigna el valor del paràmetre edat a l'atribut edat de l'objecte.

Exercicis Pràctics

Exercici 1: Definir una Classe

Defineix una classe Cotxe amb els atributs marca (String) i model (String). Afegeix un mètode detalls que imprimeixi la marca i el model del cotxe.

class Cotxe {
    String marca
    String model

    void detalls() {
        println "Marca: $marca, Model: $model"
    }
}

// Solució
Cotxe cotxe = new Cotxe()
cotxe.marca = "Toyota"
cotxe.model = "Corolla"
cotxe.detalls()

Exercici 2: Constructor Personalitzat

Modifica la classe Cotxe per afegir un constructor que inicialitzi els atributs marca i model.

class Cotxe {
    String marca
    String model

    Cotxe(String marca, String model) {
        this.marca = marca
        this.model = model
    }

    void detalls() {
        println "Marca: $marca, Model: $model"
    }
}

// Solució
Cotxe cotxe = new Cotxe("Honda", "Civic")
cotxe.detalls()

Errors Comuns i Consells

  • Oblidar inicialitzar els atributs: Assegura't d'inicialitzar tots els atributs necessaris en el constructor.
  • Utilitzar this incorrectament: Recorda que this es refereix a l'objecte actual. Utilitza this.nom per accedir a l'atribut nom de l'objecte.

Conclusió

En aquesta secció, hem après a definir classes i crear objectes en Groovy. Hem vist com utilitzar atributs i mètodes per definir el comportament dels nostres objectes i com inicialitzar-los amb constructors personalitzats. Aquests conceptes són fonamentals per a la programació orientada a objectes i seran la base per a temes més avançats en els següents mòduls.

© Copyright 2024. Tots els drets reservats