En aquest tema, explorarem les variables i mètodes d'instància en Ruby. Aquestes són parts fonamentals de la programació orientada a objectes (OOP) i són essencials per crear classes i objectes que encapsulin dades i comportaments.

Què són les Variables d'Instància?

Les variables d'instància són variables que pertanyen a una instància específica d'una classe. Cada objecte (instància) de la classe té el seu propi conjunt de variables d'instància. Aquestes variables es defineixen dins dels mètodes de la classe i comencen amb un símbol @.

Exemple de Variables d'Instància

class Persona
  def initialize(nom, edat)
    @nom = nom
    @edat = edat
  end

  def mostrar_informacio
    puts "Nom: #{@nom}, Edat: #{@edat}"
  end
end

persona1 = Persona.new("Joan", 30)
persona2 = Persona.new("Anna", 25)

persona1.mostrar_informacio  # Sortida: Nom: Joan, Edat: 30
persona2.mostrar_informacio  # Sortida: Nom: Anna, Edat: 25

Explicació

  • @nom i @edat: Són variables d'instància. Cada instància de la classe Persona tindrà les seves pròpies versions d'aquestes variables.
  • initialize: És un mètode especial que s'executa quan es crea una nova instància de la classe. Assigna valors a les variables d'instància.
  • mostrar_informacio: És un mètode d'instància que accedeix a les variables d'instància i mostra la informació de l'objecte.

Què són els Mètodes d'Instància?

Els mètodes d'instància són mètodes que es defineixen dins d'una classe i poden ser cridats en instàncies d'aquesta classe. Aquests mètodes poden accedir i modificar les variables d'instància de l'objecte.

Exemple de Mètodes d'Instància

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

  def mostrar_detalls
    puts "Marca: #{@marca}, Model: #{@model}"
  end

  def canviar_model(nou_model)
    @model = nou_model
  end
end

cotxe1 = Cotxe.new("Toyota", "Corolla")
cotxe1.mostrar_detalls  # Sortida: Marca: Toyota, Model: Corolla

cotxe1.canviar_model("Camry")
cotxe1.mostrar_detalls  # Sortida: Marca: Toyota, Model: Camry

Explicació

  • mostrar_detalls: És un mètode d'instància que mostra els detalls del cotxe.
  • canviar_model: És un mètode d'instància que permet canviar el model del cotxe.

Exercicis Pràctics

Exercici 1: Crear una Classe Llibre

Crea una classe Llibre amb les següents característiques:

  • Variables d'instància: titol, autor, pagines.
  • Mètodes d'instància: mostrar_detalls, canviar_pagines.
class Llibre
  def initialize(titol, autor, pagines)
    @titol = titol
    @autor = autor
    @pagines = pagines
  end

  def mostrar_detalls
    puts "Títol: #{@titol}, Autor: #{@autor}, Pàgines: #{@pagines}"
  end

  def canviar_pagines(noves_pagines)
    @pagines = noves_pagines
  end
end

# Crear una instància de Llibre
llibre1 = Llibre.new("El Quixot", "Miguel de Cervantes", 500)
llibre1.mostrar_detalls  # Sortida: Títol: El Quixot, Autor: Miguel de Cervantes, Pàgines: 500

# Canviar el nombre de pàgines
llibre1.canviar_pagines(600)
llibre1.mostrar_detalls  # Sortida: Títol: El Quixot, Autor: Miguel de Cervantes, Pàgines: 600

Exercici 2: Crear una Classe CompteBancari

Crea una classe CompteBancari amb les següents característiques:

  • Variables d'instància: titular, saldo.
  • Mètodes d'instància: mostrar_saldo, depositar, retirar.
class CompteBancari
  def initialize(titular, saldo)
    @titular = titular
    @saldo = saldo
  end

  def mostrar_saldo
    puts "Titular: #{@titular}, Saldo: #{@saldo}€"
  end

  def depositar(import)
    @saldo += import
  end

  def retirar(import)
    if import <= @saldo
      @saldo -= import
    else
      puts "Saldo insuficient"
    end
  end
end

# Crear una instància de CompteBancari
compte1 = CompteBancari.new("Maria", 1000)
compte1.mostrar_saldo  # Sortida: Titular: Maria, Saldo: 1000€

# Depositar diners
compte1.depositar(500)
compte1.mostrar_saldo  # Sortida: Titular: Maria, Saldo: 1500€

# Retirar diners
compte1.retirar(200)
compte1.mostrar_saldo  # Sortida: Titular: Maria, Saldo: 1300€

# Intentar retirar més diners dels que hi ha al saldo
compte1.retirar(2000)  # Sortida: Saldo insuficient

Resum

En aquesta secció, hem après sobre les variables i mètodes d'instància en Ruby. Les variables d'instància permeten emmagatzemar dades específiques per a cada objecte, mentre que els mètodes d'instància permeten interactuar amb aquestes dades. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. En el següent tema, explorarem les variables i mètodes de classe, que són compartits per totes les instàncies d'una classe.

© Copyright 2024. Tots els drets reservats