Come detto prima, dato che in questa prima parte della guida non abbiamo trattato nessuna GUI, implementeremo solo l'interfaccia testuale. La nostra classe si occuperà di mostrare a video un menù dei comandi minimale e quindi in base al comando ricevuto raccogliere, o mostrare, i dati necessari. La classe che implementa tutto questo è Ongaku::Text nel file ongaku/ui/text.rb. Nel metodo Ui.main le interfacce vengono eseguite con l'istruzione avvia che in questo caso sarà una cosa del genere:
def avvia
stampa_menu
comando = gets.chomp
case comando
when 'a'
aggiungi
when 'e'
elimina
when 'l'
elenca
when 'q'
Ongaku::Ui.salva_cd
puts "Grazie per aver utilizzato #{NOME}!"
exit
else
puts "Comando inesistente: #{comando}"
end
avvia
end
Innanzitutto viene stampato il menu e poi viene catturato il comando digitato dall'utente, ed in base a quest'ultimo viene eseguito il metodo associato. Il metodo stampa_menu non fa altro che stampare a video delle stringhe che mostrano quali comandi sono possibili:
def stampa_menu
puts SEPARATORE
puts "Ongaku menu:"
puts " (a) aggiungi CD (e) elimina CD "
puts " (l) visualizza lista (q) esci da #{NOME}"
print "scegli: "
end
dove SEPARATORE è una stringa costante che vale 45 caratteri '='. Il metodo aggiungi invece colleziona i dati necessari alla creazione di un nuovo oggetto Cd e poi chiama Ongaku::Ui.aggiungi_cd:
def aggiungi
puts SEPARATORE
puts "Aggiungi CD"
print " Titolo: "
tit = gets.chomp
print " Autore: "
aut = gets.chomp
print " Anno di pubblicazione: "
anno = gets.chomp
Ongaku::Ui.aggiungi_cd(tit, aut, anno)
end
Per rimuovere un cd visualizziamo la lista completa e poi chiediamo all'utente di digitare l'indice del cd da eliminare. Tale valore è passato poi a Ongaku::Ui.elimina_cd:
def elimina
elenca
print "Scegli il CD da eliminare: "
index = gets.chomp
Ongaku::Ui.elimina_cd(index.to_i - 1)
end
Dove elenca è il metodo utilizzato per visualizzare la lista completa, non facciamo altro che stampare tutti gli elementi dell'array preceduti dal numero d'ordine:
def elenca
puts SEPARATORE
puts "Elenco dei Cd in archivio"
$archivio.each_index {|i| puts "#{(i + 1).to_s.rjust(4)}: #{$archivio[i]}"}
end
Infine quando si sceglie di chiudere l'applicazione con il comando q viene scritto l'array sul file con il metodo Ongaku::Ui.salva_cd e viene stampato un messaggio d'uscita.
Ongaku::Ui.salva_cd
puts "Ora la lista contiene #{$archivio.size} CD"
puts "Grazie per aver utilizzato #{NOME}!"
exit
Per quel che riguarda le altre due interfacce, per ora, gli facciamo solo stampare un messaggio d'errore qualora siano invocate.
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: