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
endExplicació del Codi
class Persona: Defineix una nova classe anomenadaPersona.attr_accessor :nom, :edat: Crea els atributsnomiedatamb 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àmetresnomiedats'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
Explicació del Codi
persona1 = Persona.new("Joan", 30): Crea un nou objecte de la classePersonaamb el nom "Joan" i l'edat 30.puts persona1.saludar: Crida el mètodesaludarde l'objectepersona1i 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.descripcioExercici 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.descripcioErrors 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_accessorper 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.
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
