Definint una Ruby Class
Un objecte és una peça autocontinguda, amb funcionalitat, que pot ser fàcilment usada i reusada per a construir blocs d’una aplicació de software.
Els objectes consisteixen en dades, variables i funcions (anomenats mètodes), els quals es oden accedir i ser cridats sobre objectes mitjançant tasques.
Tot en Ruby és un objecte, nombres, arrays, strings, etc.
Les classes en Ruby es defineixen mitjançant la paraula class
i cal finalitzar amb la paraula end
, així:
class BankAccount
def inicialice ()
end
def test_methode
puts "The class is working"
end
end
Hen definit la classe BankAccount
, amb el mètode test_method
amb un simple string.
La inicialització del mètode ()
crida l’objecte basat en aquesta classe, inicialitzant-lo. Es pot inicialitzar el mètode passant arguments a la classe iniciada.
Crearem un objecte des d’una classe.
Com que ja tenim creada la classe BankAccount
, simplement creem la instància:
account = BankAccount.new()
Aquest crea un objecte BankAccount
anomenat account
. Creat l’objecte podem cridar el nostre mètode:
account.test_method
The class is working
Variables d’Instància i Accés a Mètodes
Les variables d’instància sóns variables definides sols per cada instància de la classe. Les variables d’instància poden der definides dins o fora dels mètodes de classe.
Per fer variables disponibles des de fora de la classe, han de ser definides mitjançat mètodes accessibles.
Així definirem les variables mitjançant una @
, així esterem definint que són variables associades a mètodes.
class BankAccount
def accountNumber
@accountNumber = "12345"
end
def accountName
@accountName = "John Smith"
end
def inicialize ()
end
def test_method
puts "The class is working"
puts accountNumber
end
end
Ara tenim dues instàncies anomenades @accountNumber
i @accountName
amb mètodes d’accés associats. Així que, ara podrem accedir a aquestes variables des de fora:
account = BanckAccount.new()
puts account.accontNumber
puts account.accountName
Els dos estaments de dalt ens retornaran les dues variables pels mètods d’accés, en aquest cas: 12345
i John Smith
respectivament.
Ara podem aconseguir el valor de la variable d’instància, nosaltres, ara necessitem retornar als mètodes d’accés de manera que configurem el valor de la variable d’instància. Una maera de fer-ho és configurar els mètodes. Netejarem la classe BankAccount
, així que establirem les dues variables d’instància així:
class BankAccount
def accountNumber
@accountNumber
end
def accountNumber = (value)
@accountNumber = value
end
def accountName
@accountName
end
def
@accountName = (value)
@accountName = value
end
end
Podem crear ara una instància de la nostra classe, configurar el nom de compte i usar l’accés a ells:
account = BanckAccount.new()
account.accountNumber = "54321"
account.accountName = "Fred Flintstone"
puts account.accountNumber
puts account.accountName
Variables de Classe Ruby
Una variable de classe compartida entre totes les instàncies de classe. En altres paraules, hi ha una instància de variables i accessos mitjançant instàncies d’objectes. Una variable d’instància ha de ser inicialitzada mitjançant una definició. Les variables de classe són prefixades amb dos caracters @
, es a dir, @@
.
Mostrarem com afegir la variable de classe @@interest_rate
:
class BankAccount
def interest_rate
@@interest_rate = 0.2
end
def accountNumber
@accountNumber
end
def accountNumber = (value)
@accountNumber = value
end
def accountName
@accountName
end
def accountName = (value)
@accountNme = value
end
end
Instancies de mètodes
Tot i que hem estudiat breuent els mètodes d’instància, fins ara ens hem centrat en l’emmagatzematge de dades d’una classe.
Els mètodes d’instància són mètodes que es poden cridar a una instància de la classe. Els mètodes d’instància poden accedir a variables de classe per a realitzar tasques i també poden acceptar valors com a arguments. Per exempe, poden afegir un mètode a la nostra classe que pren un saldo de compte nou com a argument i utilitzar la variable de classe @@interest_rate
per calcular l’interés degut.
def calc_interest ( balance )
puts balance * interest_rate
end
Ara, és quan creem una instància de la nostra classe, nosaltres podem cridar al nou mètode:
account = BankAccount
acoount.calc_interest( 1000 )
700.0
Herència de les classes de Ruby
Ruby suporta herència simple. Això significa que una subclasse pot ser creada heretant totes les variables i mètodes d’altra classe. La subclasse és llavors una extensió per afegir un nou mètode o variable no disponible en la superclasse.
Una classe heredada d’altra usa el caracter <
. Diu, per exemple, que nosaltres volem un nou tipus de classe BankAccount
. Aquesta classe necessita tots les mateixes variables i mètoes que la nostra classe original, però també necessita el nombre de telèfon del client. Per fer-ho, simplement heretem de BankAccount
i afegim una nova variable d’instància:
class NewBankAccount < BankAccount
def customerPhone
@customerPhone
end
def customerPhone=( value )
@customerPhone = value
end
end
Ara tenim una nova classe, derivada de BankAccount
. Aquesta nova subclasse inclou tot el que tenia la superclasse, a més d’una nova propietat: el nombre de telèfon del client.
account.accountNumber = "54321"
account.customerPhone = "555-123-5433"
54321
555-123-5433
Tinguem en compte que l’exemple anterior assumeix que la declaració de la classe BankAccount
es troba al mateix fitxer front Ruby que la declaració NewBankAccount
.
Si aquest no és el cas, s’ha utilitzat la declaració de requeriment per indicar a Ruby quin fitxer cal incloure per trobar la classe BankAccount
.
Si suposem que BankAccount
està defint en un fitxer anomenat BankAccount.rb
, inclouriem el fitxer de la següent manera:
require 'BankAccount'
class NewBankAccount < BankAccount
def customerPhone
@customerPhone
end
def customerPhone=( value )
@customerPhone = value
end
end
Font: https://www.techotopia.com/index.php/Ruby_Object_Oriented_Programming