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

L'interfaccia testuale

Programmazione dell'interfaccia testuale vera e propria del programma
Programmazione dell'interfaccia testuale vera e propria del programma
Link copiato negli appunti

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.


Ti consigliamo anche