Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 40 di 45
  • livello principiante
Indice lezioni

La classe Cd

La classe CD serve ad impostare le informazioni per la catalogazione dei nostri Cd
La classe CD serve ad impostare le informazioni per la catalogazione dei nostri Cd
Link copiato negli appunti

Dopo queste premesse iniziamo a scrivere qualche riga di codice. Dato che Ongaku catalogherà CD cominciamo con lo scrivere proprio la classe Cd. Nella nostra applicazione useremo il modulo come namespace, quindi racchiuderemo tutte le nostre classi in

module Ongaku
...
end

Per ogni Cd inseriremo solo le informazioni riguardanti il titolo, l'autore e l'anno di pubblicazione. Come abbiamo visto nel capitolo 8, creiamo gli attributi ai quali assegneremo i valori passati al momento della creazione di un nuovo oggetto Cd:

attr_accessor :titolo, :autore, :anno
        
def initialize(titolo, autore, anno)
    @titolo = titolo
    @autore = autore
    @anno = anno
end

Un oggetto di tipo Cd va creato quindi nel seguente modo:

cd = Cd.new ("Lepidoptera", "Fursaxa", 2006)

Poiché tra le funzionalità c'è anche la visualizzazione della nostra lista, che sarà un array ordinato di oggetti Cd, dobbiamo creare il metodo to_s che viene chiamato automaticamente da puts e il metodo <=> per permettere l'ordinamento dell'array. Il metodo per la stampa degli oggetti Cd è banalmente:

def to_s
    "  #{self.autore} - #{self.titolo} (#{self.anno})"
end

Non facciamo altro che produrre una stringa contenente i campi del Cd con un minimo di formattazione. In questo modo un semplice

puts cd

produrrà l'output

  Fursaxa - Lepidoptera (2006)

Per quel che riguarda l'ordinamento dobbiamo solo includere il modulo Comparable (capitolo 11) e scrivere il metodo <=>. In pratica Comparable ci evita di scrivere tutti i metodi di comparazione basando il proprio funzionamento solo sull'operatore <=>. Avremo quindi:

include Comparable

def <=>(altro)
    self.autore <=> altro.autore
end

In conclusione avremo, nel file cd.rb, la classe Cd:

module Ongaku
    class Cd
        include Comparable
        attr_accessor :titolo, :autore, :anno
        
        def initialize(titolo, autore, anno)
            @titolo = titolo.capitalize
            @autore = autore.capitalize
            @anno = anno
        end
        
        def to_s
            "  #{self.autore} - #{self.titolo} (#{self.anno})"
        end
        
        def <=>(altro)
            self.autore <=> altro.autore
        end
    end
end

Ti consigliamo anche