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 anomenadaPersona
.attr_accessor :nom, :edat
: Crea els atributsnom
iedat
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àmetresnom
iedat
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
Explicació del Codi
persona1 = Persona.new("Joan", 30)
: Crea un nou objecte de la classePersona
amb el nom "Joan" i l'edat 30.puts persona1.saludar
: Crida el mètodesaludar
de l'objectepersona1
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.
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