Introducción

En este módulo, exploraremos los conceptos fundamentales de la Programación Orientada a Objetos (POO) en Groovy. Aprenderemos cómo definir clases y crear objetos, así como los principios básicos que rigen la POO.

Conceptos Clave

  1. Clase: Una plantilla o blueprint que define las propiedades y comportamientos (métodos) de los objetos.
  2. Objeto: Una instancia de una clase. Representa una entidad con estado y comportamiento.
  3. Atributos: Variables que representan el estado de un objeto.
  4. Métodos: Funciones que definen el comportamiento de un objeto.

Definición de Clases

En Groovy, una clase se define utilizando la palabra clave class. Aquí hay un ejemplo básico:

class Persona {
    String nombre
    int edad

    void mostrarInfo() {
        println "Nombre: $nombre, Edad: $edad"
    }
}

Explicación del Código

  • class Persona: Define una nueva clase llamada Persona.
  • String nombre: Declara un atributo nombre de tipo String.
  • int edad: Declara un atributo edad de tipo int.
  • void mostrarInfo(): Declara un método mostrarInfo que imprime la información de la persona.

Creación de Objetos

Para crear un objeto de una clase, utilizamos la palabra clave new seguida del nombre de la clase:

def persona1 = new Persona()
persona1.nombre = "Juan"
persona1.edad = 30
persona1.mostrarInfo()

Explicación del Código

  • def persona1 = new Persona(): Crea una nueva instancia de la clase Persona y la asigna a la variable persona1.
  • persona1.nombre = "Juan": Asigna el valor "Juan" al atributo nombre del objeto persona1.
  • persona1.edad = 30: Asigna el valor 30 al atributo edad del objeto persona1.
  • persona1.mostrarInfo(): Llama al método mostrarInfo del objeto persona1, que imprime la información de la persona.

Constructores

Un constructor es un método especial que se llama cuando se crea un objeto. En Groovy, podemos definir constructores personalizados:

class Persona {
    String nombre
    int edad

    Persona(String nombre, int edad) {
        this.nombre = nombre
        this.edad = edad
    }

    void mostrarInfo() {
        println "Nombre: $nombre, Edad: $edad"
    }
}

def persona2 = new Persona("Ana", 25)
persona2.mostrarInfo()

Explicación del Código

  • Persona(String nombre, int edad): Define un constructor que toma dos parámetros, nombre y edad.
  • this.nombre = nombre: Asigna el valor del parámetro nombre al atributo nombre del objeto.
  • this.edad = edad: Asigna el valor del parámetro edad al atributo edad del objeto.
  • def persona2 = new Persona("Ana", 25): Crea una nueva instancia de Persona utilizando el constructor personalizado.

Ejercicio Práctico

Ejercicio 1

Define una clase Coche con los siguientes atributos y métodos:

  • Atributos:
    • marca (String)
    • modelo (String)
    • año (int)
  • Métodos:
    • mostrarInfo(): Imprime la información del coche.

Crea un objeto de la clase Coche y llama al método mostrarInfo.

Solución

class Coche {
    String marca
    String modelo
    int año

    void mostrarInfo() {
        println "Marca: $marca, Modelo: $modelo, Año: $año"
    }
}

def coche1 = new Coche()
coche1.marca = "Toyota"
coche1.modelo = "Corolla"
coche1.año = 2020
coche1.mostrarInfo()

Ejercicio 2

Modifica la clase Coche para incluir un constructor que inicialice los atributos marca, modelo y año. Luego, crea un objeto utilizando este constructor y llama al método mostrarInfo.

Solución

class Coche {
    String marca
    String modelo
    int año

    Coche(String marca, String modelo, int año) {
        this.marca = marca
        this.modelo = modelo
        this.año = año
    }

    void mostrarInfo() {
        println "Marca: $marca, Modelo: $modelo, Año: $año"
    }
}

def coche2 = new Coche("Honda", "Civic", 2018)
coche2.mostrarInfo()

Conclusión

En esta sección, hemos aprendido los conceptos básicos de clases y objetos en Groovy. Hemos visto cómo definir clases, crear objetos y utilizar constructores para inicializar los atributos de un objeto. Estos fundamentos son esenciales para avanzar en la Programación Orientada a Objetos y nos preparan para temas más avanzados como la herencia y el polimorfismo.

En el próximo tema, exploraremos la herencia en Groovy, que nos permitirá crear nuevas clases basadas en clases existentes, promoviendo la reutilización del código y la organización jerárquica.

© Copyright 2024. Todos los derechos reservados