En aquest tema, aprendrem sobre la programació orientada a objectes (POO) en Ruby, centrant-nos en les classes i els objectes. La POO és un paradigma de programació que utilitza "objectes" – entitats que encapsulen dades i comportaments – per dissenyar aplicacions i programes.

Què és una Classe?

Una classe és un plànol per crear objectes. Defineix un conjunt d'atributs i mètodes que els objectes creats a partir de la classe tindran.

Definició d'una Classe

class Persona
  # Atributs de la classe
  attr_accessor :nom, :edat

  # Mètode constructor
  def initialize(nom, edat)
    @nom = nom
    @edat = edat
  end

  # Mètode de la classe
  def saludar
    "Hola, el meu nom és #{@nom} i tinc #{@edat} anys."
  end
end

Explicació del Codi

  • class Persona: Defineix una nova classe anomenada Persona.
  • attr_accessor :nom, :edat: Crea els atributs nom i edat amb mètodes d'accés (getter i setter).
  • def initialize(nom, edat): Defineix el mètode constructor que s'executa quan es crea un nou objecte de la classe. Els paràmetres nom i edat s'assignen als atributs de l'objecte.
  • def saludar: Defineix un mètode que retorna una cadena de text amb un missatge de salutació.

Què és un Objecte?

Un objecte és una instància d'una classe. Quan es crea un objecte, es reserva memòria per a ell i es poden utilitzar els mètodes definits a la seva classe.

Creació d'un Objecte

persona1 = Persona.new("Joan", 30)
puts persona1.saludar

Explicació del Codi

  • persona1 = Persona.new("Joan", 30): Crea un nou objecte de la classe Persona amb el nom "Joan" i l'edat 30.
  • puts persona1.saludar: Crida el mètode saludar de l'objecte persona1 i imprimeix el missatge de salutació.

Exercicis Pràctics

Exercici 1: Crear una Classe

Crea una classe Cotxe amb els atributs marca i model, i un mètode descripcio que retorni una cadena amb la marca i el model del cotxe.

Solució

class Cotxe
  attr_accessor :marca, :model

  def initialize(marca, model)
    @marca = marca
    @model = model
  end

  def descripcio
    "Aquest cotxe és un #{@marca} #{@model}."
  end
end

cotxe1 = Cotxe.new("Toyota", "Corolla")
puts cotxe1.descripcio

Exercici 2: Afegir un Mètode

Afegeix un mètode canviar_model a la classe Cotxe que permeti canviar el model del cotxe.

Solució

class Cotxe
  attr_accessor :marca, :model

  def initialize(marca, model)
    @marca = marca
    @model = model
  end

  def descripcio
    "Aquest cotxe és un #{@marca} #{@model}."
  end

  def canviar_model(nou_model)
    @model = nou_model
  end
end

cotxe1 = Cotxe.new("Toyota", "Corolla")
puts cotxe1.descripcio
cotxe1.canviar_model("Camry")
puts cotxe1.descripcio

Errors Comuns i Consells

  • Error: NoMethodError: Aquest error es produeix quan intentes cridar un mètode que no existeix per a l'objecte. Assegura't que el mètode està definit a la classe.
  • Consell: Utilitza attr_accessor per crear mètodes d'accés als atributs de la classe de manera senzilla.

Resum

En aquesta secció, hem après sobre les classes i els objectes en Ruby. Hem vist com definir una classe, crear objectes i utilitzar mètodes per interactuar amb aquests objectes. També hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, explorarem les variables i els mètodes d'instància en més detall.

© Copyright 2024. Tots els drets reservats