En aquest tema, explorarem les variables i mètodes de classe en Ruby. Aquestes són eines poderoses que ens permeten definir comportaments i dades que són compartits per totes les instàncies d'una classe. A diferència de les variables i mètodes d'instància, que són específics per a cada objecte, les variables i mètodes de classe són comuns a tota la classe.
Variables de Classe
Què són les Variables de Classe?
Les variables de classe són variables que són compartides per totes les instàncies d'una classe. Es defineixen amb @@ davant del nom de la variable.
Exemple de Variables de Classe
class Vehicle
@@number_of_vehicles = 0
def initialize
@@number_of_vehicles += 1
end
def self.total_vehicles
@@number_of_vehicles
end
end
car = Vehicle.new
bike = Vehicle.new
puts Vehicle.total_vehicles # Sortida: 2Explicació del Codi
- Definició de la Variable de Classe:
@@number_of_vehiclesés una variable de classe que es defineix dins de la classeVehicle. - Increment de la Variable de Classe: Cada vegada que es crea una nova instància de
Vehicle, el mètodeinitializeincrementa@@number_of_vehiclesen 1. - Mètode de Classe:
self.total_vehiclesés un mètode de classe que retorna el valor de@@number_of_vehicles.
Mètodes de Classe
Què són els Mètodes de Classe?
Els mètodes de classe són mètodes que es defineixen a nivell de classe i no a nivell d'instància. Es defineixen utilitzant self abans del nom del mètode.
Exemple de Mètodes de Classe
class Calculator
def self.add(a, b)
a + b
end
def self.subtract(a, b)
a - b
end
end
puts Calculator.add(5, 3) # Sortida: 8
puts Calculator.subtract(5, 3) # Sortida: 2Explicació del Codi
- Definició de Mètodes de Classe:
self.addiself.subtractsón mètodes de classe definits dins de la classeCalculator. - Crida als Mètodes de Classe: Els mètodes de classe es criden utilitzant el nom de la classe seguit d'un punt i el nom del mètode (
Calculator.add).
Comparació entre Variables i Mètodes d'Instància i de Classe
| Aspecte | Variables d'Instància | Variables de Classe | Mètodes d'Instància | Mètodes de Classe |
|---|---|---|---|---|
| Definició | @variable |
@@variable |
def method |
def self.method |
| Àmbit | Específic per a cada instància | Compartit per totes les instàncies | Específic per a cada instància | Compartit per totes les instàncies |
| Accés | Només dins de la instància | Dins de la classe i les instàncies | Només dins de la instància | Només dins de la classe |
| Exemple de Definició | @name = "Car" |
@@count = 0 |
def drive |
def self.total |
Exercicis Pràctics
Exercici 1: Comptador d'Instàncies
Crea una classe Book que tingui una variable de classe @@count que compti el nombre d'instàncies creades. Afegeix un mètode de classe self.total_books que retorni aquest comptador.
class Book
@@count = 0
def initialize
@@count += 1
end
def self.total_books
@@count
end
end
# Prova el teu codi
book1 = Book.new
book2 = Book.new
book3 = Book.new
puts Book.total_books # Sortida esperada: 3Exercici 2: Mètodes de Classe per a Operacions Matemàtiques
Crea una classe MathOperations amb mètodes de classe per sumar, restar, multiplicar i dividir dos nombres.
class MathOperations
def self.add(a, b)
a + b
end
def self.subtract(a, b)
a - b
end
def self.multiply(a, b)
a * b
end
def self.divide(a, b)
return "No es pot dividir per zero" if b == 0
a / b
end
end
# Prova el teu codi
puts MathOperations.add(10, 5) # Sortida esperada: 15
puts MathOperations.subtract(10, 5) # Sortida esperada: 5
puts MathOperations.multiply(10, 5) # Sortida esperada: 50
puts MathOperations.divide(10, 5) # Sortida esperada: 2
puts MathOperations.divide(10, 0) # Sortida esperada: No es pot dividir per zeroResum
En aquesta secció, hem après sobre les variables i mètodes de classe en Ruby. Les variables de classe són compartides per totes les instàncies d'una classe, mentre que els mètodes de classe són mètodes que es defineixen a nivell de classe. Hem vist exemples pràctics i hem realitzat exercicis per reforçar aquests conceptes. Ara estem preparats per avançar cap a temes més avançats en la programació orientada a objectes en Ruby.
Curs de Programació en Ruby
Mòdul 1: Introducció a Ruby
Mòdul 2: Conceptes Bàsics de Ruby
Mòdul 3: Treballant amb Col·leccions
Mòdul 4: Programació Orientada a Objectes en Ruby
- Classes i Objectes
- Variables i Mètodes d'Instància
- Variables i Mètodes de Classe
- Herència
- Mòduls i Mixins
Mòdul 5: Conceptes Avançats de Ruby
- Blocs, Procs i Lambdas
- Metaprogramació
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Expressions Regulars
Mòdul 6: Introducció a Ruby on Rails
- Què és Ruby on Rails?
- Configuració de l'Entorn Rails
- Creació d'una Aplicació Simple en Rails
- Arquitectura MVC
- Rutes
Mòdul 7: Proves en Ruby
- Introducció a les Proves
- Proves Unitàries amb Minitest
- Desenvolupament Basat en Comportament amb RSpec
- Mocking i Stubbing
Mòdul 8: Millors Pràctiques en Ruby
- Estil de Codi i Convencions
- Refactorització
- Optimització del Rendiment
- Millors Pràctiques de Seguretat
