Classi
Il mondo reale è pieno di oggetti che possiamo classificare. Ad esempio, un bambino molto piccolo probabilmente dice "bau bau" quando vede un cane, incurante della razza; noi naturalmente vediamo il mondo in termini di queste categorie.
Nella terminologia della programmazione OO, una categoria di oggetti come il "cane" è chiamata classe, ed alcuni specifici oggetti appartenenti ad una classe sono chiamati istanze di quella classe.
Generalmente, per creare un oggetto in ruby o in qualsiasi
altro linguaggio OO, bisogna prima definire le
caratteristiche della classe, e quindi creare una
instanza. Per illustrare il processo, lasciatemi prima
definire una semplice classe Cane.
ruby> class Cane
| def abbaia
| print "Bau Bau"
| end
| end
nil
In ruby, la definizione di una classe è una regione di
codice tra le parole chiave class e
end. La parola chiave def
all'interno di questa regione inizia la definizione di un
metodo della classe, che come abbiamo detto nel
capitolo precedente, corrisponde a qualche specifico
comportemento di un oggetto di quella classe.
Ora che abbiamo definito una classe Cane,
possiamo usarla per fare un cane:
ruby> fido = Cane.new #<Cane:0xbcb90>
Abbiamo creato una nuova istanza della classe
Cane, e l'abbiamo chiamata
fido. Il metodo new di ogni
classe crea una nuova istanza. Poiché
fido è un Cane in accordo
alla definizione della nostra classe, ha le proprietà
che noi decidiamo debba avere un Cane.
Poiché la nostra idea di Cane è
molto semplice, c'è solo una cosa che possiamo
chiedere a fido di fare.
ruby> fido.abbaia Bau Bau nil
Creare una nuova istanza di una classe è talvolta detto istanziare quella classe. Dobbiamo avere un cane prima di avere il piacere della sua conversazione; non possiamo semplicemente chiedere alla classe Cane di abbaiare per noi.
ruby> Cane.abbaia ERR: (eval):1: undefined method `abbaia' for Cane:class
Non ha più senso che cercare di mangiare il concetto di sandwich.
D'altra parte, se vogliamo ascoltare il suono di un cane senza avere legami affettivi, possiamo creare (istanziare) un cane effimero e temporaneo, e ottenere un piccolo rumore da esso prima che sparisca.
ruby> (Cane.new).abbaia # o più comunemente, Cane.new.abbaia Bau Bau nil
"Aspetta," starete dicendo, "cos'è
questa storia di questo poveretto che scompare subito
dopo?" E' vero: se non ci prendiamo il fastidio di
dargli un nome (come abbiamo fatto per fido),
l'automatic garbage collection di ruby decide che
è un cane abbandonato, e spietatamente se ne
disfà. In realtà questo è giusto
perché non possiamo avere tutti i cani che vogliamo.
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!