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
- Classe: Una plantilla o model que defineix les propietats (atributs) i comportaments (mètodes) dels objectes.
- Objecte: Una instància d'una classe que conté dades i comportaments definits per la classe.
- Atributs: Variables que emmagatzemen l'estat d'un objecte.
- 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 anomenadaPersona
.String nom
: Declara un atributnom
de tipusString
.int edat
: Declara un atributedat
de tipusint
.void saludar()
: Defineix un mètodesaludar
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:
Explicació del Codi
new Persona()
: Crea una nova instància de la classePersona
.persona.nom = "Joan"
: Assigna el valor "Joan" a l'atributnom
de l'objectepersona
.persona.edat = 30
: Assigna el valor 30 a l'atributedat
de l'objectepersona
.persona.saludar()
: Crida el mètodesaludar
de l'objectepersona
.
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
iedat
) i inicialitza els atributs corresponents.this.nom = nom
: Assigna el valor del paràmetrenom
a l'atributnom
de l'objecte.this.edat = edat
: Assigna el valor del paràmetreedat
a l'atributedat
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 quethis
es refereix a l'objecte actual. Utilitzathis.nom
per accedir a l'atributnom
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.
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